Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MLOpsを始めよう!/MLOps-Getting-Started

 MLOpsを始めよう!/MLOps-Getting-Started

OCHaCafe Season5 #6の資料です.

oracle4engineer

June 08, 2022
Tweet

Video

More Decks by oracle4engineer

Other Decks in Technology

Transcript

  1. Copyright © 2022, Oracle and/or its affiliates 2 1. MLOpsとは

    2. MLOpsの俯瞰と各プロセス 3. MLOpsに利⽤されるプラットフォーム 4. Kubeflowで始めるMLOps(デモ含む) 5. まとめ アジェンダ
  2. • 仁井⽥ 拓也 • ⽇本オラクル株式会社 • ソリューション・アーキテクト本部 • 前職は某SIer •

    Oracle歴︓3年ちょっと • Cloud Native歴︓ 3年ちょっと • ジブリ⼤好き • OCHaCafeは8回⽬の登壇(R:7回/P:1回) ⾃⼰紹介 Copyright © 2022, Oracle and/or its affiliates 3 @takuya_0301
  3. MLOpsとは Oracle Cloud Hangout Cafe 5 #6 – MLOpsを始めよう!! 4

    Copyright © 2022, Oracle and/or its affiliates Takuya Niita Oracle Corporation Japan Jun 08, 2022
  4. Copyright © 2022, Oracle and/or its affiliates 5 MLOpsとは “MLOps”に関する各社の製品ドキュメント、ブログなどの記述(not

    公式⾒解) • Google社 “DevOpsと同様に、MLOpsは、MLシステム開発(Dev)とMLシステム運⽤(Ops)を統合することを⽬的としたMLエンジニアリングの⽂化 と実践です。” • Microsoft社 “ Machine Learning 操作 (MLOps) は、ワークフローの効率を向上させるDevOpsの原則と実践に基づいています。 たとえば、継続 的インテグレーション、配信、デプロイです。 ” • Amazon社 “ MLOpsとは、 DevOpsの実践を機械学習のワークロードに適⽤することで構築された⼿法のことを指します。 ” • Oracle社 “MLOpsは、機械学習と運⽤の両⽅であり、データサイエンティストと、機械学習のライフサイクルを管理するためのアプリケーション 開発者を含む運⽤の専⾨家との間のコラボレーションとコミュニケーションに関するものです。” 引⽤元:https://cloud.google.com/blog/products/ai-machine-learning/key-requirements-for-an-mlops-foundation 引⽤元:https://docs.microsoft.com/ja-jp/azure/machine-learning/concept-model-management-and-deployment 引⽤元:https://github.com/aws-samples/mlops-amazon-sagemaker-devops-with-ml/blob/master/README.md 引⽤元:https://blogs.oracle.com/machinelearning/post/introducing-oracle-machine-learning-services
  5. Copyright © 2022, Oracle and/or its affiliates 6 MLOpsとは “MLOps”に関する各社の製品ドキュメント、ブログなどの記述(not

    公式⾒解) • Google社 “DevOpsと同様に、MLOpsは、MLシステム開発(Dev)とMLシステム運⽤(Ops)を統合することを⽬的としたMLエンジニアリングの⽂化 と実践です。” • Microsoft社 “ Machine Learning 操作 (MLOps) は、ワークフローの効率を向上させるDevOpsの原則と実践に基づいています。 たとえば、継続 的インテグレーション、配信、デプロイです。 ” • Amazon社 “ MLOpsとは、 DevOpsの実践を機械学習のワークロードに適⽤することで構築された⼿法のことを指します。 ” • Oracle社 “MLOpsは、機械学習と運⽤の両⽅であり、データサイエンティストと、機械学習のライフサイクルを管理するためのアプリケーション 開発者を含む運⽤の専⾨家との間のコラボレーションとコミュニケーションに関するものです。” 引⽤元:https://cloud.google.com/blog/products/ai-machine-learning/key-requirements-for-an-mlops-foundation 引⽤元:https://docs.microsoft.com/ja-jp/azure/machine-learning/concept-model-management-and-deployment 引⽤元:https://github.com/aws-samples/mlops-amazon-sagemaker-devops-with-ml/blob/master/README.md 引⽤元:https://blogs.oracle.com/machinelearning/post/introducing-oracle-machine-learning-services 結局、機械学習(ML)のDevOps…??
  6. Copyright © 2022, Oracle and/or its affiliates 7 DevOpsとMLOpsの共通点 “継続的XXX”にフォーカスしてみると…

    DevOps MLOps 継続的インテグレーション(CI) コードとコンポーネントのテストと検証 データ、データスキーマ、およびモデル のテストと検証 継続的デリバリ(デプロイ)(CD) 単⼀のソフトウェアパッケージまたは サービスのデプロイ パイプラインが別のサービスに⾃動的 にデプロイ 継続的モニタリング(CM) システムのエラーや劣化を検知 (Observability) ビジネス結果に関連付けられたモデ ルパフォーマンスメトリックを監視 参考:https://cloud.google.com/blog/products/ai-machine-learning/key-requirements-for-an-mlops-foundation データやモデルにフォーカスしたもの
  7. CT(継続的トレーニング) • DevOpsには存在しない、モデルにフォーカスした概念 • モデルを⾃動的に再トレーニングし、予測サービスを提 供できる状態にすること • 新しいモデルを構築するだけではなく、最新データ で既存モデルを学習し直すことも •

    継続的インテグレーション(CI)と継続的デリバリ(デ プロイ)(CD)と共に構築していくもの • 機械学習において重要なトピックである「モデルの再 現性」のための⼿法にも • 機械学習ではランダムシード(乱数⽣成)やインプッ トするデータの不整合などで再現性の担保が難し いと⾔われる • モデルの予測精度が悪化した場合に改善するための フローを⾼頻度に回す(≒DevOps) DevOpsとMLOpsの相違点 Copyright © 2022, Oracle and/or its affiliates 8 参考:https://cloud.google.com/architecture/mlops-continuous-delivery-and-automation-pipelines-in-machine-learning
  8. Click to add image “MLOpsは、機械学習、DevOps、デー タエンジニアリングが交差する⼀連のプラ クティスです” Copyright © 2022,

    Oracle and/or its affiliates 9 MLOps: Machine Learning as an Engineering Discipline: Cristiano Breuel https://towardsdatascience.com/ml-ops-machine-learning-as-an- engineering-discipline-b86ca4874a3f
  9. Copyright © 2022, Oracle and/or its affiliates 10 組織 開発

    機械学習ワークフローを定義してみる 要件定義/検討 (⼩規模な) 実験 本番開発 適⽤領域の 拡⼤ 本番デプロイ プロトタイプ 作成 データ取り込み データ検証 データ前処理 モデル 分析/検証 モデルデプロイ モデル学習 それぞれのプロセス内で「開発」を実施
  10. Copyright © 2022, Oracle and/or its affiliates 11 ⼿作業での学び、実験 •

    開発への投資判断 • 社内稟議など • 必要最⼩限の関係者だけで⼩ さく始める • とりあえず書籍やオンライントレー ニングなどでMLを学習 • 学習する中で⼿を動かす • アドホックにデータ前処理やモデ ルの学習を実施 組織としての機械学習ワークフロー 要件定義/検討 (⼩規模な) 実験 本番開発 適⽤領域の 拡⼤ 本番デプロイ プロトタイプ 作成 本番を⾒据えた環境構築 • 利害関係者との連携 • プロジェクト⽬標の設定 • 限定的(実験的)なMLOps 環境構築 • 限定的(実験的)なモデルの 運⽤監視環境の構築 拡張性を⾒据えた環境構築 • 組織を横断したプロジェクト の発⾜ • データガバナンス • 完全な(本番環境)MLOps 環境構築 • 完全(本番環境)なモデルの 運⽤監視環境の構築
  11. Copyright © 2022, Oracle and/or its affiliates 12 開発としての機械学習ワークフロー データ取り込み

    データ検証 データ前処理 モデル 分析/検証 モデルデプロイ モデル学習 モデル作成の準備 • データ形式に応じたデータ取り 込みとデータ分割 • データ形式の変換 • データ統計量(データ量やデータ の偏りがないか)が期待通りかの チェック • データの標準化 モデルの構築/デプロイ • 誤差が最⼩になるようにモデルを構築 • パラメータのチューニング • 検証データを利⽤した正解率や損失(誤差)の分析 • モデルの公平性の担保 • モデルのデプロイ(CI/CD) • モデルの更新/フィードバック 今回のトピック!!
  12. Copyright © 2022, Oracle and/or its affiliates 13 機械学習ワークフローを⼿動で⾏う場合の課題 本番環境でモデルの精度を維持するための数々のタスク・・・

    • 本番環境モデルの再トレーニング • データは常に変化していくため、最新のデータでモデルを再トレーニングする必要がある • 例)ファッション関連のレコメンドをしている場合は最新トレンドを取り込む必要がある • 新しい実装を実験/テストし、新しいモデルを⽣成 • 特徴量エンジニアリング、モデルアーキテクチャ、ハイパーパラメータなどの新しい実装を試⾏し、精度を⾼めていく 必要がある • 本番環境でのモデル品質のモニタリング • モデルの古さによるパフォーマンスの低下を防⽌するために新しいモデル構築を促す これらのタスクを⼿動で⾏うのは⼤変・・・ そのため、DevOpsの考え⽅を取り⼊れたMLOpsが必要!! ! ! !
  13. 開発への集中 • 現⾏モデルの保守から 解放し、モデルを最新状 態に保つことに集中 • ⼿動でのデータ前処 理や⼿作業でのデ プロイからの解放 標準化(開発体験の向上)

    • 構成の標準化により容 易にプロジェクト参画 • 新規プロジェクトの ⽴ち上げにかかる時 間の短縮 • 従業員定着率の向 上などの効果 変更履歴の管理 • 実験の追跡とモデルのリ リース管理による再現性 の向上 • どのモデルがどの環 境にデプロイされて いるかを容易に追跡 費⽤対効果 • 新規モデルを開発する 時間が増加 • 現⾏モデルの容易な更 新 • モデルの再現に費やす 時間を削減 なぜMLOpsが必要か︖ Copyright © 2022, Oracle and/or its affiliates 14
  14. 15 Copyright © 2022, Oracle and/or its affiliates Takuya Niita

    Oracle Corporation Japan Jun 08, 2022 MLOpsの俯瞰と各プロセス Oracle Cloud Hangout Cafe 5 #6 – MLOpsを始めよう!!
  15. Copyright © 2022, Oracle and/or its affiliates 16 開発としての機械学習ワークフロー データ取り込み

    データ検証 データ前処理 モデル 分析/検証 モデルデプロイ モデル学習 モデル作成の準備 • データ形式に応じたデータ取り 込みとデータ分割 • データ形式の変換 • データ統計量(データ量やデータ の偏りがないか)が期待通りかの チェック • データの標準化 モデルの構築/デプロイ • 誤差が最⼩になるようにモデルを構築 • パラメータのチューニング • 検証データを利⽤した正解率や損失(誤差)の分析 • モデルの公平性の担保 • モデルのデプロイ(CI/CD) • モデルの更新/フィードバック
  16. データ取り込み/検証 • ⼤まかに以下の流れで実施 1. データの取り込み • データファイルからの読み込み • 最も⼀般的なのはCSVファイル •

    外部サービスからの読み込み • RDBMSやデータウェアハウスなど 2. 取り込んだデータセットの分割と変換 • データを分割(学習⽤:評価⽤:テスト⽤=6:2:2)し、後 続のフローで利⽤しやすいデータ形式に変換 • TFRecord(Tensorflowで利⽤されるシリアライズ データ)/Avro/Parquetなど 3. データ検証 • 統計量を⽣成し、データが妥当かどうかをチェック データの取り込み/検証 Copyright © 2022, Oracle and/or its affiliates 17 データ取り込み データ検証 データ前処理 モデル 分析/検証 モデルデプロイ モデル学習
  17. 構造化データ • 元の状態 • RDBMSやデータウェアハウス、 ファイルなどに表形式で格納 • 取り込み • CSVファイルはそのまま取り込

    めるライブラリが多い • データベースやデータウェアハウ スのようにディスク上に格納さ れている場合はCSV形式に変 換 • データ量が⼤規模(数百MB 以上)の場合、TFRecordや Parquet形式に変換 画像データ • 元の状態 • 画像ファイル(png,jpeg…) • 取り込み • TFRecordなどの形式でバイト ⽂字列として変換 • ⾼圧縮された画像の場合で も、そのまま使うのがベター(デ コードした際にサイズが想定 以上に⼤きくなる可能性) テキストデータ • 元の状態 • テキストコーパス(テキストデー タを⼤量に集めたもの) • 取り込み • テキストデータは⼤規模にな ることが多いため、 TFRecord やParquet形式に変換 • データベースなどに格納しても 良いが、トラフィックのコストや ボトルネックに注意 データの取り込み戦略 Copyright © 2022, Oracle and/or its affiliates 18 データ取り込み データ検証 データ前処理 モデル 分析/検証 モデルデプロイ モデル学習 http://news.livedoor.com/article/detail/6918105/ 2012-09-04T12:45:00+0900 ジャンプ連載漫画が終了に、ユーザが新たな提案!? 『ONE PIECE』や『NARUTO』、『BLEACH』といった⼈気漫画で もお馴染み、集英社『週刊少年ジャンプ』で今年連載がス タートした『パジャマな彼⼥。』(濱⽥浩輔)が、3⽇発売の 最新号=No.40をもって連載終了となった。 コーパス例
  18. データ検証 • 後続のフローに備えて、以下の流れでチェック 1. データの統計量を⽣成し、以下を確認 • データレコードの総数 • データの⽋損値 •

    データレコードの全体の統計情報(最⼤/最⼩/平 均/標準偏差/ゼロ値の割合) 2. 統計量を利⽤し、データスキーマを⽣成 3. 新旧データセットおよび分割した各種データセット (学習/評価/テスト)がアンマッチになっていないかを チェック • データの異常値チェック • ドリフト(データ統計量の違い)のチェック • バイアスがかかったデータがないかのチェック(性別に よる偏り、国籍による偏りなど) データ検証 Copyright © 2022, Oracle and/or its affiliates 19 データ取り込み データ検証 データ前処理 モデル 分析/検証 モデルデプロイ モデル学習 TFX(Tensorflow Extended) というフレームワークでの スキーマ⽣成やデータ統計 量のチェック
  19. Copyright © 2022, Oracle and/or its affiliates 20 データの前処理 •

    「機械学習(データ分析)の8割は前処理にあり」と⾔われるほど重要なプロセス • ⼤まかに以下のようなことを実施 • データの標準化(正規化) • 平均0/分散1(最⼩0/最⼤1)のスケール範囲で数値を調整 • ⽋損データがある場合は除外 or 妥当な値で埋め込み….etc データの前処理をパイプライン化する際のポイント • 前処理のスケーラビリティ • Apache Beam/Apache Spark/Apache Flinkなどの分散処理可能なバックエンドを利⽤するのがベター • 多くの機械学習プラットフォームでは上記のバックエンドを採⽤していることが多い • モデルエクスポート時にデータ前処理のロジックも包含できるように構築(後述) データの前処理 データ取り込み データ検証 モデル 分析/検証 モデルデプロイ モデル学習 データ前処理
  20. モデル学習 • ⼤まかに以下の流れで実施 1. データの読み込み 2. モデルのコンパイル(モデルを学習する際の設定)と 学習 3. モデルのエクスポート

    • モデルのエクスポート時のポイント • 学習ー推論間のスキュー(学習と予測時のデータ の不整合)を回避するために前処理とモデルを⼀ つのアーティファクトでエクスポートするのがベター • 予測/推論時に余計なロジックやオーバヘッドを 軽減可能 モデル学習 Copyright © 2022, Oracle and/or its affiliates 21 データ取り込み データ検証 モデル 分析/検証 モデルデプロイ モデル学習 データ前処理 データセット 学習時 予測時 機械学習 モデル クライアント 前処理 前処理 前処理をモデル側にオフロード!! 前処理 本当に 同じ前処理︖
  21. Copyright © 2022, Oracle and/or its affiliates 22 モデル分析/検証 •

    ⼤まかに以下の流れで実施 1. 指標のチェック • 分類の場合 • 真陽性/偽陽性/真陰性/偽陰性 • 正解率/適合率/再現率 • 回帰の場合 • 絶対平均誤差(MAE)/平均絶対誤差率(MAPE)/平均⼆乗誤差(MSE)…. 2. モデルの公平性チェック • モデルにバイアス(偏り)がないことのチェック • 最近では⽶国での顔認証システムをめぐって議論 • https://www.bbc.com/japanese/48276999(サンフランシスコ市、顔認証技術の使⽤を禁⽌へ) 3. モデルの説明可能性 • モデルが出⼒した予測の根拠が説明できるか モデル分析/検証 データ取り込み データ検証 モデル 分析/検証 モデルデプロイ モデル学習 データ前処理 従来から あった評価 昨今 注⽬されている評価
  22. 公平性 • モデルの予測として公平かどうかをチェック • 精度均等 • ⾊⿊の⼥性と⾊⽩の男性に対する精度と同じ • 公平性のチェックには以下のようなツールを利⽤ •

    Faireness Indicators/What-If Tool 説明可能性(Explainability/Explainable AI) • モデルによる予測の根拠を説明 • 説明可能性が必要な理由 • モデルのデバッグを⾏う場合の⼿かがり • モデルのへの信頼構築 • モデルの監査 • ユーザへのモデルの説明 公平性/説明可能性 Copyright © 2022, Oracle and/or its affiliates 23 データ取り込み データ検証 モデル 分析/検証 モデルデプロイ モデル学習 データ前処理 説明可能性の可視化例(Oracle ADSの場合) ⾝⻑の違いによる 不公平性がないか
  23. モデルのデプロイ • モデルのデプロイ場所は主に以下。 • モデルサーバ • API(RESTエンドポイント)などを利⽤ • ブラウザ •

    TensorFlow.js/ONNX.jsなどを利⽤ • エッジデバイス • Tensorflow Liteなどの軽量モデルを利⽤ • 予測や推論の提供⼿法としては以下。 • ステートレスサービング • ステートレスな関数として提供 • バッチサービング • 分散処理基盤やRDBMS/DWHなどで提供 • RDBMS/DWHではユーザ定義関数などを利⽤ モデルデプロイ Copyright © 2022, Oracle and/or its affiliates 24 データ取り込み データ検証 モデル 分析/検証 モデルデプロイ モデル学習 データ前処理
  24. Copyright © 2022, Oracle and/or its affiliates 25 ステートレスサービング/バッチサービングの使い分け •

    ステートレスサービングを利⽤すべき場⾯ • 少量のデータ(⼀〜数千)をインプットに対する予測 • 各クラウドベンダーが提供するコンテナ(Kubernetes)やサーバレス(FaaS)を利⽤できる環境での予測 • バッチサービングを利⽤すべき場⾯ • ⼤量のデータ(数万〜数千万)をインプットに対する予測(数万〜数千万の予測を⾏う場合) • データベース(データウェアハウス)内のデータをインプットにした予測 リアルタイム性が求められる予測 • ユーザ提供時にステートレスサービングで予測を⾏うのではリアルタイムな予測は実現困難 • 準リアルタイムであればステートレスサービングで可能 • バッチサービングを利⽤して事前に予測を⾏い、データベースにキャッシュとして格納 • 利⽤時にデータベースから予測を取得し、ユーザに提供 モデルデプロイ時の考慮点 データ取り込み データ検証 モデル 分析/検証 モデルデプロイ モデル学習 データ前処理
  25. Copyright © 2022, Oracle and/or its affiliates 26 レベル 概要

    ポイント 0 MLOpsなし • ⼿動によるビルドデプロイ • モデル、機械学習アプリケーションの⼿動テスト • ⼿動によるモデルトレーニング、デプロイ 1 DevOpsあり、MLOpsなし • ⾃動ビルド、アプリケーションの⾃動テスト • ⼀般的なCI/CD(継続的インテグレーション/デリバリ(デプロイメント)) • ⼿動によるモデルトレーニング、デプロイ 2 トレーニングの⾃動化 • ⾃動化されたモデルのトレーニング • モデル トレーニングのパフォーマンスの追跡 3 モデルデプロイの⾃動化 • モデルデプロイ時の A/B テストなどの⾼度なデプロイ戦略の実施 • モデルのパフォーマンスによるデプロイ管理 4 MLOpsの完全⾃動化 • モデルトレーニングとテストの⾃動化(新モデルの⾃動改善) • MLOpsプラットフォームのゼロダウンタイム運⽤ MLOpsの成熟度モデル Machine Learning ⽤の成熟度モデル https://docs.microsoft.com/ja-jp/azure/architecture/example-scenario/mlops/mlops-maturity-model
  26. MLOpsに利⽤されるプラットフォーム 27 Copyright © 2022, Oracle and/or its affiliates Oracle

    Cloud Hangout Cafe 5 #6 – MLOpsを始めよう!! Takuya Niita Oracle Corporation Japan Jun 08, 2022
  27. Copyright © 2022, Oracle and/or its affiliates 28 MLOpsのフローとプラットフォーム MLOpsのフローとプラットフォーム

    データ取り込み データ検証 データ前処理 モデル 分析/検証 モデルデプロイ モデル学習 • 機械学習フローの可視化とWeb UI • 各Jobのモジュール化や再利⽤の容易性 • 成果物やメタデータの管理 • 実⾏した機械学習フローの⼊出⼒やモデルのトラッキングおよびそ の可視化 • 機械学習フローのスケジューリング実⾏やイベントドリブンな実⾏… • モデルの監視や複 雑なデプロイ戦略 への対応 • 柔軟なスケーリング 対応 • デプロイ済みモデル のバージョン管理
  28. • 機械学習フローの可視化とWeb UI • 各Jobのモジュール化や再利⽤の容易性 • 成果物やメタデータの管理 • 実⾏した機械学習フローの⼊出⼒やモデルのトラッキングおよびそ の可視化

    • 機械学習フローのスケジューリング実⾏やイベントドリブンな実⾏… Copyright © 2022, Oracle and/or its affiliates 29 MLOpsのフローとプラットフォーム MLOpsのフローとプラットフォーム データ取り込み データ検証 データ前処理 モデル 分析/検証 モデルデプロイ モデル学習 • モデルの監視や複 雑なデプロイ戦略 への対応 • 柔軟なスケーリング 対応 • デプロイ済みモデル のバージョン管理 パイプラインオーケストレーション & 成果物/メタデータレジストリ 軽量 モデルサーバ
  29. Copyright © 2022, Oracle and/or its affiliates 30 MLOpsのフローとプラットフォーム MLOpsのフローとプラットフォーム

    データ取り込み データ検証 データ前処理 モデル 分析/検証 モデルデプロイ モデル学習
  30. Copyright © 2022, Oracle and/or its affiliates 31 MLOpsのフローとプラットフォーム MLOpsのフローとプラットフォーム

    データ取り込み データ検証 データ前処理 モデル 分析/検証 モデルデプロイ モデル学習
  31. Kubeflow • https://github.com/kubeflow/kubeflow • 最新v1.5.0(2022/6現在) • Kubernetes上で動作するOSSな機械学習プラット フォーム • Google社内で使われていた機械学習基盤をオー

    プンソース化したもの • 機械学習ワークフローやCI/CDサイクルをシンプル、ポー タブル、スケーラブルにすることがコンセプト • 豊富なコンポーネント • Kubeflow UI(ダッシュボード) • Notebook Server • Kubeflow Pipelines(機械学習パイプライン) • Argo Workflowsを利⽤ • KServe(KFServing) (サーバレス推論)…etc Kubeflow Copyright © 2022, Oracle and/or its affiliates 32
  32. Argo Workflows • https://github.com/argoproj/argo-workflows • 最新v3.3.6(2022/6現在) • Kubernetesで並列ジョブを調整するためのワークフロー エンジン •

    Argo Familyの⼀派 • ステップワークフローを⼀連のタスクとしてモデル化したり、 有向⾮巡回グラフ(DAG)を使⽤してタスク間の依 存関係をキャプチャ可能 • ワークフローはCRD(Custom Resource Definition)とし て実装 • Kubeflowで機械学習パイプラインを構築する際のワー クフローエンジン(Kubeflow Pipeline)として利⽤ (参考)Argo Workflows Copyright © 2022, Oracle and/or its affiliates 33
  33. Apache Airflow • https://github.com/apache/airflow/ • 最新v2.3.2(2022/6現在) • Airbnb社が開発 • 各処理を依存関係として有向⾮巡回グラフ(DAG)

    を利⽤し、ワークフロー化するOSSプラットフォーム • ワークフローをプログラムとして作成し、スケジューリング 実⾏したり、モニタリングをすることが可能 • Pythonで実装 • 各処理(Job)は”Operator(≠Kubernetes Operator)”に よって記述 • PythonOperator/条件分岐オペレータなど • BaseOperatorを継承すればカスタマイズも可能 Apache Airflow Copyright © 2022, Oracle and/or its affiliates 34
  34. mlflow • https://github.com/mlflow/mlflow • 最新v1.26.1(2022/6現在) • 実験、再現性、デプロイ、レジストリなど機械学習ライ フサイクルを管理するためのOSSプラットフォーム • MLflow

    Tracking/MLflow Projects/ MLflow Models/ Model Registryという4つのコンポーネントを保持 ※MLFlowはOracle Big Data Jam Session #8を参照 mlflow Copyright © 2022, Oracle and/or its affiliates 35 https://youtu.be/d60SAK4OOJY https://www.slideshare.net/Ke nichiSonoda/mlflowmlops
  35. TFX(Tensorflow Extended) • https://github.com/tensorflow/tfx • 最新v1.8.0(2022/6現在) • オーケストレーションプラットフォームとしてApache Beam をバックエンドとし、以下のようなコンポーネントを具備

    • tensorflow-data-validation︓データのスキューと 外れ値を検出 • tensorflow-transform︓前処理ライブラリ • Tensorflow︓機械学習フレームワーク • tensorFlow-model-analysis︓モデルの評価を⾏ うためのライブラリ • ml-metadata/tensorflow-medatata︓メタデータ の保存や取得が可能 • KubeflowやAirflowのパイプラインに既存のTFXパイプラ インを取り込むことも可能(TFX⾃体にUIはなし) TFX(Tensorflow Extended) Copyright © 2022, Oracle and/or its affiliates 36
  36. Copyright © 2022, Oracle and/or its affiliates 37 MLOpsのフローとプラットフォーム MLOpsのフローとプラットフォーム

    データ取り込み データ検証 データ前処理 モデル 分析/検証 モデルデプロイ モデル学習
  37. Tensorflow Serving • https://github.com/tensorflow/serving • 最新2.8.2(2022/6現在) • 本番環境向けに実装された機械学習モデルの柔軟 で⾼性能なサービングシステム •

    以下のような機能を実装 • 複数のモデル、同⼀モデルの複数バージョンを管 理可能 • gRPC/HTTPでのエンドポイントを提供 • カナリアリリースやA/Bテストに対応 • TensorflowのモデルインタフェースであるSavedModel 形式を提供されているコンテナイメージにマウントして 利⽤ Tensorflow Serving Copyright © 2022, Oracle and/or its affiliates 38
  38. Seldon Core Serving • https://github.com/SeldonIO/seldon-core • 最新1.13.1(2022/6現在) • Seldon社が提供するオープンソース •

    機械学習モデルをKubernetes上にデプロイするための 基盤を提供 • 様々な⾔語、機械学習フレームワークに対応 • gRPC/HTTPでのエンドポイントを提供 • デプロイしたモデルのアップデートやスケーリング、モニタリ ングもサポート • CLI(s2iコマンド)により、コンテナイメージを作成すること で利⽤可能 • Kubernetes上ではSeldonDeploymentとして動作 Seldon Core Serving Copyright © 2022, Oracle and/or its affiliates 39
  39. KServe • https://github.com/kserve/kserve • 最新v0.8.0(2022/6現在) • v0.7まではKFServingと呼ばれていたが、v0.8で rebrand • 任意のフレームワークで機械学習モデルを提供するた

    めのCRD(Custom Resource Definition)を提供 • Tensorflow、XGBoost、ScikitLearnなどの主要な 機械学習フレームワークに対する抽象化インタ フェースを提供 • スケーリング、ネットワーキングやヘルスチェックなどを カプセル化し、ゼロスケールやカナリアリリースなどの 複雑な運⽤を省⼒化 • デフォルトではKnativeを利⽤しデプロイする仕組み KServe Copyright © 2022, Oracle and/or its affiliates 40
  40. Copyright © 2022, Oracle and/or its affiliates 41 Kubeflow Apache

    Airflow MLFlow TFX 機械学習ネイティブ? ネイティブ 汎⽤的なワークフロー ネイティブ ネイティブ k8sネイティブ? ネイティブ k8sなしで動作 k8sなしで動作 k8sなしで動作 GitHub Star数(2022/6) 11.4k 25.5k 11.7k 1.7k ⾔語 Python/YAML Python Python Python 各プロダクトのまとめ Tensorflow Serving Seldon Core Serving Kserve ⾼度なデプロイ戦略? (Canaly release, A/B Test…) Yes Yes Yes 通信プロトコル gRPC/REST gRPC/REST gRPC/REST 動作環境 コンテナ(Docker/k8s) コンテナ(k8s) コンテナ(k8s) GitHub Star数(2022/6) 5.4k 3.2k 1.4k パイプラインオーケストレーション 軽量モデルサーバ(サービング環境)
  41. Kubeflowで始めるMLOps(デモ含む) 42 Copyright © 2022, Oracle and/or its affiliates Oracle

    Cloud Hangout Cafe 5 #6 – MLOpsを始めよう!! Takuya Niita Oracle Corporation Japan Jun 08, 2022
  42. Kubeflow • https://github.com/kubeflow/kubeflow • 最新v1.5.0(2022/6現在) • Kubernetes上で動作するOSSな機械学習プラット フォーム • Google社内で使われていた機械学習基盤をオー

    プンソース化したもの • 機械学習ワークフローやCI/CDサイクルをシンプル、ポー タブル、スケーラブルにすることがコンセプト • 豊富なコンポーネント • Kubeflow UI(ダッシュボード) • Notebook Server • Kubeflow Pipelines(機械学習パイプライン) • Argo Workflowsを利⽤ • KServe(KFServing) (サーバレス推論)…etc Kubeflow Copyright © 2022, Oracle and/or its affiliates 43
  43. Kubeflow Pipeline(Kubeflow Pipeline SDK) • https://kubeflow- pipelines.readthedocs.io/en/latest/index.html • Argo Workflowsを利⽤して機械学習パイプラインを構

    築 • Tektonを利⽤したパイプラインの実装も可能 • Kubeflow Pipeline SDKを利⽤してパイプラインを実装 • PythonのDomain Specific Language(DSL)を定義 し、コンパイルすることでPipelineのYAML(またはzip、 tar、tar.gzなども可)を⽣成 • ⼤きく2通りの構築⽅法 • 既に構築したコンテナイメージの定義(YAML)をロー ドし、コンポーネント化(コンポーネントの再利⽤) • Jupyter Notebookのスクリプトをコンポーネント化 Kubeflow Pipeline(Kubeflow Pipeline SDK) Copyright © 2022, Oracle and/or its affiliates 44
  44. Kubeflow Pipeline(Kubeflow Pipeline SDK) • https://kubeflow- pipelines.readthedocs.io/en/latest/index.html • Argo Workflowsを利⽤して機械学習パイプラインを構

    築 • Tektonを利⽤したパイプラインの実装も可能 • Kubeflow Pipeline SDKを利⽤してパイプラインを実装 • PythonのDomain Specific Language(DSL)を定義 し、コンパイルすることでPipelineのYAML(またはzip、 tar、tar.gzなども可)を⽣成 • ⼤きく2通りの構築⽅法 • 既に構築したコンテナイメージの定義(YAML)をロー ドし、コンポーネント化(コンポーネントの再利⽤) • Jupyter Notebookのスクリプトをコンポーネント化 Kubeflow Pipeline(Kubeflow Pipeline SDK) Copyright © 2022, Oracle and/or its affiliates 45 デモ①
  45. Copyright © 2022, Oracle and/or its affiliates 46 シンプルなJupyter Notebookスクリプトを利⽤したパイプライン構築を実験︕

    • kfp(Kubeflow Pipeline)︓ Kubeflow Pipeline SDK本体 • kfp.dsl︓ Kubeflow Pipeline SDKでDSL(Domain Specific Language)を利⽤するためのライブラリ • kfp.compiler︓Python DSLで記述されたパイプラインをYAML形式のワークフローにコンパイルするためのパッケージ • つまりはKubernetesのManifest(kind:Workflow)を⽣成。 (Argo Workflowsのカスタムリソース) • kfp.components︓コンポーネント(Kubeflow Pipelineでの各ステップ)として定義するために利⽤するライブラリ Kubeflow Pipeline SDKを利⽤した機械学習パイプラインの実装(1) ー デモ① ー
  46. Copyright © 2022, Oracle and/or its affiliates 47 シンプルなJupyter Notebookスクリプトを利⽤したパイプライン構築を実験︕

    • コンポーネント(Kubeflow Pipelineでの各ステップ)とするための関数を定義 • 定義した関数をfunc_to_container_op()を利⽤してコンポーネントとして定義 • その際にコンポーネント名(func)とベースイメージ(base_image)を指定 • ベースイメージに対して必要なライブラリを追加することも可能 Kubeflow Pipeline SDKを利⽤した機械学習パイプラインの実装(2) ー デモ① ー
  47. Copyright © 2022, Oracle and/or its affiliates 48 シンプルなJupyter Notebookスクリプトを利⽤したパイプライン構築を実験︕

    • “@kfp.dsl.pipeline”というデコレーターによって、パイプライン(関数)を定義 • パイプライン名とdescriptionを指定 • 今回は”creating_lightweight_components”という名前の関数を実装 Kubeflow Pipeline SDKを利⽤した機械学習パイプラインの実装(3) ー デモ① ー
  48. Copyright © 2022, Oracle and/or its affiliates 49 シンプルなJupyter Notebookスクリプトを利⽤したパイプライン構築を実験︕

    • コンポーネントに渡す引数とタスクを定義 • 以下の例では、前述したadd_opコンポーネントを複数回、異なる引数で呼び出し • 各タスクの実⾏順序(依存関係)を定義 Kubeflow Pipeline SDKを利⽤した機械学習パイプラインの実装(4) ー デモ① ー 前のタスクのアウトプットを引数に使うことも可能 ただし、⽂字列か数値のみ データの受け渡しは原則CSVファイルを利⽤した⼊出⼒ add_task1 add_task2 add_task3 add_task4 say_task
  49. Copyright © 2022, Oracle and/or its affiliates 50 シンプルなJupyter Notebookスクリプトを利⽤したパイプライン構築を実験︕

    • kfp.compilerを利⽤して定義したDSLをYAMLにコンパイル Kubeflow Pipeline SDKを利⽤した機械学習パイプラインの実装(5) ー デモ① ー 意外に泥臭い…
  50. Copyright © 2022, Oracle and/or its affiliates 51 パイプラインの作成と実⾏ 先ほどのYAMLをKubeflow

    UIから投⼊ • Kubeflow Pipeline SDKのクライアントを利⽤するとパイプラインの作成から実⾏まで可能(今回はUIから実⾏) 実⾏時に パラメータが設定可能 作成 結果 実⾏
  51. Copyright © 2022, Oracle and/or its affiliates 52 デモ①の補⾜ ー

    コンポーネント ー コンポーネントを作成し、パイプラインを汎⽤化することも可能 • https://www.kubeflow.org/docs/components/pipelines/reference/component-spec/ • YAML形式だが、KubernetesのManifestではない • 可変な部分をパラメータ化することで汎⽤化 • “load_component_from_url()”を利⽤してアップロード先を指定 • パラメータを指定してコンパイル https://github.com/kubeflow/pipelines/tree/master/components
  52. Copyright © 2022, Oracle and/or its affiliates 53 デモ② ー

    Kubeflowの機能をUIから俯瞰︕ ー 今回のデモ環境 • Oracle Container Engine for Kubernetes︓v1.21.5(Kubeflowのインストーラーの関係でv1.22.5/v1.23.4は断念) • Kubeflow︓v1.5.0 • MinIO ︓minio/minio:RELEASE.2022-05-08T23-50-31Z • Kubeflow内のコンポーネントにもローカルMinIOが含まれているが、今回は別途構築(MinIO Operatorを利⽤) • 機械学習パイプライン(フレームワーク)︓TFX(Tensorflow Extended) Container Engine For Kubernetes データ、モジュール、 モデルの格納 TFX (Tensorflow Extended) モデルデプロイ
  53. まとめ 54 Copyright © 2022, Oracle and/or its affiliates Oracle

    Cloud Hangout Cafe 5 #6 – MLOpsを始めよう!! Takuya Niita Oracle Corporation Japan Jun 08, 2022
  54. Copyright © 2022, Oracle and/or its affiliates 55 MLOpsとは •

    MLOpsは、機械学習、DevOps、データエンジニアリングが交差する⼀連のプラクティス • DevOpsにはない概念である”継続的トレーニング(CT)”がある • MLOpsの適⽤により、開発への注⼒、標準化、変更管理、費⽤対効果の改善が⾒込める MLOpsのプロセス • 学習と推論のスキューを防⽌するために前処理もモデルとしてエクスポートできると良し • モデルの検証では、モデルの精度だけではなく、公平性や説明可能性(Explainability)も考慮することが重要 • MLOpsの成熟度モデルを参考に組織に応じたMLOpsのスキームを構築すべし MLOpsプラットフォームとしてのKubeflow • End to EndでMLOpsのフローを実現するための各種機能を具備 • KubernetesによるコンテナネイティブなML基盤により、スケーラブルで再現性の⾼いMLOps環境の実現 まとめ
  55. Copyright © 2022, Oracle and/or its affiliates 56 MLOpsプラットフォーム群 Kubeflow

    • https://www.kubeflow.org/ • https://github.com/kubeflow/ mlflow • https://mlflow.org/ • https://github.com/mlflow/mlflow/ Apache Airflow • https://airflow.apache.org/ • https://github.com/apache/airflow Tensorflow Extended(TFX) • https://www.tensorflow.org/tfx?hl=ja • https://github.com/tensorflow/tfx 参考資料
  56. Copyright © 2022, Oracle and/or its affiliates 57 モデルサービングプラットフォーム群 Tensorflow

    Serving • https://github.com/tensorflow/serving Seldon Core Serving • https://www.seldon.io/solutions/open-source-projects/core • https://github.com/SeldonIO/seldon-core Kserve • https://github.com/kserve/kserve 参考資料
  57. Copyright © 2022, Oracle and/or its affiliates 58 書籍 •

    ⼊⾨ 機械学習パイプライン︓https://www.oreilly.co.jp/books/9784873119519/ • 機械学習デザインパターン︓https://www.oreilly.co.jp/books/9784873119564/ • Kubeflow for Machine Learning︓https://www.amazon.co.jp/dp/B08L5Q9W59/ Web • 分散深層学習を⽀える技術 AllReduceアルゴリズム︓https://tech.preferred.jp/ja/blog/prototype-allreduce- library/ • 徹底解説︕Kubernetes上で動く機械学習プラットフォームKubeflow︓https://thinkit.co.jp/series/10295 デモソース • https://github.com/oracle-japan/OCHa_S5_MLOps 動画 • AIに潜む偏⾒ ⼈⼯知能における公平とは︓https://www.netflix.com/jp/title/81328723 ミートアップ • Data Engineering Study (https://forkwell.connpass.com/event/243673/) • ML Study (https://forkwell.connpass.com/event/248611/)) 参考資料