Slide 1

Slide 1 text

Vertex AI ではじめる MLOps Asei Sugiyama

Slide 2

Slide 2 text

TOC MLOps までの道のり <- 機械学習パイプライン Vertex Pipelines

Slide 3

Slide 3 text

機械学習までのス テップ 1. 小さく始める 2. 標準化 3. システム化 4. データ分析 5. 機械学習 機械学習とビジネス プロセス (How Google Does Machine Learning 日本語版) - Coursera https://www.coursera.org/learn/google-machine-learning- jp/lecture/G8qKf/ji-jie-xue-xi-tobizinesu-purosesu

Slide 4

Slide 4 text

MLSE 機械学習オペレーション WG (2022年度夏)

Slide 5

Slide 5 text

機械学習の活用度合い 多くの組織が机上での研究開発や実証実験に取り組んでおり、実証実験 での成果を出し始めている 実利用を始めるまでのハードルが高く、プロダクトとして利用できてい る組織は著しく少ない 全社的に利用できている企業はごく一部

Slide 6

Slide 6 text

機械学習チームの悲劇 機械学習専門のチームが誕生 機械学習モデルを作成し、PoC で成果を確認 モデルをプロダクトに組み込むためのタスクが作成される モデルをプロダクトに組み込む作業の見積もりが大きくなる 典型的な機能開発のほうが小さな見積もりになり、優先度が上がる プロダクトに組み込まれないため機械学習専門のチームの成果が出ない 投資対象を見直すことになりチーム解散

Slide 7

Slide 7 text

MLOps とは 機械学習の成果をスケールさせるた めのさまざまな取り組み DevOps のプラクティスに基づく 機械学習システムを育てる取り組み

Slide 8

Slide 8 text

MLOps の分野 DevOps の 3 つの分野で整理できる 1. 技術 2. プロセス 3. 文化 DORA | DevOps capabilities https://dora.dev/devops-capabilities/

Slide 9

Slide 9 text

技術 コード品質管理 アーキテクチャ バージョン管理 CI/CD/CT 自動テスト IaC 監視 技術選定 各種アクセラレーターへの対応 (推論環境)

Slide 10

Slide 10 text

プロセス 研究開発から社会実装への展開 顧客からのフィードバック 機械学習システムのテスト ビジネス上の意思決定に役立つモニタリング 多様な利害関係者との協業

Slide 11

Slide 11 text

文化 機械学習に特有な文化的要素というものは見つかっていない 企業規模とは独立 ビジネスドメインとは独立 バッドパターンはいくつか見つかっている 機械学習チームの悲劇 完璧主義・全体最適から着手 コラボレーション、試行錯誤からの学習、などが鍵か

Slide 12

Slide 12 text

MLOps とは 機械学習の成果をスケールさせるた めのさまざまな取り組み DevOps のプラクティスに基づく 機械学習システムを育てる取り組み

Slide 13

Slide 13 text

TOC MLOps までの道のり 機械学習パイプライン <- Vertex Pipelines

Slide 14

Slide 14 text

機械学習パイプライン 機械学習パイプラインとは ML Pipeline Spec TFX 典型的なコンポーネント 設計上の注意点

Slide 15

Slide 15 text

機械学習パイプラインとは 機械学習のモデル更新に必 要なさまざまなタスクをパ イプラインとして実装した もの 次の内容を実現する バージョン管理 CI/CD/CT 自動テスト MLOps: 機械学習における継続的デリバリーと自動化のパイプライン https://cloud.google.com/architecture/mlops-continuous-delivery-and- automation-pipelines-in-machine-learning

Slide 16

Slide 16 text

ML Pipeline Spec オーケストレーション パイプラインを構成するタスクの実行順の管理 コードとデータの管理 モデルの振る舞いを決めるものを同時に管理 可視化 入出力と合わせてそれを可視化したもの(典型的にはグラフ)を管理

Slide 17

Slide 17 text

