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

Step-by-Step MLOps and Microsoft Products

0fa6038e477031fcca028bab0efe07e3?s=47 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 側から輸入した知見、機械学習モデルのテスト等のより詳細な技術情報を追加

0fa6038e477031fcca028bab0efe07e3?s=128

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 概要

  4. MLOps とは Validate Model Deploy Model Package Model Monitor Model

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

  7. 課題に対する技術的アプローチ 自動化/ 可観測性 • コード駆動のアセット生成とデプ ロイ • 再現性と検証可能性を持ったパイ プライン •

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

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

     Middle Loop  本番投入可能なモデルの探索  再実行可能  Outer Loop  モデルの継続的監視と メンテナンス モニタリング 自動学習 本番デプロイ 推論 学習パイプ ライン パラメーター チューニング モデルQA 学習 評価 モデル選定  「MLOps」は各要素およびループの間をつなぎ、円滑化を目指す
  10. 成熟度モデル 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 • システムを完全自動化し、監視を容易化 • 運用システムは、改善方法に関する情報 を提供。場合によっては、新しいモデル で自動的に改善 • ゼロ ダウンタイム システムに近づく • モデル学習とテストを自動化 • デプロイされたモデルからの詳細で一元 化されたメトリック • 機械学習モデルの経時的な劣化を前提と した監視体制を整備する • 手動で実行する必要が無い部分について 自動化を進め、「最大効率で機械学習モ デルを運用できる体制」を目指す
  11. Step by Step MLOps

  12. Level 0 – No MLOps  インタラクティブかつ実験的に有益なモデルを探す  環境構築、データの取得、デプロイ、テストは手動 データソース

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

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

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

     テストが整備され始める データパイプライン データカタログ データ準備 良いモデルの発見 アルゴリズム選定 手動デプロイ マネージドな ML 環境 コードレベルの テスト ML エンジニア データサイエンティスト データ エンジニア Capture  コード コードリポジトリ
  16. 課題・チャレンジ 再現性 • 機械学習の実験記録が共有可能な形で取られておらず、実験およびジョブの再現 が困難 • 機械学習のライフサイクルを構成するアセットが組織間で共有されていない • 学習モデルワークフローの中に複雑なジョブの依存関係があり、開発者に属人的 となっている

  17. Lv1 → Lv2  モデル学習の再現性確保  1度やった実験を再現しようと思えばでき、実験の成果物(学習済みモデル等)が 実験と紐づいた形で保管されていること  パイプラインが構築され、確立した手順は簡単に再実行できること

     モデルの運用管理  モデルが管理されており、関連する実験やエンドポイントが紐づくこと
  18. Level 2 – Automated Training  コード、データ、モデルがバージョン管理され、実験が記録される  モデルの再作成が自動化される データ

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

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

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

    リリース Environments コード 説明 データセット イベント & 通知 DevOps 統合 (CI/CD) Model Registry MLOps エンジニア QAエンジニア
  22. 機械学習を取り巻く現実 学習に用いるデータ は日々増大していく データの性質は日々変 化していく 使用状況やビジネス要 件の変化に伴って要望 が生じる 機動的なモデル改善と継続的なモデル作成 (再学習)

    が必要
  23. 課題・チャレンジ 監視 • 推論環境およびモデルの推論性能の監視が十分でない • データの監視が十分でない • 再トレーニングの基準となる KPI およびその閾値の設定ができていない

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

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

    パイプライン データ準備 良いモデル の発見 アルゴリズム 選定 データセット モデル テスト・検証 ML エンジニア データサイエン ティスト データ エンジニア QAエンジニア MLOps エンジニア 検証 ML API ログ データ変動 再学習トリガー アプリ Kubernetes インフラ エンジニア ソフトウェア エンジニア ログ モニタリング ML エンジニア データサイエン ティスト QAエンジニア MLOps エンジニア
  26. Azure Machine Learning での MLOps 実装 • アーキテクチャ • 利用する

    Azure サービスの機能詳細
  27. Azure Machine Learning とは? https://docs.microsoft.com/ja-jp/azure/machine-learning/overview-what-is-azure-machine-learning 機械学習の各プロセスから MLOps まで幅広くサポートする 『機械学習プラットフォーム』

  28. Azure Machine Learning のキー要素 Models Environments Experiments & Run Deployment

    Pipelines Datastores & Datasets Compute Target Data Labelling Workspace
  29. 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 アセット
  30. 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
  31. 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
  32. 利用サービス サービス 機能 目的 Azure Data Lake Storage Gen2 •

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

    JupyterLab + JupyterHub が デフォルトで稼働 https://docs.microsoft.com/ja-jp/azure/machine-learning/data-science-virtual-machine/overview
  34. 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
  35. 利用サービス サービス 機能 目的 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 化
  36. GitHub  Git によるソースコード管理  多種多様なサービスとの強力 な連携機能  Github Actions

    によるワーク フロー構築
  37. GitHub Actions  イベント駆動でジョブを実行する GitHub のワークフローツール https://docs.github.com/ja/actions

  38. Azure Repos  Azure DevOps に含まれる ソースコード管理機能  Git※もしくは TFVC

     容量無制限  AAD ベースの権限管理 https://azure.microsoft.com/ja-jp/services/devops/repos/ ※ Azure Machine Learning は Git と連携可能 (TFVC は未対応)
  39. Azure Pipelines  Azure DevOps に含まれる パイプラインツール  Azure と緊密に連携した処

    理に強み
  40. Workspaces  Azure Machine Learning 使用時に作 成したあらゆる成果物を集約した一元 的な作業スペースを提供  Workspace

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

    ために使用される  Data は Datastores を使用して接続さ れたデータソース内に保存されたデー タを参照する  Data と Datastores により、機械学習 ジョブとデータが疎結合になる 認証情報 username: admin password: p@s5w0rd! ストレージ接続情報 リソースID: /subscriptions/902f23… Datastores pandas/spark データフレーム Data ファイル
  42. 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
  43. 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://datasets@azuremlexamples.blob.core.windows.net/ 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
  44. マネージドリソース  Azure Machine Learning 配下のマネージドなコンピュー ティングリソース • Compute Instances

    • 単一の VM • 様々なマシンスペック (GPU 搭載含む) から自由に選んで作成可能 • Notebook (Azure ML Studio) の他、JupyterLab、VSCode 等を使用したアド ホックな分析を行うための計算リソース • Compute Clusters • オートスケールするクラスター • 様々なマシンスペック (GPU 搭載含む) から自由に選んで作成可能 • 1台の VM ではこなしきれない大規模な処理をこなすための計算リソース
  45. 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
  46. 利用サービス サービス 機能 目的 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 • コンテナのホスト
  47. マネージドリソース  Azure Machine Learning 配下のマネージドな コンピューティングリソース • Compute Instances

    • 単一の VM • 様々なマシンスペック (GPU 搭載含む) から自由に選んで作成可能 • Notebook (Azure ML Studio) の他、JupyterLab、VSCode 等を使用したアド ホックな分析を行うための計算リソース • Compute Clusters • オートスケールするクラスター • 様々なマシンスペック (GPU 搭載含む) から自由に選んで作成可能 • 1台の VM ではこなしきれない大規模な処理をこなすための計算リソース
  48.  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
  49. 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
  50.  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
  51.  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
  52.  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
  53.  1つの Pipeline は完成した機械学習 タスクのワークフローを表し、機械 学習の各サブタスクはパイプライン を構成する Step として内包される 

    Pipeline は REST エンドポイントを パラメーターを備え、パラメーター を受け取ることで動作をカスタマイ ズすることができる Azure ML Pipelines データ 準備 アルゴリズム 選定 良いモデル の発見 データ 準備 モデル 学習 推論と 結果の保存 データ 準備 モデル 学習 推論と 結果の保存
  54. Designer GUI で機械学習のタスクを定義し、実行可能なパイプライン を作成する機能

  55. 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% …
  56. 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
  57. 利用サービス サービス 機能 目的 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 化
  58. 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
  59. ブルーグリーンデプロイメント AzureMLのエンドポイントは、複数のデプロイを含めることができる。 メリット・できること • 各デプロイに任意の割合のトラフィックを与えて負荷分散可能 • モデルを切り替える際の安全なロールアウトの実現が可能 • 別のデプロイにミラーリングして、ライブクライアントに影響を 与えずに、応用待機時間やエラー状態などをテスト可能(プレビュー)

    ミラーリングの場合 Blue:100%、Green:10%(ミラーリング) デプロイ先によってトラフィックを分離可能 トラフィックの割合を設定可能 詳細な方法:オンライン エンドポイントの安全なロールアウト - Azure Machine Learning | Microsoft Docs
  60. 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
  61. 利用サービス サービス 機能 目的 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 • 監視
  62. Dataset Monitor (Preview)  データセットの変動(ドリ フト)を検知する Azure ML の機能 

    データセット作成機能と統 合され、ベースラインデー タセットと現在のデータの 差分を監視  ドリフトに関するアラート を設定し、モデルの陳腐化 に対処 データセットでデータ ドリフトを検出する (プレビュー) - Azure Machine Learning | Microsoft Docs
  63. 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
  64. 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
  65. 技術詳細 MLOps を構成する要素技術の詳細

  66. Lv.1 DevOps No MLOps

  67. 機械学習におけるコード品質 継続的なメンテナンスと多人数開発を可能とするコード品質を確保する ための技法

  68. コード品質を保つ意義  今、一緒に開発を行っている同僚が効率的かつ継続的にコードに手 を入れられるようになる  将来、コードを書いた当人以外が苦労なくコードに手を入れ、メン テナンスやリファクタリングを継続することができる  上記の結果としてビジネス上の価値を効率的に生み出すことができ る

  69. コード品質を担保する仕組み  Linter と formatter  型ヒント  テスト

  70. Linter と Formatter Linter  ルールに則ったコードの記述ができ ているか静的に解析するツール  実行時にエラーにならないが、バグ の温床やコード品質を下げる原因と

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

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

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

     渡す型のミスによるエラーや NaN 、 Inf の発生  機械学習では各コンポーネントやモデルが独自の型や形式を要求す ることが多く、開発者当人以外のエンジニアがコードを触る際の可 読性向上は効果が大きい  tensor か pandas の DataFrame か Spark の DataFrame か ndarray か list か、あるいはラ イブラリが備える独自型か  入力として複数の tensor を要求するモデルへの渡し方  パイプラインのコンポーネントとして実装する場合の入出力インターフェースの明示
  74. テスト  プログラムが正しく動作するか 検証するためのテストコード コード変更時の影響範囲調査と修正が 高速化 「動くコード」に継続的に手を入れる ことが可能になり、リファクタリング を通じて品質向上につながる デプロイ頻度の向上とリードタイムの

    低減
  75. 引用元 : https://speakerdeck.com/twada/quality-and-speed-2020-autumn-edition?slide=7

  76. テストのトレードオフ  テストを書くことによる短期的な時間損失は存在する チーム規模が小さく十分なリソースを確保できない(と感じる)初 期段階や、成果を急かされている状況ではテストは省略されがち  しかし中長期で見れば、テストコードを書く時間より多くの時間を 失う  コード変更時の影響範囲調査に時間を要し、修正時の動作も見落としが発生しがちになり品

    質が低下する  「現在動くコード」をリファクタリングすることが困難になり、品質が低下し続ける  爆弾処理のようなコード修正をこなすことになるか、最悪本番障害が発生し長期化する
  77. 機械学習におけるコードレベルのテスト  前処理部分はテスト可能かつ境界値テストで問題を事前検知しやす くテストを書くメリットが大きい  学習部分のコードは出力がモデルであることが多く、厳密な一致を 確認することは意味が薄い  単にモデルが生成されていることのみを確認し、モデルそのものの性質は後述のモデルに対 するテストで代替する

     モデルに NaN や Inf などが含まれていないか程度はこのタイミングで確認することも可能
  78. 機械学習におけるテストの考慮事項  テストを書く対象となるコード  テストを書く意義が薄いコードも存在  使い捨てのコンポーネントにテストは必要か?(使い捨てでも状況によって必要なこともある)  ライブラリの薄いラッパー、ほとんどライブラリ側のテストで検証済みのことを再検証するような場合 

    テストの粒度  実装するテストの粒度を費用対効果に基づいて決定する  状況に合わないテスト戦略はむしろリソースを無駄に消費する E2E 結合 単体 • ユーザー環境に 近い • 実行速度が遅い • 高コスト • 局所的(問題箇所 を絞りやすい) • 実行速度が速い • 低コスト  例1: プロトタイピング (jupyter notebook) と本番投入 用コード (python スクリプト) でテストの有無を分ける  例2: 使い回すコンポーネント向けのユニットテストを 優先し、E2Eテストはテストデータを用いたドライラン で代替して実装しない
  79. Lv.2 Automated Training

  80. MLflow 実験管理やモデル管理を実現する OSS

  81. MLflow とは  機械学習のライフサイクルを管理する OSS プラットフォーム  実験管理、コードのパッケージ化、モデル管理と登録の4要素 Tracking 実験の記録とクエリ

    (コード、データ、 構成設定、結果) Projects コードのパッケージ化 による再現性を 実現する形式 Models モデルの 様々な環境への デプロイメント Model Registry 一元的なモデルの ライフサイクル管理
  82. 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
  83. チームで使用する MLflow 環境の管理

  84. MLflow-as-a-Service  組織的に MLflow を活用する場合にはセキュリティ上の課題と直面  使いたいときに使うことができる可用性確保(サーバーの冗長構成)  認証機構の組み込み マネージドな

    MLflow を使いたい
  85. 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
  86. 実験 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 実験管理・記録 デプロイ
  87. 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
  88. 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
  89. MLflow Tracking による実験管理  MLflow Tracking  機械学習の logging API

     あらゆるライブラリ・環境に対応  run の単位で記録され、run は experiment に集計される  Automatic Logging  記録対象  Parameter : ランダムフォレストモデルのツリーの数などのハイパーパラ メータ  Metric : RMSE、AUC などの精度指標  Artifact : 画像、モデルファイルなどの任意のファイル  Source : 学習で用いたコード名 (Git commit hash)、MLflow Project 名 etc Tracking 実験の記録とクエリ (コード、データ、 構成設定、結果)
  90. None
  91. MLflow Models  フレームワーク、モデルの保存形式、読み込み・書き込み、モデル の入出力、デプロイ周りを抽象化するコンポーネント モデルを統一的な API で取り扱うことができる ノーコードでモデルデプロイを実現 

    Docker コンテナ作成  SageMaker or AML へのデプロイ  ローカルデプロイ Models
  92. MLflow Model ノーコードデプロイの条件  フレームワークの種類と入出力形状を特定して いること  フレームワークの種類は mlflow.pytorch のようにサブモジュール

    レベルで特定する  使用しているフレームワークがビルトイン (右記) でない場合は Python Function を使用し、 メンバー関数として predict を持つ クラスのインスタンスを登録する  入出力形状は mlflow.models.signature.infer_signature に入出力 サンプルを与えて得られる signature を渡すことで決定する
  93. MLflow Model Registry モデル本体、モデルの入出力の情報、フレームワーク の種類等、MLflow Models で定義した情報を保持 モデルは実験と紐づけられた上でバージョンごと に分離して管理

  94. Feature Store 特徴量を格納・共有し、異なる性能要件を持つワークロードに対して共 通のインターフェースで特徴量を供給するコンポーネント

  95. 特徴量 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の出番
  96. Feature Storeの概念  データサイエンティストが作成した特徴量を保存・共有する  トレーニングとサービングの両方において一貫したインターフェースを提供する  低待機時間&リアルタイムで提供する オフラインストア オンラインストア

    ストリーミング Feature Store ML API バッチ推論 学習 特徴量エンジニアリング
  97. 特徴量がスクリプト上に埋もれて、再利用や活用できるように整理、保存されないため、ト ラッキングやコンプライアンス基準を満たすことが難しい 特徴量エンジニアリングの作業は、重複しており、Data Scientist の時間とCompute リソー スを消費する 特徴量を本番環境に反映させるのは難しい オフライントレーニングとオンライン推論では、通常、異なるサービングパイプラインが必 要であり、一貫して特徴量を生成されることを保証するのはコストがかかり、モデル性能の

    劣化を招く 特徴量やデータの質は刻々と変化しており、人の手が介入する必要がある Feature Store がない状態で抱える問題
  98. Feature Storeの構成 共通 特徴レジストリ & 管理 特徴量 モニタリング 再利用性 統一性(重複の防止)

    汎用性 特徴量の取り込み & 計算 (バッチ & ストリーミング ソース) 共通プロバイダー • バッチプロバイダー: 高スループット(学習) • オンラインプロバイダー:低レイテンシー (推論) 利用時・方法における特徴量の一貫性 監視性 Feature Store が解決する問題
  99. ©Microsoft Corporation Azure Feature Store 推論 監視 特徴量 エンジニアリング トレーニング/テスト

    モデル&評価 Feature Store 導入時の活用パイプライン
  100. Feathr

  101. 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の性能に依 存 プリミティブ型
  102. Feature Store For ML Feature Storeの変遷

  103. 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)
  104. Feathr on Azureの全体像例

  105. 1. 特徴量の作成 作成:AML, ADB 保存:D-SQL, ADLS etc… Feathr on Azure

    - 特徴量の作成 -
  106. 2. 特徴量の定義の管理 Purview, Feathr Feathr on Azure - 特徴量の定義の管理 -

  107. 3. 特徴量の結合 Feathr Python SDK、Synapse、ADBのSparkクラスタ Feathr on Azure - 特徴量の結合

    -
  108. Feathr on Azure - オンラインストアへの保存 - 4. オンラインストアへの保存 Feathr Online

    Store, Redis
  109. 5. モデルのトレーニング&デプロイ AML Feathr on Azure - モデルのトレーニング&デプロイ -

  110. 6. オンラインFeatureの取得と学習 RedisにFeathrSDKを用いてアクセス Feathr on Azure - オンラインFeature の取得と学習 -

  111. 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
  112.  複数のソースから一度にデータを取り込み、機能の再利用を促進することが可能 一度に複数のソースを読み込む

  113.  高度なML/DLシナリオに対応した豊富な型  組織全体で再利用することが可能。  複雑な特徴量の取り込み提供時間を短縮し、モデルのパフォーマンスを向上させる  カテゴリカル/カテゴリーセットなど、一般的なMLタイプをサポート etc… MLに適した型タイプ

  114. Lv.3 Automated Model Deployment

  115. 機械学習モデルのテスト 本番環境へのモデル投入を恐れず進めるための技術

  116. 機械学習におけるテストの考慮事項 機械学習モデルの「テスト」は難しい  通常テストで用いられる同値クラスの代表値を用いたテスト手法が使用できない  そもそも「境界」が自明ではなく、それゆえに機械学習を使っているという事情も  わずかな入力の差分が結果に大きな変化を与えることがある  一般に入力の全パターンに対して網羅的にテスト結果を得ることは難しい

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

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

     シャドウ A/B テスト  実際にユーザーに影響を与えず新旧モデルの性能を比較する  KPI を評価指標とする A/B テスト  モデルが与えるビジネスインパクトを測定・比較する
  119. ゴールドスタンダードを使用した性能検証  正解ラベル付きのテスト用データセット (ゴールドスタンダード) を 用いて機械学習モデルの性能を検証する 入力データセット 𝒙𝒙 出力 𝒚𝒚′

    正解 𝒚𝒚 クラス分類 • 正解率 • 適合率 • 再現率 • 特異度 … 回帰 • MAE • RMSE • R2 • AIC … 事前に用意するもの
  120. ゴールドスタンダードを使用した性能検証 モデルの予測性能を定量的に評価できる 実装がシンプルかつ容易 (ライブラリで補助関数が実装されている 場合が大半) 正解ラベルを付与するためにコストがかかる場合がある 学習データとゴールドスタンダード間の分布差異に注意が必要  学習用データセットから切り出してゴールドスタンダードを構築する場合、両者で分布のず れがあると適正な評価が難しい

     学習用データセットとテスト用データセットの取得タイミングに時間的なずれが生じる場合 は、「分布の差異」(データドリフト)そのものが重要な指標となり得る
  121. メタモルフィックテスティング  複数の入力・推論ペア間で満たされるべき関係を見出し、推論結果 が実際に関係を満たしているか確認する 佐藤直人, 小川秀人, 來間啓伸, 明神智之, 2021, “AIソフトウェアのテスト-答のない答え合わせ

    [4つの手法] ”, リックテレコム, p93-123. ソース入力 𝒙𝒙 フォローアップ入力 𝒙𝒙′ ソース出力 𝒚𝒚 ソースフォローアップ出力 𝒚𝒚′ 関係 関係 ? 事前に用意するもの
  122. メタモルフィックテスティング ソースとフォローアップの関係に基づいてテストデータを追加生成 できる 推論結果の関係に注目しているため、推論結果に明確な正解ラベル を定義できない場合でも使用できる ソースとフォローアップ双方についてその出力間で期待される関係 は満たされているが、出力そのものが両方とも間違っている可能性 は否定されない 可能であればゴールドスタンダードデータセットによる精度検証と 併用する

    佐藤直人, 小川秀人, 來間啓伸, 明神智之, 2021, “AIソフトウェアのテスト-答のない答え合わせ [4つの手法] ”, リックテレコム, p93-123.
  123. 網羅検証  ある特定の入力範囲についての推論結果が収まるべき範囲を定め、 実際に網羅的な入力を加えて推論結果が収まるべき範囲内に収まる か確認する ある範囲内の 入力データセット 𝒙𝒙 出力 𝒚𝒚′

    出力 𝒚𝒚′が満たすべき条件 (範囲) 事前に用意するもの 反例の有無
  124. 網羅検証  手法によって厳密性と実装の難しさが変わる 佐藤直人, 小川秀人, 來間啓伸, 明神智之, 2021, “AIソフトウェアのテスト-答のない答え合わせ [4つの手法]

    ”, リックテレコム, p201-252. 手法 厳密さ 実装難易度 性質 一定範囲のデータをデータセットから 抽出してモデルに入力して探索する 低い 簡単 正解ラベルが不要であるため、本番環 境からデータを取得するなどサンプリ ングが容易 範囲を網羅するデータセットを生成し てモデルに入力して探索する やや高い 簡単 入力パターンが爆発的に増大し、計算 コストが高くなり得る モデルを論理式に変換し SMT ソル バーによって与えれた条件 (論理式) に対する反例が存在しないか探索する 高い 難しい 条件非適合範囲探索に繋げることで、 システムとしてサポートする範囲をモ デルごとに探索することが可能
  125. 網羅検証 特定範囲の入力に対しモデルが出力する推論結果の範囲を限定する ことで、システムのカバー範囲や異なるモデルを使用する境界設定 に繋げることができる 正解ラベルが不要 厳密性を求められる場合、実装が難しい 計算コストが重くなりやすい  SMT ソルバーを使う場合もデータを実際にモデルに入力する場合も計算コストが高い

    佐藤直人, 小川秀人, 來間啓伸, 明神智之, 2021, “AIソフトウェアのテスト-答のない答え合わせ [4つの手法] ”, リックテレコム, p93-123.
  126. KPI を評価指標としたモデルの性能モニタリング  推論結果の影響が大きい KPI によってモデルの性能劣化度合いをリ アルタイムに測定する 既存推論API 入力 出力

    ユーザー 分割 KPI 閾値を決め、新モ デルの学習パイプ ラインのトリガー などに繋げる
  127. KPI を評価指標としたモデルの性能モニタリング 環境変化によるモデルが持つビジネス価値の劣化度合いを計測でき る 正解ラベルの付与が不要 (ニア)リアルタイムに性能を検証できる KPI の設定も難しい  ある程度運用経験がないと設定することが難しい

    (鶏卵問題、スモールスタートが現実的な 解決策) モデルの性能以外の因子が KPI に与える影響を考慮する必要があ る
  128. 既存推論API シャドウ A/B テスト  実際に本番で稼働しているモデルに対する入力を複製して新しいモ デルにも与え、両モデルの推論結果のズレを比較・検証する、可能 であれば正解率なども比較する 入力 出力

    比較 • 正解ラベルを用意して精度を比 較する • 推論結果のズレを比較する (分 布を比較する) … 新推論API 複製 出力 ユーザー
  129. シャドウ A/B テスト モデルそのものが実際の環境において使用できるか、本番環境およ びユーザーに影響を与えず検証することができる 新モデルを含む API が実際に動作可能かを検証する目的でも使用で きる(≒E2E テスト)

    ビジネス上の価値を直接的に計測することは困難 性能差を定量的に検証する場合、正解ラベルを簡単に付与できる場 合以外ではコストが継続的にかかる  簡単に正解ラベルを付与できる場合の例  厳密な解法があるが UX 観点で機械学習モデルで高速な近似を与えたい場合  前捌きとして機械学習モデルを使用しており、最終的には別の手段で正解となる値を生成する場合
  130. 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
  131. KPI を評価指標とする A/B テスト  機械学習モデルに対する入力を一定比率で分割して新旧モデルそれ ぞれに入力して応答させ、モデルごとに算出した KPI を比較する 既存推論API

    入力 出力 新推論API 出力 ユーザー 分割 比較 既存モデルの KPI 新モデルの KPI
  132. KPI を評価指標とする A/B テスト 新モデルの既存モデルに対するビジネス上の価値の差を直接的に計 測できる 新モデルに問題が発覚した場合の切り戻しが容易 システムの構築に手間がかかる 本番環境に精度の保証がない新モデルを投入することが許容されな い場合があり得る

     バンディットアルゴリズムにより動的な「活用」群比率変更でリスクマネジメントを試みる  開発環境上でのテストやシャドウ A/B テストを踏まえてモデルの QA を十分に行う  究極的にはユーザーに新しいモデルを試験してもらうことは絶対に避けられない(≒どこかの タイミングで新モデルに切り替えることは不可避)点をステークホルダーに理解させる
  133. 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
  134. 参考資料 – 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
  135. 参考資料 – 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)
  136. 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)
  137.  本書に記載した情報は、本書各項目に関する発行日現在の Microsoft の見解を表明するものです。Microsoftは絶えず変化する市場に対応しなければならないため、ここに記載した情報に対していかなる責務を負うものではなく、 提示された情報の信憑性については保証できません。  本書は情報提供のみを目的としています。 Microsoft は、明示的または暗示的を問わず、本書にいかなる保証も与えるものではありません。 

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