Slide 1

Slide 1 text

Data Version Control による 実験管理の実務での適⽤事例 MLOps 勉強会(2021.02.18)

Slide 2

Slide 2 text

Data Strategy and Operation Center ⾃⼰紹介 • 2017年 3⽉ ⻑岡技術科学⼤学⼤学院 修了 • 2017年 4⽉ Sansan株式会社 ⼊社 • 現在 ⾃然⾔語処理とスマブラ担当 ⾼橋 寛治 Kanji Takahashi kanji250tr kanjirz50 Sansan 株式会社 DSOC(Data Strategy & Operation Center) 研究開発部 Data Analysis Group 研究員 オンライン名刺 ディーソック

Slide 3

Slide 3 text

Data Strategy and Operation Center Contents • MLOps と本発表で取り扱う範囲 • Data Version Control の簡単な紹介 • Data Version Control による実験管理の実務での適⽤事例 • まとめ

Slide 4

Slide 4 text

Data Strategy and Operation Center MLOps とは 3 いい感じに運⽤するとは? • サービスが安定稼働する • 学習のパイプラインがある • ⼊⼒や出⼒が監視される Machine Learning(機械学習)+ Operations(運⽤) 機械学習システムをいい感じに運⽤する ビジネス要件を満たす • サービスがいつでも利⽤可能である • 他のメンバーも改善に⼊れる • 運⽤時の振る舞いの異常に気づける …

Slide 5

Slide 5 text

Data Strategy and Operation Center MLOps とは 4 ML以前にそもそもソフトウェア開発は難しい • DevOps(開発と運⽤)として整備される MLOps は DevOps を ML 向けに改変したようなもの ⽂献「Machine Learning: The High-Interest Credit Card of Technical Debt」 • 機械学習において技術的負債になる要素を紹介 > コードの依存関係よりデータの依存関係は⼿間がかかる > グルーコードやパイプラインを始めとしたスパゲッティなシステム

Slide 6

Slide 6 text

Data Strategy and Operation Center MLOps のよく⾒る図 5 • 機械学習システムの提供において ML Code は⼀部 • ML Code ⾃体の実験管理も⼤変 ※図は⽂献「Hidden Technical Debt in Machine Learning Systems」より引⽤

Slide 7

Slide 7 text

Data Strategy and Operation Center 本発表の範囲 6 データの準備・前処理・評価をData Version Control により⾏う • 検証と本番でできるだけ同じコード、同じフローを使う ※図は⽂献「Hidden Technical Debt in Machine Learning Systems」より引⽤

Slide 8

Slide 8 text

Data Version Control とは

Slide 9

Slide 9 text

Data Strategy and Operation Center Data Version Control(DVC) 8 概要 • 機械学習プロジェクトのためのバージョン管理ツール できること • バージョン管理におけるコミットとして、データや実験をDVCがメタファイル化 • 実体は DVC が管理 ※図はDVCの公式ドキュメントより引⽤ Data は AWS S3など柔軟に 置ける

Slide 10

Slide 10 text

Data Strategy and Operation Center DVC によるデータのバージョン管理 9 操作 • dvc コマンドを通じて⾏う > dvc add train.csv > dvc repro メタファイル • dvc.yaml:パイプラインが yaml で定義される • .dvc:yaml で定義されたデータのメタファイル • .dvc/:配下にキャッシュや設定ファイルが格納される

Slide 11

Slide 11 text

Data Strategy and Operation Center 詳しくは 10 公式リファレンスが充実しています! • Data Versioning:DVC と Git によるデータのバージョン管理⽅法 • Data Access:DVC によるデータの取得⽅法 • Data Pipelines:DVC によるパイプライン(yaml) • Experiments:パイプラインを使った実験管理 導⼊は pip install dvc するだけなので、ぜひ使ってみてください

Slide 12

Slide 12 text

Data Version Control による 実験管理の実務での適⽤事例 ML に置き換える前提で作っているサービスでの実験管理

Slide 13

Slide 13 text

Data Strategy and Operation Center Data Version Control 導⼊以前の状況と課題 状況 • あるサービスのために複数のルールベース抽出器が稼働する • 徐々に機械学習に置き換えていく段階 • メンバーは本番稼働するコードを書く • メンバーが少しずつ増えていく 課題 • データの収集、前処理、評価の⽅法が⾃動化されていない(属⼈化) • 検証とサービス稼働でデータの取得⽅法が異なる • 実験の記録が⾯倒で記⼊漏れが発⽣しうる (現在稼働中のサービスの評価結果を即答できないことがある)

Slide 14

Slide 14 text

Data Strategy and Operation Center DVC でやりたいことを図⽰ 13 リリースタグが打たれているコミットを⾒れば • 実験が再現できる • 本番稼働中エンジンの性能がわかる Workspace data pipeline code metric 2021.01.10

Slide 15

Slide 15 text

Data Strategy and Operation Center DVC を使う上でのディレクトリ構成 * 14 Service • Dockerfile:本番稼働⽤のコンテナ • worker.py:本番稼働時のワーカ • src/extractor:抽出器パッケージ • setup.py:抽出器のsetup.py • experiment:実験管理ディレクトリ > dvc.yaml:パイプラインの定義 > dvc.lock:メタデータ > src:実験⽤コード > metrics:評価結果 狙い • 単⼀レポジトリで、実験の再現から テスト、本番稼働までできる • pip でインストールされたパッケー ジを使うことで、実験と本番でコー ドの相違が⽣まれにくいようにする *簡略化してます