TFX (TensorFlow Extended) Akshay Naresh Modi and Chiu Yuen Koo and Chuan Yu Foo and Clemens Mewald and Denis M. Baylor and Eric Breck and Heng-Tze Cheng and Jarek Wilkiewicz and Levent Koc and Lukasz Lew and Martin A. Zinkevich and Martin Wicke and Mustafa Ispir and Neoklis Polyzotis and Noah Fiedel and Salem Elie Haykal and Steven Whang and Sudip Roy and Sukriti Ramesh and Vihan Jain and Xin Zhang and Zakaria Haque TFX: A TensorFlow-Based Production- Scale Machine Learning Platform, KDD 2017 (2017) https://proceedings.neurips.cc/paper/2015/hash/86df7dcfd896fcaf2674f757a2463eba-Abstract.html

Slide 18

Slide 18 text

Pipeline 機械学習モデルを生成する のに必要な一連の処理を行 うもの 処理を適切な単位で分割 し、Component を組み合わ せて設計する Component 間はストレージ を介して入出力を行うと良 い The TFX User Guide - TensorFlow https://www.tensorflow.org/tfx/guide

Slide 19

Slide 19 text

Components 機械学習で行われる一連の処理を分割して実装したもの TFX に規定されるコンポーネント一覧 Data Extraction Data Validation Data Preparation Model Training Model Evaluation Model Validation (Push)

Slide 20

Slide 20 text

Data Extraction ETL 処理を行って必要なデ ータを手元に持ってくる 訓練用/評価用データを用意 する 入手した1レコードを Example (標本) と呼ぶ The ExampleGen TFX Pipeline Component - TensorFlow https://www.tensorflow.org/tfx/guide/examplegen

Slide 21

Slide 21 text

