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

Step-by-Step MLOps and Microsoft Products

KoheiOgawa
August 05, 2022

Step-by-Step MLOps and Microsoft Products

▼こちらのMLOps資料のv1.1版となります。
https://speakerdeck.com/shisyu_gaku/external-20220202-kurasukai-cui-azure-machine-learningwozhong-xin-tositamsfalsemlopssoriyusiyonfalsegai-yao-toakitekutiya
全く MLOps が無い状態から徐々にステップアップする場合に具体的にどんなアーキテクチャで Azure Machine Learning やその他サービスのどの機能を使用して実装を進めていくか整理した資料を大幅に更新しました。

▼更新情報
・2022年5月末(主にMSBuild)にて 一般提供(GA)を開始した Azure ML v2 ベースの実装・機能紹介スライドへの変更
・トラフィックのミラーリングなど新しい Azure ML 機能の情報追加
・Feature Store 、MLflow、SWE 側から輸入した知見、機械学習モデルのテスト等のより詳細な技術情報を追加

KoheiOgawa

August 05, 2022
Tweet

More Decks by KoheiOgawa

Other Decks in Technology

Transcript

  1. Step-by-Step MLOps and Microsoft Products v1.1 Kohei Ogawa CSU/CSA Data&AI

    Shunta Ito CSU/CSA Data&AI Keita Onabuta FastTrack Engineer for Azure (AI/ML)
  2. 目次  MLOps 概要  Step by Step MLOps 

    Lv0 No MLOps  Lv1 DevOps no MLOps  Lv2 Automated Training  Lv3 Automated Model Deployment  Lv4 Full MLOps Automated Retraining  Azure Machine Learning における MLOps  各 Lv 別アーキテクチャと Azure サービス詳細  技術詳細  機械学習におけるコード品質  機械学習モデルのテスト  MLflow  Feature Store
  3. MLOps とは Validate Model Deploy Model Package Model Monitor Model

    Train Model モデル再学習 開発と学習 ビジネス課題を解 決する パッケージ化 モデルをどこで も使用可能にす る 挙動の検証 応答性の観点と規 制遵守の観点から デプロイ 予測値の生成にモ デルを使用する モニタリング 挙動とビジネス価 値を監視する 陳腐化したモデル をいつ置換/廃止 するか決める 機械学習ライフサイクルを管理する手法・概念、あるいは ML における DevOps
  4. 機械学習システム D. Sculley et. al. ,“Hidden Technical Debt in Machine

    Learning Systems,” Google, NIPS2015. Figure 1: Only a small fraction of real-world ML systems is composed of the ML code, as shown by the small green box in the middle. The required surrounding infrastructure is vast and complex. ML Code Configuration Data Collection Data Verification Feature Extraction Machine Resource Management Analysis Tools Process Management Tools Serving Infrastructure Monitoring
  5. 課題に対する技術的アプローチ 自動化/ 可観測性 • コード駆動のアセット生成とデプ ロイ • 再現性と検証可能性を持ったパイ プライン •

    アセット間の依存関係が明示され、 集中管理された管理体制 検証 • SWE で培われた品質管理のベスト プラクティス適用 • オフラインでのモデル品質検証、 バイアスの最小化と説明性の確保 • メトリックに基づく検証 再現性/監査可能性 • 制御されたロールアウト機能 • 予測性能と期待性能のライブ比較 • ドリフトの監視とモデル改善に使用 できるフィードバック
  6. MLOps を実現するための要素 People • チームで共同で開発を進め、他 人が引き継ぐことを前提とした 品質確保を継続的に行う体制構 築と文化醸成 • 無駄なくスキルをビジネス価値

    へと転換するために必要な体 制・技術への金銭的/人的投資 Process • 学習やデプロイプロセス等、機 械学習の一連のプロセスに含ま れる定型的処理の自動化 • アセットの集中管理と共有によ る作業効率の向上 • 再現性確保 Platform • アセットを集中管理し共有する ためのハブ • 運用中のパイプライン、インフ ラ、製品を監視し、期待通りの 動作をしていないことを検知す ることが可能な仕組み • 必要に応じて可及的速やかかつ 安全に本番への機能投入を可能 とするシステム
  7. ML プロジェクトのループ構造  Inner Loop  モデルの探索と仮説検証  開発環境で人間がインタラク ティブに試行

     Middle Loop  本番投入可能なモデルの探索  再実行可能  Outer Loop  モデルの継続的監視と メンテナンス モニタリング 自動学習 本番デプロイ 推論 学習パイプ ライン パラメーター チューニング モデルQA 学習 評価 モデル選定  「MLOps」は各要素およびループの間をつなぎ、円滑化を目指す
  8. 成熟度モデル https://docs.microsoft.com/ja-JP/azure/architecture/example-scenario/mlops/mlops-maturity-model https://techcommunity.microsoft.com/t5/ai-machine-learning-blog/mlops-maturity-model-with-azure-machine-learning/ba-p/3520625 概要 技術 文化 Level 0 No MLOps

    • 機械学習モデルのライフサイクル全体を 管理することは困難 • チームは別々で、リリースは困難 • ほとんどのシステムは "ブラック ボックス " として存在し、デプロイ時およびデプロ イ後のフィードバックはほとんどなし • 手動によるビルドとデプロイ • モデルおよびアプリケーションの手動に よるテスト • モデルのパフォーマンスの一元的追跡な しモデル学習は手動 • まず動くものを作り上げ、スモールス タートでプロジェクトを推進する Level 1 DevOps no MLOps • Level 0 よりもリリースの苦労は少ないが、 新しいモデルごとにデータ チームに依存 • 運用段階でのモデルのパフォーマンスに 関するフィードバックは依然として限ら れる • 結果の追跡および再現が困難 • 自動ビルド • アプリケーション コードの自動テスト • チーム内でのコード共有とレビューを行 う • パイプラインなどの自動化技術を活用し て、低摩擦に継続的に本番投入する • テストなどによりコード品質に配慮する Level 2 Automated Training • トレーニング環境は完全に管理され、追 跡可能 • モデルの再現が容易 • リリースは手動であるが、摩擦は少ない • 自動化されたモデルの学習 • モデル学習のパフォーマンスを一元的に 追跡 • モデル管理 • 機械学習固有の性質に配慮した自動化を 行う • 機械学習実験の再現性確保に注意を払う Level 3 Automated Model Deployment • リリースは低摩擦で自動 • デプロイから元のデータまで完全に追跡 可能 • 環境全体 (学習 > テスト > 運用) を管理 • デプロイするモデルのパフォーマンスに 関する A/B テストを統合 • すべてのコードのテストを自動化 • モデルの学習性能を一元化 • 機械学習モデルの品質に配慮する • 投入先ソフトウェア開発チームと連携し た継続的モデルデプロイとその自動化を 推進する Level 4 Full MLOps Automated Retraining • システムを完全自動化し、監視を容易化 • 運用システムは、改善方法に関する情報 を提供。場合によっては、新しいモデル で自動的に改善 • ゼロ ダウンタイム システムに近づく • モデル学習とテストを自動化 • デプロイされたモデルからの詳細で一元 化されたメトリック • 機械学習モデルの経時的な劣化を前提と した監視体制を整備する • 手動で実行する必要が無い部分について 自動化を進め、「最大効率で機械学習モ デルを運用できる体制」を目指す
  9. Level 0 – No MLOps  インタラクティブかつ実験的に有益なモデルを探す  環境構築、データの取得、デプロイ、テストは手動 データソース

    データ準備 良いモデルの発見 アルゴリズム選定 手動デプロイ 標準化されていない ML 環境 ML エンジニア データサイエン ティスト 外部ソースからの データの読み込み
  10. 課題・チャレンジ 再現性 • 個々にデータサイエンティストが独自にカスタマイズした機械学習ツールやコー ド、Python/Rパッケージを使い学習モデルのジョブを作成しており、組織全体 に共有されず学習モデルのジョブを再現することは非常に困難 品質とセキュリティ • テストが設定されていない •

    テストポリシーが組織横断的に設計されていない • 機械学習基盤および成果物が管理されておらず、セキュリティ上の懸念がある スケーラビリティ • 大規模なジョブを実行するのに十分なパワーの計算リソースがない • 高価な計算リソースが属人的に管理・使用されて組織内で共有されていないため、 コスト増につながる • 機械学習用のデータソースが整備されておらず、学習データの取得に手作業が必 要
  11. Lv0 → Lv1  機械学習プラットフォームの整備  チーム・組織で共有の機械学習プラットフォームを利用していること  コードを集約するリポジトリホスティング環境の整備 

    テストの自動化  少なくともコードに対するテスト項目がルール化されており、テストの実行が自動化できて いること  データ基盤が整備され始めていること
  12. Level 1 – DevOps no MLOps  データパイプラインとマネージドな ML 環境が整備される

     テストが整備され始める データパイプライン データカタログ データ準備 良いモデルの発見 アルゴリズム選定 手動デプロイ マネージドな ML 環境 コードレベルの テスト ML エンジニア データサイエンティスト データ エンジニア Capture  コード コードリポジトリ
  13. Level 2 – Automated Training  コード、データ、モデルがバージョン管理され、実験が記録される  モデルの再作成が自動化される データ

    準備 アルゴリズム 選定 良いモデル の発見 Capture  データセット  環境  コード (スナップショット)  ログ/メトリック  生成物 履歴の取得と保存 モデル登録 機械学習パイプライン データパイプライン データカタログ ML エンジニア データサイエン ティスト データ エンジニア MLOps エンジニア
  14. 課題・チャレンジ デプロイ • モデルの用途によって推論環境の実装方法が毎回異なり、デプロイ手順が散在し ている • デプロイ手順が属人化しており共有されておらず、再実行が難しい 品質とセキュリティ • 学習されたモデルの挙動と性能が求める要件を満たしているか検証する手順

    (QA) が標準化されていない • 機械学習モデルのテスト工程が全く自動化されていない • ステークホルダーにモデルの解釈可能性、説明可能性、公平性等のモデルの信頼 性について説明をする必要がある
  15. Lv2 → Lv3  推論環境に合わせたデプロイパイプラインの実装  データを受け取って機械学習モデルによる推論結果を返すコンテナをビルドし Kubernetes 等のコンテナを動かす基盤上にデプロイする一連の作業を実行するパイプラインを構築※ 

    データソースからデータを取得し、機械学習モデルによる推論結果を得てデータを格納する バッチ処理を実行するパイプラインを構築する※  モデルの検証・品質確認を行う仕組みの実装  テストデータ(ゴールドデータ)による精度検証の自動化  説明性、公平性の確認 ※代表的な機械学習モデルのデプロイパイプライン、実際にはユースケースに応じた構築が必要
  16. Level 3 – Automated Model Deployment  モデルのパッケージ化、品質確認、デプロイが半自動的に行われる パッケージ化 品質確認

    リリース Environments コード 説明 データセット イベント & 通知 DevOps 統合 (CI/CD) Model Registry MLOps エンジニア QAエンジニア
  17. 課題・チャレンジ 監視 • 推論環境およびモデルの推論性能の監視が十分でない • データの監視が十分でない • 再トレーニングの基準となる KPI およびその閾値の設定ができていない

    品質とセキュリティ • デプロイ後モデルが適切なタイミングでアップグレードされていない • 新しいモデルを本番の推論環境にデプロイする場合に、ユーザーへの影響を最小 化できていない スケーラビリティ • システム全体に自動化可能にも関わらず手動実行が必要な部分が多数存在する
  18. Lv3 → Lv4  機械学習モデルの性能劣化や劣化につながる要因を検知するための 監視体制を整備する  機械学習モデルの性能を評価できる指標の洗い出し  指標の算出に必要なログの収集とニアリアルタイムな指標算出の仕組み構築

     データセットの変動を検知する仕組みの構築  自動化の仕組みを実装する  学習からデプロイまでの各工程を間断なく処理する仕組みの実装※1  ブルー・グリーンデプロイと新モデルの挙動を自動的に監視対象に含める仕組みの構築  異常検知時の通知や定型的作業の自動実行  再学習・再展開を実行する指標の閾値設定とトリガーの実装※2 ※1 運用方針に応じて、QA やデプロイ時等、人間による承認を間に挟むことは許容される ※2 新しいモデルが閾値を超えられない or より劣化した場合にロールバックする基準も同時に定める必要がある
  19. Level 4 – Full MLOps Automated Retraining データパイプライン 学習パイプライン デプロイ

    パイプライン データ準備 良いモデル の発見 アルゴリズム 選定 データセット モデル テスト・検証 ML エンジニア データサイエン ティスト データ エンジニア QAエンジニア MLOps エンジニア 検証 ML API ログ データ変動 再学習トリガー アプリ Kubernetes インフラ エンジニア ソフトウェア エンジニア ログ モニタリング ML エンジニア データサイエン ティスト QAエンジニア MLOps エンジニア
  20. Azure Machine Learning のキー要素 Models Environments Experiments & Run Deployment

    Pipelines Datastores & Datasets Compute Target Data Labelling Workspace
  21. Azure Machine Learning の全体像 Workspace に各リソースとアセットが紐づく Azure Kubernetes Service Azure

    Container Instance Data Science Virtual Machine Azure Databricks Azure Synapse Analytics Remote Compute (ローカル, VM) Azure HDInsight Linked Services Datastores Compute targets Environments Experiments Pipelines Datasets Models Endpoints マネージド リソース 依存 Compute instances Compute clusters Workspace Azure Key Vault Azure Container Registry Azure Storage Account Azure Application Insights アセット
  22. Azure Machine Learning の基本的な使い方 31 • GPU 搭載のサーバー を調達 •

    電源確保&ネット ワークに接続 • Python 環境と Jupyter をセットアッ プ • GPU のドライバ/ライ ブラリをインストー ル • データを吸出して CSVやParquet等の ファイル形式で貰う • データの前処理 • アルゴリズムの試行 とパラメーター探索 • Dockerfile を書いて モデルを収めたコン テナを作成 • Flask / fastAPI など で HTTP エンドポイ ントをセット • Kubernetes 等に コンテナをデプロイ • 計算リソースを アタッチ • Azure ML Compute Instance/Cluster を 展開 • Environment を 読み込む • Compute Instance を そのまま使う • Datastores として データソースをア タッチして、Dataset を作成 • Auto ML でモデルを 自動作成 • 大規模計算リソース で効率的に探索 • 実験/モデルを記録 • 保存したモデルにメ タデータを付与する • エントリスクリプト の作成 • アタッチした推論用 のリソースにデプロ イ 計算リソースの用意 環境構築 データの吸出し 前処理/モデルの作成 推論コンテナの作成 デプロイ 従来 Azure Machine Learning
  23. Level 0 – No MLOps Train Mount/ Download Azure Data

    Lake Storage Gen2 Compute Instance Model Deploy manually Managed Endpoint (Online/Batch) Local Conda YAML PIP requirements etc container Azure Machine Learning Components DSVM
  24. 利用サービス サービス 機能 目的 Azure Data Lake Storage Gen2 •

    データの保存 Azure Machine Learning Compute Instance • 機械学習の実行 • 開発 Managed Online Endpoint • モデルの API 化
  25. Data Science Virtual Machine  一通り機械学習を実行するた めに必要なソフトウェアがプ リセットされた VM 

    JupyterLab + JupyterHub が デフォルトで稼働 https://docs.microsoft.com/ja-jp/azure/machine-learning/data-science-virtual-machine/overview
  26. Level 1 – DevOps No MLOps Train Mount/ Download Azure

    Data Lake Storage Gen2 Compute Instance Model Deploy manually Managed Endpoint (Online/Batch) Local Conda YAML PIP requirements etc container Code Checkout GitHub Test Code Test Data Check Data Prep Data Azure Machine Learning Components
  27. 利用サービス サービス 機能 目的 Azure Synapse Analytics Synapse Pipelines •

    ETL Azure Data Lake Storage Gen2 • データの保存 GitHub リポジトリ • コードの集約 GitHub Actions • テストの実行 • コンテナのビルド • デプロイ Azure Machine Learning Compute Instance • 機械学習の実行 • 開発 Datatsore • データソースへの接続 Data • データセットの定義 Managed Online Endpoint • モデルの API 化
  28. Azure Repos  Azure DevOps に含まれる ソースコード管理機能  Git※もしくは TFVC

     容量無制限  AAD ベースの権限管理 https://azure.microsoft.com/ja-jp/services/devops/repos/ ※ Azure Machine Learning は Git と連携可能 (TFVC は未対応)
  29. Workspaces  Azure Machine Learning 使用時に作 成したあらゆる成果物を集約した一元 的な作業スペースを提供  Workspace

    は複数人で共有すること ができ、RBAC によって Workspace 上で可能な操作を制限することができ る
  30. Data and Data Stores  Datastores は Azure のストレージ サービスに対する接続情報を保持する

    ために使用される  Data は Datastores を使用して接続さ れたデータソース内に保存されたデー タを参照する  Data と Datastores により、機械学習 ジョブとデータが疎結合になる 認証情報 username: admin password: p@s5w0rd! ストレージ接続情報 リソースID: /subscriptions/902f23… Datastores pandas/spark データフレーム Data ファイル
  31. Azure ML CLI v2  yaml 形式で記述した静的な定義ファイル + az ml

    コマンドを使用 した Azure ML の CLI  Azure Resource Manager への API コールによってジョブ実行、パ イプライン定義、デプロイなどを実行する https://docs.microsoft.com/ja-jp/azure/machine-learning/concept-v2#azure-machine-learning-cli-v2
  32. CLI v2 ジョブ実行 https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-train-cli $schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json command: | ls ${{inputs.data_dir}}

    echo "--iris-csv: ${{inputs.data_dir}}/iris.csv" python hello-iris.py --iris-csv ${{inputs.data_dir}}/iris.csv code: src inputs: data_dir: type: uri_folder path: wasbs://[email protected]/ environment: azureml:AzureML-sklearn-1.0-ubuntu20.04-py38-cpu@latest compute: azureml:cpu-cluster az ml job create -f jobs/basics/hello-iris-folder.yml --web
  33. マネージドリソース  Azure Machine Learning 配下のマネージドなコンピュー ティングリソース • Compute Instances

    • 単一の VM • 様々なマシンスペック (GPU 搭載含む) から自由に選んで作成可能 • Notebook (Azure ML Studio) の他、JupyterLab、VSCode 等を使用したアド ホックな分析を行うための計算リソース • Compute Clusters • オートスケールするクラスター • 様々なマシンスペック (GPU 搭載含む) から自由に選んで作成可能 • 1台の VM ではこなしきれない大規模な処理をこなすための計算リソース
  34. Level 2 – Automated Training Mount/Download Azure Synapse Pipeline Azure

    Data Lake Storage Gen2 Job Environments Azure Container Registry Data Models Managed (Online/Batch) Endpoint Code Checkout Managed (Online/Batch) Endpoint GitHub Model Training Code Test, Data Check Model Training Model Evaluation Responsible AI container Compute Instance Compute Clusters build&push build&push job submit experiment log/metric Register model deploy manually deploy manually Data Prep Training (pipeline) Azure Machine Learning Python SDK/CLI Azure Machine Learning Components
  35. 利用サービス サービス 機能 目的 Azure Synapse Analytics Synapse Pipelines •

    ETL Azure Data Lake Storage Gen2 • データの保存 Github リポジトリ • コードの集約 GitHub Actions • テストの実行 • コンテナのビルド • デプロイ • パイプラインのキック Azure Machine Learning Compute Instance • モデル開発と分析 Compute Clusters • ジョブ・パイプラインの実行 Environments • 実行環境の保存 Datatsore • データソースへの接続 Data • データセットの定義 Jobs • 実験の記録 Models • モデルの保存 Pipelines • パイプラインの構築 Azure Container Instances • コンテナのホスト
  36. マネージドリソース  Azure Machine Learning 配下のマネージドな コンピューティングリソース • Compute Instances

    • 単一の VM • 様々なマシンスペック (GPU 搭載含む) から自由に選んで作成可能 • Notebook (Azure ML Studio) の他、JupyterLab、VSCode 等を使用したアド ホックな分析を行うための計算リソース • Compute Clusters • オートスケールするクラスター • 様々なマシンスペック (GPU 搭載含む) から自由に選んで作成可能 • 1台の VM ではこなしきれない大規模な処理をこなすための計算リソース
  37.  Compute Targets は学習スクリプト を実行するか、モデルのデプロイ先と して使用するコンピューティングリ ソースを表す  DSVM、Azure ML

    Compute リソース、 Kubernetes など幅広い計算リソース をサポート Compute Targets Compute Target 学習 デプロイ ローカルコンピューター ✓ Azure 上の Linux VM (例: Data Science Virtual Machine) ✓ Azure ML Compute ✓ Azure Databricks ✓ Azure Data Lake Analytics ✓ Apache Spark for HDInsight ✓ Azure Container Instance ✓ Azure Kubernetes Service ✓ Azure IoT Edge ✓ Field-Programmable Gate Array (FPGA) ✓ Azure Functions (preview) ✓ Azure App Service (preview) ✓ Azure Synapse (preview) ✓ Azure Arc (preview) ✓ 現在サポートされている Compute Targets
  38. Azure Databricks  オートスケールするマネー ジド Spark クラスター  Databricks Notebooks

     Jupyter Notebook 互換  SQL、Scala、Python 等をサポート  Notebook を Azure ML Pipleines に組み込み可能 https://docs.microsoft.com/ja-jp/azure/databricks/scenarios/what-is-azure-databricks
  39.  Azure Machine Learning Environments は機械学習を実行す る環境のカプセル化を提供する  Environment では学習や推論スクリ

    プト周辺の Python パッケージ、環 境変数、ソフトウェアの設定、ラン タイム(Python、Spark や Docker 等)を指定する Azure ML Environments Environment 1 種類: conda environment.yml Environment 2 種類: pip requirements.txt Environment 3 種類: Dockerfile コンテナ (必要に応じて自動 でビルドされる) Compute Targets
  40.  Experiment は複数の Job をグループ 化したもので各 Job を管理し、メト リックを横断的に可視化する 

    Job は1回の実験についてのパラメー ター、メトリック、生成物、ログ等を 保存し、実験の再現性確保を支援する Azure ML Jobs and Experiments Experiment 売上予測モデル作成 Job 1 モデル: LightGBM パラメーター: n_estimator=50, num_leaves… メトリック: R2=0.823 Job 2 モデル: LightGBM パラメーター: n_estimator=30, num_leaves… メトリック: R2=0.802 Job 3 パラメーターチューニング Child Job 1 パラメーター: n_estimator=50, num_leaves… メトリック: R2=0.823 Child Job 2 パラメーター: n_estimator=40, num_leaves… メトリック: R2=0.802
  41.  Model は学習が完了したモデルの状態 を保存したファイルを含むオブジェク トである  Model Registry は Model

    をバージョ ニングして保管し、 Model を使用し たエンドポイントや Model を生成し た Run と関連付けして管理する  MLflow Models との高い互換性 Azure ML Models and Model Registry Model A ver.1 ver.2 Model B ver.1 ver.2 ver.3 Model Registry 任意のモデ ルに関連し たファイル Model
  42.  1つの Pipeline は完成した機械学習 タスクのワークフローを表し、機械 学習の各サブタスクはパイプライン を構成する Step として内包される 

    Pipeline は REST エンドポイントを パラメーターを備え、パラメーター を受け取ることで動作をカスタマイ ズすることができる Azure ML Pipelines データ 準備 アルゴリズム 選定 良いモデル の発見 データ 準備 モデル 学習 推論と 結果の保存 データ 準備 モデル 学習 推論と 結果の保存
  43. Auto ML 特徴量エンジニアリング、アルゴリズムとハイパーパラメーターの 選択を自動化し、データに対して最適なモデルを探索する機能 https://docs.microsoft.com/ja-jp/azure/machine-learning/concept-automated-ml ユーザーによる 入力 特徴量化 & 特徴量

    エンジニアリング アルゴリズム 選択 ハイパーパラメー ター チューニング モデル リーダーボード Dataset 設定・制約 76% 34% 82% 41% 88% 72% 81% 54% 73% 88% 90% 91% 95% 68% 56% 89% 89% 79% 順位 モデル スコア 1 95% 2 76% 3 53% …
  44. Level 3 – Automated Model Deplyment Mount/Download Azure Synapse Pipeline

    Azure Data Lake Storage Gen2 Job Environments Azure Container Registry Data Prep Data Models Managed (Online/Batch) Endpoint Code Checkout Managed (Online/Batch) Endpoint GitHub Model Training Code Test, Data Check Model Training Model Evaluation Responsible AI Deploy to Stage Deploy to Stage Model Test Responsible AI container Gated approval Deploy to Prod Deploy to Prod Model Test ResponsibleAI Safe Rollout Compute Instance Compute Clusters build&push Training (pipeline) Deployment (pipeline) build&push job submit experiment log/metric Register model deploy automatically deploy automatically Event Grid (Model Trigger) (Code Trigger) model register Azure Machine Learning Python SDK/CLI Azure Machine Learning Python SDK/CLI Azure Machine Learning Components Azure Machine Learning Python SDK/CLI
  45. 利用サービス サービス 機能 目的 Azure Synapse Analytics Synapse Pipelines •

    ETL Azure Data Lake Storage Gen2 • データの保存 Github リポジトリ • コードの集約 GitHub Actions • テストの実行 • パイプラインのキック Azure Machine Learning Compute Instance • モデル開発と分析 Compute Clusters • ジョブ・パイプラインの実行 Datatsore • データソースへの接続 Data • データセットの定義 Jobs • 実験の記録 Models • モデルの保存 Pipelines • パイプラインの構築 • 学習パイプライン • デプロイパイプライン • 推論パイプライン Managed Online Endpoint • モデルの API 化
  46. Azure ML Managed Endpoints Managed Online Endpoints  SKU とスケールの設定のみ、インフラリソース

    の作成・管理不要  Azure Monitor による SLA の重要指標の監視  リアルタイムログ、ログ分析、ローカルデバッ グによる迅速なデバッグ  インプレースアップデートとブルー・グリーン デプロイによる安全なロールアウト  マネージド ID によるシームレスなアクセス  CLI、ARM テンプレート、GUI によるデプロイ のサポート Managed Batch Endpoints  合理的な YAML ベースのエクスペリエンス  宣言的な ARM テンプレート  MLflow Models によるノーコードデプロイ  バッチスコアリングのための一貫性のある再利 用可能なエンドポイント  オンラインとバッチスコアリング間の統合され た概念 https://docs.microsoft.com/ja-jp/azure/machine-learning/concept-endpoints
  47. Level 4 – Full MLOps Automated Retraining Mount/Download Azure Synapse

    Pipeline Azure Data Lake Storage Gen2 Job Environments Azure Machine Learning Python SDK/CLI Azure Container Registry Data Prep Data Models Monitoring Azure Machine Learning Python SDK/CLI Managed (Online/Batch) Endpoint Code Checkout Managed (Online/Batch) Endpoint GitHub Model Training Code Test, Data Check Model Training Model Evaluation Responsible AI Deploy to Stage Deploy to Stage Model Test Responsible AI Azure Monitor Azure Insights Azure Machine Learning Components container Gated approval Retraining Trigger Deploy to Prod Deploy to Prod Model Test ResponsibleAI Safe Rollout Azure Machine Learning Python SDK/CLI Compute Instance Compute Clusters build&push Training (pipeline) Deployment (pipeline) Data Science team Infra team Alert Dashboard build&push job submit experiment log/metric auto scale log/metric auto scale log/metric Register model deploy automatically deploy automatically Event Grid (Model Trigger) (Code Trigger) Azure Managed Grafana Event Grid model register data drift
  48. 利用サービス サービス 機能 目的 Azure Synapse Analytics Synapse Pipelines •

    ETL Azure Data Lake Storage Gen2 • データの保存 GitHub リポジトリ • コードの集約 GitHub Actions • テストの実行 • パイプラインのキック Azure Machine Learning Compute Instance • モデル開発と分析 Compute Clusters • ジョブ・パイプラインの実行 Datatsore • データソースへの接続 Data • データセットの定義 Jobs • 実験の記録 Models • モデルの保存 Pipelines • パイプラインの構築 • 学習パイプライン • デプロイパイプライン • 推論パイプライン Managed Endpoint • モデルの API 化 Azure Monitor • 監視 Application Insights • 監視 Azure Managed Grafana • 監視
  49. Dataset Monitor (Preview)  データセットの変動(ドリ フト)を検知する Azure ML の機能 

    データセット作成機能と統 合され、ベースラインデー タセットと現在のデータの 差分を監視  ドリフトに関するアラート を設定し、モデルの陳腐化 に対処 データセットでデータ ドリフトを検出する (プレビュー) - Azure Machine Learning | Microsoft Docs
  50. Azure Monitor  ログの収集、分析とその後の対応をカバーするサービス Metrics Logs Application Containers VM Monitoring

    Solutions Insights Dashboards Views Power BI Workbooks Visualize Metrics Explorer Log Analytics Analyze Alerts Autoscale Respond Event Hubs Ingest & Export APIs Logic Apps Integrate Azure Monitor Custom Sources Application Operating System Azure Resources Azure Subscription Azure Tenant
  51. Azure Event Grid  イベントを検知し、イベントハンドラーに送信するサービス  Azure Machine Learning からは以下イベントをサポート

     Microsoft.MachineLearningServices.RunCompleted  Microsoft.MachineLearningServices.ModelRegistered  Microsoft.MachineLearningServices.ModelDeployed  Microsoft.MachineLearningServices.DatasetDriftDetected  Microsoft.MachineLearningServices.RunStatusChanged  通知送信、WebHooks による API キック、Functions や Logic Apps によるコード実行等に繋げることで自動化 ML ワークフロー内でイベントをトリガーする (プレビュー) - Azure Machine Learning | Microsoft Docs
  52. Linter と Formatter Linter  ルールに則ったコードの記述ができ ているか静的に解析するツール  実行時にエラーにならないが、バグ の温床やコード品質を下げる原因と

    なるような記述を特定することがで きる Formatter  コードのスタイルを確認・自動修正 するツール  改行やインデントなどを自動的に修 正し、コードの見た目を整える https://black.readthedocs.io/en/stable/index.html
  53. 機械学習における Linter と Formatter  不必要な import や未使用の変数など、実験を繰り返す中で混入し たコードの見通しを悪化させる要素を取り除くことができる 

    コードの形式をある程度の範囲で自動的に揃えることができる 複数人でコラボレーションする際の摩擦低減につながる  特に初期段階においては導入コストが低く効果が大きい
  54. 型ヒント Python は型を明示的に記述しな くても動作するが、任意で型ヒン トを付与することができる  可読性が向上する  型ヒント付与により IDE

    の支援 が強力に  型の静的解析を行うことで不正 な値が渡されることを防ぐ  必須ではないため徐々に導入することが可能
  55. 機械学習における型ヒント  受け取るデータ形式を明示・制約することで意図しないエラーを防 ぐ  Int 型と Float 型の取り違えによるミス (除算で起こりがち)

     渡す型のミスによるエラーや NaN 、 Inf の発生  機械学習では各コンポーネントやモデルが独自の型や形式を要求す ることが多く、開発者当人以外のエンジニアがコードを触る際の可 読性向上は効果が大きい  tensor か pandas の DataFrame か Spark の DataFrame か ndarray か list か、あるいはラ イブラリが備える独自型か  入力として複数の tensor を要求するモデルへの渡し方  パイプラインのコンポーネントとして実装する場合の入出力インターフェースの明示
  56. 機械学習におけるテストの考慮事項  テストを書く対象となるコード  テストを書く意義が薄いコードも存在  使い捨てのコンポーネントにテストは必要か?(使い捨てでも状況によって必要なこともある)  ライブラリの薄いラッパー、ほとんどライブラリ側のテストで検証済みのことを再検証するような場合 

    テストの粒度  実装するテストの粒度を費用対効果に基づいて決定する  状況に合わないテスト戦略はむしろリソースを無駄に消費する E2E 結合 単体 • ユーザー環境に 近い • 実行速度が遅い • 高コスト • 局所的(問題箇所 を絞りやすい) • 実行速度が速い • 低コスト  例1: プロトタイピング (jupyter notebook) と本番投入 用コード (python スクリプト) でテストの有無を分ける  例2: 使い回すコンポーネント向けのユニットテストを 優先し、E2Eテストはテストデータを用いたドライラン で代替して実装しない
  57. MLflow とは  機械学習のライフサイクルを管理する OSS プラットフォーム  実験管理、コードのパッケージ化、モデル管理と登録の4要素 Tracking 実験の記録とクエリ

    (コード、データ、 構成設定、結果) Projects コードのパッケージ化 による再現性を 実現する形式 Models モデルの 様々な環境への デプロイメント Model Registry 一元的なモデルの ライフサイクル管理
  58. MLflow Tracking Server  実験のログやモデルを保存するための API サーバー  Backend Store

     ローカルファイルか RDB (MySQL, PostgreSQL, SQLite, SQL Server)  Artifact Store  SFTP, NFS, HDFS などでアクセス可能なストレージかクラウド上のブ ロックストレージ  MLflow の Client と REST API で通信  各種実験ログは Backend Store に保存される (1a, 1b)  モデルやその他のファイル群 (log_artifact で保存される全て のファイル) は Artifact Store に保存され、 URI が Backend Store に保存される (2a, 2b, 2c) https://www.mlflow.org/docs/latest/tracking.html#mlflow-tracking-servers
  59. Azure Databricks + MLflow  Azure Databricks の一部としての MLflow 

    外部から MLflow Tracking Server として利用可能 Azure Infrastructure ML Lifecycle Management integrations ML Runtime Optimized Databricks runtime engine Databricks I/O Delta Lake TensorFlow PyTorch Scikit-Learn MLflow Serverless Optimized Apache Spark scikit Azure Active Directory Azure Virtual Machine Scale Sets Azure Data Lake Storage Metrics Artifacts Models
  60. 実験 Logging API Tracking URI Model API Azure Machine Learning

    + MLflow  MLflow Tracking Server 互換 MLflow を使用して Azure ML に実験やモデルを記録 Metrics Artifacts MLflow Tracking Server 互換エンドポイント Azure Machine Learning Environments Azure Machine Learning Experiments Azure Machine Learning Models Models Azure Machine Learning Endpoints Metrics Artifacts Models API 実験管理・記録 デプロイ
  61. Azure Machine Learning と MLflow の関係 SDK v1  ログ記録の選択肢の1つ

    機械学習のコードから Azure ML 依 存的なコードの大半を排除できる SDK v2 (preview)  唯一のログ記録の手段  MLflow Models 形式のサポート  MLflow Projects によるジョブ定義 と実行 (preview) v2 ではログ記録で MLflow が必須 ログ記録以外の機能サポートも大幅 に強化 https://docs.microsoft.com/ja-jp/azure/machine-learning/v1/how-to-use-mlflow https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-use-mlflow-cli-runs?tabs=mlflow
  62. Azure ML as MLflow Tracking Server https://www.mlflow.org/docs/latest/tracking.html#mlflow-tracking-servers 1. Azure ML

    の Python SDK を使用して Workspace と接続 2. MLflow Tracking Server 互換のトラッキング URI を発行 3. MLflow に set する ml_client.workspaces.get(). mlflow_tracking_uri ws.get_mlflow_tracking_uri() v2 v1 mlflow.set_tracking_uri(ml_client.workspaces .get().mlflow_tracking_uri) mlflow.set_tracking_uri(ws.get_mlflow_tracking_uri() ) v2 v1
  63. MLflow Tracking による実験管理  MLflow Tracking  機械学習の logging API

     あらゆるライブラリ・環境に対応  run の単位で記録され、run は experiment に集計される  Automatic Logging  記録対象  Parameter : ランダムフォレストモデルのツリーの数などのハイパーパラ メータ  Metric : RMSE、AUC などの精度指標  Artifact : 画像、モデルファイルなどの任意のファイル  Source : 学習で用いたコード名 (Git commit hash)、MLflow Project 名 etc Tracking 実験の記録とクエリ (コード、データ、 構成設定、結果)
  64. MLflow Model ノーコードデプロイの条件  フレームワークの種類と入出力形状を特定して いること  フレームワークの種類は mlflow.pytorch のようにサブモジュール

    レベルで特定する  使用しているフレームワークがビルトイン (右記) でない場合は Python Function を使用し、 メンバー関数として predict を持つ クラスのインスタンスを登録する  入出力形状は mlflow.models.signature.infer_signature に入出力 サンプルを与えて得られる signature を渡すことで決定する
  65. 特徴量 booking datetime customer_id driver_id Trip_completed 10001 2021-03-17 19:31 1010

    5010 True 10002 2021-03-18 19:31 1010 5010 False 10003 2021-03-19 19:31 1010 5010 True 10004 2021-03-20 19:31 1010 5010 False datetime driver_id conv_rate acc_rate avg_daily_trips 2021-03-17 19:31 5010 0.229297 0.685843 861 2021-03-17 20:31 5010 0.781655 0.861280 769 2021-03-17 21:31 5010 0.150333 0.525581 778 2021-03-17 22:31 5010 0.951701 0.228883 570 conv_rate acc_rate avg_daily_trips Trip_completed 0.229297 0.685843 861 True 0.781655 0.861280 769 False 0.150333 0.525581 778 True 0.951701 0.228883 570 False ML Model 入力 出力 特徴量エンジニアリング • カテゴリ変数の変換(label encoding etc…) • 欠損値の変換(平均値、予測値、代表値etc..) • 新たな特徴量の作成 ⇒特徴量の管理がしたい(できる) ⇒ Feature Storeの出番
  66. Feature Storeの構成 共通 特徴レジストリ & 管理 特徴量 モニタリング 再利用性 統一性(重複の防止)

    汎用性 特徴量の取り込み & 計算 (バッチ & ストリーミング ソース) 共通プロバイダー • バッチプロバイダー: 高スループット(学習) • オンラインプロバイダー:低レイテンシー (推論) 利用時・方法における特徴量の一貫性 監視性 Feature Store が解決する問題
  67. Feature Store Open- Source Point-in-time Support Data Source Feature Transformation

    Feature materialization Performance Feature Type Feathr Yes Point-in-time対応。 様々なタイムスタン プフォーマットをサ ポート。 主要なソースとファイ ル形式(csv, parquet, avro, orc, delta lake) をサポート declarativeフレームワークによるネ イティブな変換のサポート • 行レベル、ウィンドウ集計変換 • オフライン、ストリーミング、 オンライン変換をサポート Python API and configuration files + CLIをサポート • スケールあり。 • 低レベルのSpark 最適化が組み込ま れており、パ フォーマンスが高 い。 テンソル型(for deep learning/ML) + プリミティブ型 Databricks Feature Store No time-travelのみ (point-in-timeは未対 応) オフライン: ・Delta Lake オンライン: ・Azure Database for MySQL ・Azure SQL Database ・Amazon Aurora ・Amazon RDS MySQL etc… ネイティブな変換は未サポート • PySpark notebookによる一般的 なデータ処理のみ。 • PySparkの知識が必要 • オンライン機能変換ができない • Sparkにベンダロックされてい る。 Notebookで手動管理 Sparkの最適化機能 はないが、スケール あり プリミティブ型 Feast Yes • Point-in-timeで、 タイムスタンプ のフォーマット が固定されてい る必要あり • 時系列でない データでもタイ ムスタンプは必 ず必要 主要なソースに対応。 ただ、CSVは未対応。 詳細はここに記載あり。 feast-dev/feast: Feature Store for Machine Learning (github.com) ・Pandas(Pythonライブラリ)を用 いた行レベル変換のみ CLIサポート • シングルノード • インメモリ • スケールしない プリミティブ型 Google Vertex AI Feature Store No time-travelのみ (point-in-timeは未対 応) googleのデータソース のみ。 Not available GCP UI経由のみ BigQueryの性能に依 存 プリミティブ型
  68. Azureと各Feature Storeのサービスとの組み合わせ方 Feathr • Feathr: LinkedIn’s feature store is now

    available on Azure | Azure Blog and Updates | Microsoft Azure • Open sourcing Feathr – LinkedIn’s feature store for productive machine learning | LinkedIn Engineering • And checkout the GitHub repo here: https://github.com/linkedin/feathr  Feast • Bringing Feature Store to Azure - from Microsoft Azure, Redis, and Feast Community • And checkout the GitHub repo here: https://github.com/feast-dev/feast • Azure/feast-azure: Azure plugins for Feast (FEAture STore) (github.com)
  69. Feathr component Cloud Integrations Offline store – Object Store Azure

    Blob Storage Azure ADLS Gen2 AWS S3 Offline store – SQL Azure SQL DB Azure Synapse Dedicated SQL Pools (formerly SQL DW) Azure SQL in VM Snowflake Online store Azure Cache for Redis Feature Registry Azure Purview Compute Engine Azure Synapse Spark Pools Databricks Machine Learning Platform Azure Machine Learning Jupyter Notebook File Format CSV Parquet ORC Avro Delta Lake Feathr on Azure Integration with Cloud Services
  70. 機械学習におけるテストの考慮事項 機械学習モデルの「テスト」は難しい  通常テストで用いられる同値クラスの代表値を用いたテスト手法が使用できない  そもそも「境界」が自明ではなく、それゆえに機械学習を使っているという事情も  わずかな入力の差分が結果に大きな変化を与えることがある  一般に入力の全パターンに対して網羅的にテスト結果を得ることは難しい

    テストを踏まえて修正することも難しい  問題のあるパターンを発見した場合に、その問題だけをピンポイントで修正することは困難  多くの場合モデルのアルゴリズムに手を加えるかデータセットに手を加えることになり、修 正の結果はやってみなければ分からない 機械学習モデルに求められる要件とテストの実装・実行コストのバ ランスを踏まえてテストを実装する
  71. 開発段階で実施できるテスト  ゴールドスタンダードを使用した性能検証  モデルの精度や FN/FP の傾向を測定する  メタモルフィックテスティング 

    モデルの推論結果間にあるべき関係が満たされているか確認する  網羅検証  特定の範囲の入力について、取り得る値の範囲が想定内か確認する
  72. 本番環境で実施できるテスト  KPI を評価指標としたモデルの性能モニタリング  推論結果の影響が大きい KPI によってモデルの性能劣化度合いを間接的に測定する  閾値を定めれば自動的かつ効率的なモデル再学習実施のトリガーとして使用できる

     シャドウ A/B テスト  実際にユーザーに影響を与えず新旧モデルの性能を比較する  KPI を評価指標とする A/B テスト  モデルが与えるビジネスインパクトを測定・比較する
  73. メタモルフィックテスティング  複数の入力・推論ペア間で満たされるべき関係を見出し、推論結果 が実際に関係を満たしているか確認する 佐藤直人, 小川秀人, 來間啓伸, 明神智之, 2021, “AIソフトウェアのテスト-答のない答え合わせ

    [4つの手法] ”, リックテレコム, p93-123. ソース入力 𝒙𝒙 フォローアップ入力 𝒙𝒙′ ソース出力 𝒚𝒚 ソースフォローアップ出力 𝒚𝒚′ 関係 関係 ? 事前に用意するもの
  74. 網羅検証  手法によって厳密性と実装の難しさが変わる 佐藤直人, 小川秀人, 來間啓伸, 明神智之, 2021, “AIソフトウェアのテスト-答のない答え合わせ [4つの手法]

    ”, リックテレコム, p201-252. 手法 厳密さ 実装難易度 性質 一定範囲のデータをデータセットから 抽出してモデルに入力して探索する 低い 簡単 正解ラベルが不要であるため、本番環 境からデータを取得するなどサンプリ ングが容易 範囲を網羅するデータセットを生成し てモデルに入力して探索する やや高い 簡単 入力パターンが爆発的に増大し、計算 コストが高くなり得る モデルを論理式に変換し SMT ソル バーによって与えれた条件 (論理式) に対する反例が存在しないか探索する 高い 難しい 条件非適合範囲探索に繋げることで、 システムとしてサポートする範囲をモ デルごとに探索することが可能
  75. シャドウ A/B テスト モデルそのものが実際の環境において使用できるか、本番環境およ びユーザーに影響を与えず検証することができる 新モデルを含む API が実際に動作可能かを検証する目的でも使用で きる(≒E2E テスト)

    ビジネス上の価値を直接的に計測することは困難 性能差を定量的に検証する場合、正解ラベルを簡単に付与できる場 合以外ではコストが継続的にかかる  簡単に正解ラベルを付与できる場合の例  厳密な解法があるが UX 観点で機械学習モデルで高速な近似を与えたい場合  前捌きとして機械学習モデルを使用しており、最終的には別の手段で正解となる値を生成する場合
  76. Azure ML マネージドオンラインエンドポイント トラフィックのミラーリング (preview)  トラフィックの一部を複製 し、新しくデプロイしたモ デルに送信する機能 

    応答は返却せず、メトリッ クとログの収集のみ行う https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-safely-rollout-managed-endpoints#test-the-deployment-with-mirrored-traffic-preview
  77. KPI を評価指標とする A/B テスト 新モデルの既存モデルに対するビジネス上の価値の差を直接的に計 測できる 新モデルに問題が発覚した場合の切り戻しが容易 システムの構築に手間がかかる 本番環境に精度の保証がない新モデルを投入することが許容されな い場合があり得る

     バンディットアルゴリズムにより動的な「活用」群比率変更でリスクマネジメントを試みる  開発環境上でのテストやシャドウ A/B テストを踏まえてモデルの QA を十分に行う  究極的にはユーザーに新しいモデルを試験してもらうことは絶対に避けられない(≒どこかの タイミングで新モデルに切り替えることは不可避)点をステークホルダーに理解させる
  78. Azure ML マネージドオンラインエンドポイント Blue-green デプロイメント  トラフィックを分割し、指 定した割合で別のモデルへ 転送する機能 

    モデル事にメトリックとロ グを記録  スキーマが一致していれば 異なる種類の計算リソース を混在させることが可能 https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-safely-rollout-managed-endpoints#test-the-new-deployment-with-a-small-percentage- of-live-traffic
  79. 参考資料 – MS Resources Category Link Microsoft Docs 機械学習とは -

    Cloud Adoption Framework | Microsoft Docs Microsoft Docs Azure Machine Learning を使用して機械学習のライフサイクルをアップスケールするための機械学習運用 (MLOps) フレームワーク - Azure Architecture Center | Microsoft Docs Microsoft Docs Team Data Science Process とは - Azure Architecture Center | Microsoft Docs Github Repository microsoft/MLOps: MLOps examples (github.com) Github Repository microsoft/MCW-ML-Ops: MCW MLOps (github.com) Microsoft Docs Azure Machine Learning を使用して機械学習のライフサイクルをアップスケールするための機械学習運用 (MLOps) フレームワーク - Azure Architecture Center | Microsoft Docs
  80. 参考資料 – External Resources Category Link Twitter mlops_community_jpさん (@MlopsJ) /

    Twitter 定義/概要 MLOps - Wikipedia 定義/概要 MLOps とは何か? | NVIDIA Blueprint The Rapid Evolution of the Canonical Stack for Machine Learning (opendatascience.com)
  81. FeatureStoreの参考資料 – External Resources Category Link YouTube (62) #featurestore -

    YouTube 講演資料 feathr/Feathr Feature Store Talk.pdf at main · linkedin/feathr (github.com) プロジェクトページ https://linkedin.github.io/feathr/ Getting Started https://github.com/linkedin/feathr/blob/main/feathr_project/feathrcli/data/feathr_user_workspace/nyc_driver_demo.ipynb Source code https://github.com/linkedin/feathr Slack Community https://feathrai.slack.com/ YouTube (74) Feathr Feature Store Introduction - YouTube 学習サイト Feature Store For ML カンファレンス Feature Store Summit 2022 Slack Community https://featurestoreorg.slack.com/ Github Repo feast-dev/feast: Feature Store for Machine Learning (github.com)
  82.  本書に記載した情報は、本書各項目に関する発行日現在の Microsoft の見解を表明するものです。Microsoftは絶えず変化する市場に対応しなければならないため、ここに記載した情報に対していかなる責務を負うものではなく、 提示された情報の信憑性については保証できません。  本書は情報提供のみを目的としています。 Microsoft は、明示的または暗示的を問わず、本書にいかなる保証も与えるものではありません。 

    すべての当該著作権法を遵守することはお客様の責務です。Microsoftの書面による明確な許可なく、本書の如何なる部分についても、転載や検索システムへの格納または挿入を行うことは、どのような形式または手段(電子的、 機械的、複写、レコーディング、その他)、および目的であっても禁じられています。 これらは著作権保護された権利を制限するものではありません。  Microsoftは、本書の内容を保護する特許、特許出願書、商標、著作権、またはその他の知的財産権を保有する場合があります。Microsoftから書面によるライセンス契約が明確に供給される場合を除いて、本書の提供はこれら の特許、商標、著作権、またはその他の知的財産へのライセンスを与えるものではありません。 © 2021 Microsoft Corporation. All rights reserved. Microsoft, Windows, その他本文中に登場した各製品名は、Microsoft Corporation の米国およびその他の国における登録商標または商標です。 その他、記載されている会社名および製品名は、一般に各社の商標です。