Slide 16

Slide 16 text

Data Strategy and Operation Center yaml で記述する複数の抽出器のフロー 15 • 評価は抽出器ごとに⾏うが、評価⽅法はそれぞれ異なる • 前処理1までは共通だが時間を要するので実⾏は⼀度だけ 前処理1 ⼊⼒ データ 抽出器1 抽出器2 抽出器3 評価尺度A 評価尺度B 評価尺度A 評価尺度B 前処理2 サービスとして稼働する箇所 記録したい 検証とサービスで 同じように アクセスしたい 取得を ⾃動化したい

Slide 17

Slide 17 text

Data Strategy and Operation Center dvc.yaml のイメージ * 16 データの取得と評価をそれぞれステージとして定義 stages: prepare: cmd: python src/prepare.py config/eval_indices.csv deps: - src/prepare.py - config/eval_indices.csv outs: - prepared_data evaluate_extractor1_metrics1 cmd: python src/eval_metrics1.py data/prepared config/eval_indices.csv extraction1 metrics: *簡略化してます データはDBから取得 評価項⽬ごとに定義

Slide 18

Slide 18 text

Data Strategy and Operation Center 実験の再現と記録 17 再現は容易になった • git clone でレポジトリを取得 • 環境変数に DB の設定を記述 • dvc repro でデータの取得から評価まで⾏う 抽出器や前処理に変更があったら記録 • dvc repro でデータの取得から評価まで⾏う • 更新されたファイルを Git で記録 所定の⼿順で実験し記録すれば、リリース時のコミットログを⾒ることで どのような実験・評価結果だったかわかる

Slide 19

Slide 19 text

Data Strategy and Operation Center DVCにうまく乗っかり本番との差異を無くすための⼯夫 18 ファイル⼊出⼒の基底クラスを作り、実験⽤のグルーコードを減らす • 実験と本番で同じインターフェイスでファイルを取得する > 例えば、S3Directory クラスと LocalDirectory クラスがあり、どちらも get_data で 同じ形式のデータが取得できる(取得元は異なる) • 抽出器のインターフェイスを揃える > 前処理済みデータを引数に取り、同名メソッドで抽出する > 抽出器への⼊出⼒はデータクラスで定義 インターフェイスを揃えることで、本番⽤・検証⽤の⼀時的なつなぎ込み コードを作らなくてよくなり、コードの差異が⽣まれにくい

Slide 20

Slide 20 text

Data Strategy and Operation Center ここまでやってみて実際どうだったのか 19 複雑なのにデータの収集、前処理、評価の⽅法が⾃動化されていない(属⼈化) → DVC によりデータの収集から評価まで⾃動化できた → 新しいメンバーが⼊ってきた際に、すぐに実験や改善に取り組めた → 共通のデータで実験できる 実験の記録が不明瞭で、現在稼働しているサービスの性能を即答できない場合がある → 今動いているコードの Github のタグ時点のコミットのファイルを⾒ればわかる 機械学習ではなくルールだが、検証とサービス稼働でデータの取得⽅法が異なる → データ⼊出⼒に関してインターフェイスを定義することで、使う側からは同じに⾒える 学習コストは⼩さいと思う → 他メンバーがガンガン追記できた

Slide 21

Slide 21 text

Data Strategy and Operation Center 改めて DVC は「コミットの概念」が⼤事だと思う 20 • DVC の「コミットの概念」をメンバーが把握することで、ツールが持つ⽣ 産性を引き出すことができると思う • コミットの概念 • バージョン管理においては、コードの変更を記録すること • DVC においては、データを含む実験⼀式の変更を Git で記録すること > データは DVC がメタデータ化 > ⼿順は DVC が yaml として定義 > 評価結果は DVC が記録 ※図はDVCの公式ドキュメントより引⽤

Slide 22

Slide 22 text

Data Strategy and Operation Center 今後 DVC を機械学習で使っていく上で考えていること 21 パイプラインは引き続き DVC に任せる • 実験が再現できることは魅⼒ パラメータ探索はおそらく別ツールを使う • ⾒つかったパラメータを DVC で記録する? > 途中のステップまで DVC で実⾏ > パラメータ探索を再現したいか? • DVC の機能として新旧のパラメータとスコアを⽐較できるが、 使いどころがわからない

Slide 23

Slide 23 text

Data Strategy and Operation Center まとめ • MLOps についての簡単な説明 • Data Version Control の管理の概念の紹介 • Data Version Control による実験管理の実務での適⽤事例について紹介 • 再現実験が容易 • 検証と本番稼働で同じコードが使える(DVCでコードとセットで データが管理できる)ようにインターフェイスを⼯夫 • 本番で動いているコードの評価結果がわかる

Slide 24

Slide 24 text

Data Strategy and Operation Center 参考⽂献 • D. Sculley, et al. "Machine Learning: The High Interest Credit Card of Technical Debt." . In SE4ML: Software Engineering for Machine Learning (NIPS 2014 Workshop).2014. • D. Sculley, et al. "Hidden Technical Debt in Machine Learning Systems." . In Proceedings of the 28th International Conference on Neural Information Processing Systems - Volume 2 (pp. 2503–2511). MIT Press, 2015. • DVC. https://dvc.org/

Slide 25

Slide 25 text

No content