Data Validation 入手したデータの検証を行 う null チェックや値域のチェ ックなど Akshay Naresh Modi and Chiu Yuen Koo and Chuan Yu Foo and Clemens Me Denis M. Baylor and Eric Breck and Heng-Tze Cheng and Jarek Wilkiewicz an Koc and Lukasz Lew and Martin A. Zinkevich and Martin Wicke and Mustafa I Neoklis Polyzotis and Noah Fiedel and Salem Elie Haykal and Steven Whang Roy and Sukriti Ramesh and Vihan Jain and Xin Zhang and Zakaria Haque TF TensorFlow-Based Production-Scale Machine Learning Platform, KDD 2017 ( https://proceedings.neurips.cc/paper/2015/hash/86df7dcfd896fcaf2674f757 -Abstract.html

Slide 22

Slide 22 text

Data Preparation データに対して前処理を行 い、モデルが扱える形式に する 訓練用/評価用データだけで はなく、本番環境でも同じ 処理が必要 前処理の扱いについては落 とし穴が多い Data preprocessing for machine learning: options and recommendations - https://cloud.google.com/architecture/data-preprocessing-for-ml-with-tf- transform-pt1

Slide 23

Slide 23 text

Model Training 訓練データを用いてモデル を訓練 Model Evaluation 評価データを用いてモデル を評価 評価指標は Accuracy など の精度指標 Basic text classification - TensorFlow Core https://www.tensorflow.org/tutorials/keras/text_classification

Slide 24

Slide 24 text

Model Validation 本番環境への投入可否を判断 既存のモデルとの比較を行い、デプロイするかどうか判断 特定セグメントでの性能悪化がないか確認 インフラとの整合性確認

Slide 25

Slide 25 text

Don't just Do TFX, Do YOUR MLOps. これまでに紹介したコンポーネントをすべてカバーしようとするのは現 実的でない 直面している課題に対しての解決策として上記のコンポーネントの導入 を検討する Don't 画像を扱っているのですがデータのバリデーションって何をすれば やったことになりますか? DO 入力が画像で正規化処理を前処理で行うので、ファイルの形式やサ イズなど簡単な検査のみにとどめます

Slide 26

Slide 26 text

TOC MLOps までの道のり 機械学習パイプライン Vertex Pipelines <-

Slide 27

Slide 27 text

Vertex Pipelines Vertex AI と TFX Vertex Pipelines 3 つの書き方 Lightweight Python Component Hello, world コンポーネントのつなげかた 複雑なパイプライン

Slide 28

Slide 28 text

Vertex AI と TFX 設計思想は同一 TFX をクラウドサービスとして 提供しているのが Vertex AI MLOps on Vertex AI https://cloud.google.com/vertex-ai/docs/start/introduction- mlops

Slide 29

Slide 29 text

Vertex Pipelines Vertex AI の機械学習パイプ ラインを実行するためのサ ービス コンテナを立ち上げて、バ ッチ処理し、コンテナを終 了するだけ 記述には KFP (Kubeflow Pipelines) SDK を用いる MLOps: 機械学習における継続的デリバリーと自動化のパイプライン https://cloud.google.com/architecture/mlops-continuous-delivery-and- automation-pipelines-in-machine-learning

Slide 30

Slide 30 text

3 つの書き方 Lightweight Python Components Containerized Python Components Container Components 第一選択は Lightweight Python Components Kubeflow Pipelines v2 で Pipeline の書き方がかなり変わる件について https://zenn.dev/asei/articles/introduction-to-kfp-v2

Slide 31

Slide 31 text

Lightweight Python Component 次のような Python の関数を用意 def hello_world(text: str) -> str: print(text) return text デコレーターを用いてコンポーネント化 @component(base_image="python:3.9") def hello_world(text: str) -> str: print(text) return text

Slide 32

Slide 32 text

Hello, world: 全体像 @component(base_image="python:3.9") def hello_world(text: str) -> str: print(text) return text @dsl.pipeline( name="intro-pipeline-unique", description="A simple intro pipeline", pipeline_root=PIPELINE_ROOT, ) def pipeline(text: str = "hi there"): hw_task = hello_world(text=text) compiler.Compiler().compile( pipeline_func=pipeline, package_path="intro_pipeline.yaml")

Slide 33

Slide 33 text

Hello, world: コンポーネントの定義 @component(base_image="python:3.9") def hello_world(text: str) -> str: print(text) return text コンポーネントを定義 宣言したコンポーネントはパイプラインのなかで呼ぶ

Slide 34

Slide 34 text

Hello, world: パイプラインの定義 @dsl.pipeline( name="intro-pipeline-unique", # 名前の指定 description="A simple intro pipeline", # 処理内容のコメント pipeline_root="gs://your-ml-bucket", # 結果の保存先 (GCS) ) def pipeline(text: str = "hi there"): # 先程定義したコンポーネント hello_world を呼び出す hw_task = hello_world(text=text) # 返り値は PipelineTask と呼ばれる パイプラインのデコレーターの引数は保存先の指定だけ必要 (あとでも 良い)

Slide 35

Slide 35 text

Hello, world: パイプラインのコンパイル # コンパイルする compiler.Compiler().compile( pipeline_func=pipeline, package_path="intro_pipeline.yaml" ) Python で定義したパイプラインを、Vertex Pipelines にわたすための設 定ファイル (YAML) にコンパイル 生成される intro_pipeline.yaml は pipeline_spec という中間言語 になっている

Slide 36

Slide 36 text

Hello, world: パイプ ラインの実行 YAML ファイルを アップロード パイプラインの名 前や、実行結果の 保存先を指定

Slide 37

Slide 37 text

Hello, world: 結果 作成したパイプラ インを表示 コンポーネントご とに入出力が表示 される (右下)

Slide 38

Slide 38 text

コンポーネントの繋げ方: パイプラインの定義 @dsl.pipeline( pipeline_root="gs://your-ml-bucket", ) def pipeline(text: str = "hi there"): first_task = hello_world(text=text) second_task = hello_world(text=first_task.output) コンポーネントの出力を次のコンポーネントにわたすには、そのまま出 力を渡してあげれば良い

Slide 39

Slide 39 text

コンポーネントの繋 げ方: 実行結果 実行順から依存関 係が解析され、パ イプラインが定義 される 条件分岐や fun- out, fun-in も可能

Slide 40

Slide 40 text

複雑なパイプライン 実際の構築に当たってはチュー トリアルを見ておくと良い Vertex AI Pipelines: Pipelines introduction for KFP Vertex AI Pipelines: Lightweight Python function-based components, and component I/O Vertex AI Pipelines Jupyter notebooks https://cloud.google.com/vertex- ai/docs/pipelines/notebooks

Slide 41

Slide 41 text

まとめ MLOps は、機械学習の成果をスケールさせるためのさまざまな取り組 みを指し、技術・プロセス・文化と多方面に渡る 機械学習パイプラインは MLOps で扱われるもののひとつであり、機械 学習モデルを訓練する一連のプロセスを自動化する Vertex Pipelines は機械学習パイプラインを実行するためのサービスで あり、KFP SDK を用いて記述したパイプラインを実行できる