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)

    View Slide

  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

    View Slide

  3. MLOps 概要

    View Slide

  4. MLOps とは
    Validate Model Deploy Model
    Package
    Model
    Monitor Model
    Train Model
    モデル再学習
    開発と学習
    ビジネス課題を解
    決する
    パッケージ化
    モデルをどこで
    も使用可能にす

    挙動の検証
    応答性の観点と規
    制遵守の観点から
    デプロイ
    予測値の生成にモ
    デルを使用する
    モニタリング
    挙動とビジネス価
    値を監視する
    陳腐化したモデル
    をいつ置換/廃止
    するか決める
    機械学習ライフサイクルを管理する手法・概念、あるいは ML における DevOps

    View Slide

  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

    View Slide

  6. 機械学習プロジェクトにおける課題

    View Slide

  7. 課題に対する技術的アプローチ
    自動化/ 可観測性
    • コード駆動のアセット生成とデプ
    ロイ
    • 再現性と検証可能性を持ったパイ
    プライン
    • アセット間の依存関係が明示され、
    集中管理された管理体制
    検証
    • SWE で培われた品質管理のベスト
    プラクティス適用
    • オフラインでのモデル品質検証、
    バイアスの最小化と説明性の確保
    • メトリックに基づく検証
    再現性/監査可能性
    • 制御されたロールアウト機能
    • 予測性能と期待性能のライブ比較
    • ドリフトの監視とモデル改善に使用
    できるフィードバック

    View Slide

  8. MLOps を実現するための要素
    People
    • チームで共同で開発を進め、他
    人が引き継ぐことを前提とした
    品質確保を継続的に行う体制構
    築と文化醸成
    • 無駄なくスキルをビジネス価値
    へと転換するために必要な体
    制・技術への金銭的/人的投資
    Process
    • 学習やデプロイプロセス等、機
    械学習の一連のプロセスに含ま
    れる定型的処理の自動化
    • アセットの集中管理と共有によ
    る作業効率の向上
    • 再現性確保
    Platform
    • アセットを集中管理し共有する
    ためのハブ
    • 運用中のパイプライン、インフ
    ラ、製品を監視し、期待通りの
    動作をしていないことを検知す
    ることが可能な仕組み
    • 必要に応じて可及的速やかかつ
    安全に本番への機能投入を可能
    とするシステム

    View Slide

  9. ML プロジェクトのループ構造
     Inner Loop
     モデルの探索と仮説検証
     開発環境で人間がインタラク
    ティブに試行
     Middle Loop
     本番投入可能なモデルの探索
     再実行可能
     Outer Loop
     モデルの継続的監視と
    メンテナンス
    モニタリング
    自動学習
    本番デプロイ
    推論
    学習パイプ
    ライン
    パラメーター
    チューニング
    モデルQA
    学習
    評価
    モデル選定
     「MLOps」は各要素およびループの間をつなぎ、円滑化を目指す

    View Slide

  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
    • システムを完全自動化し、監視を容易化
    • 運用システムは、改善方法に関する情報
    を提供。場合によっては、新しいモデル
    で自動的に改善
    • ゼロ ダウンタイム システムに近づく
    • モデル学習とテストを自動化
    • デプロイされたモデルからの詳細で一元
    化されたメトリック
    • 機械学習モデルの経時的な劣化を前提と
    した監視体制を整備する
    • 手動で実行する必要が無い部分について
    自動化を進め、「最大効率で機械学習モ
    デルを運用できる体制」を目指す

    View Slide

  11. Step by Step MLOps

    View Slide

  12. Level 0 – No MLOps
     インタラクティブかつ実験的に有益なモデルを探す
     環境構築、データの取得、デプロイ、テストは手動
    データソース
    データ準備 良いモデルの発見
    アルゴリズム選定 手動デプロイ
    標準化されていない
    ML 環境
    ML エンジニア
    データサイエン
    ティスト
    外部ソースからの
    データの読み込み

    View Slide

  13. 課題・チャレンジ
    再現性 • 個々にデータサイエンティストが独自にカスタマイズした機械学習ツールやコー
    ド、Python/Rパッケージを使い学習モデルのジョブを作成しており、組織全体
    に共有されず学習モデルのジョブを再現することは非常に困難
    品質とセキュリティ • テストが設定されていない
    • テストポリシーが組織横断的に設計されていない
    • 機械学習基盤および成果物が管理されておらず、セキュリティ上の懸念がある
    スケーラビリティ • 大規模なジョブを実行するのに十分なパワーの計算リソースがない
    • 高価な計算リソースが属人的に管理・使用されて組織内で共有されていないため、
    コスト増につながる
    • 機械学習用のデータソースが整備されておらず、学習データの取得に手作業が必

    View Slide

  14. Lv0 → Lv1
     機械学習プラットフォームの整備
     チーム・組織で共有の機械学習プラットフォームを利用していること
     コードを集約するリポジトリホスティング環境の整備
     テストの自動化
     少なくともコードに対するテスト項目がルール化されており、テストの実行が自動化できて
    いること
     データ基盤が整備され始めていること

    View Slide

  15. Level 1 – DevOps no MLOps
     データパイプラインとマネージドな ML 環境が整備される
     テストが整備され始める
    データパイプライン
    データカタログ データ準備 良いモデルの発見
    アルゴリズム選定 手動デプロイ
    マネージドな ML 環境
    コードレベルの
    テスト
    ML エンジニア
    データサイエンティスト
    データ
    エンジニア
    Capture
     コード
    コードリポジトリ

    View Slide

  16. 課題・チャレンジ
    再現性 • 機械学習の実験記録が共有可能な形で取られておらず、実験およびジョブの再現
    が困難
    • 機械学習のライフサイクルを構成するアセットが組織間で共有されていない
    • 学習モデルワークフローの中に複雑なジョブの依存関係があり、開発者に属人的
    となっている

    View Slide

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

    View Slide

  18. Level 2 – Automated Training
     コード、データ、モデルがバージョン管理され、実験が記録される
     モデルの再作成が自動化される
    データ
    準備
    アルゴリズム
    選定
    良いモデル
    の発見
    Capture
     データセット
     環境
     コード (スナップショット)
     ログ/メトリック
     生成物
    履歴の取得と保存
    モデル登録
    機械学習パイプライン
    データパイプライン
    データカタログ
    ML エンジニア
    データサイエン
    ティスト
    データ
    エンジニア
    MLOps
    エンジニア

    View Slide

  19. 課題・チャレンジ
    デプロイ • モデルの用途によって推論環境の実装方法が毎回異なり、デプロイ手順が散在し
    ている
    • デプロイ手順が属人化しており共有されておらず、再実行が難しい
    品質とセキュリティ • 学習されたモデルの挙動と性能が求める要件を満たしているか検証する手順
    (QA) が標準化されていない
    • 機械学習モデルのテスト工程が全く自動化されていない
    • ステークホルダーにモデルの解釈可能性、説明可能性、公平性等のモデルの信頼
    性について説明をする必要がある

    View Slide

  20. Lv2 → Lv3
     推論環境に合わせたデプロイパイプラインの実装
     データを受け取って機械学習モデルによる推論結果を返すコンテナをビルドし Kubernetes
    等のコンテナを動かす基盤上にデプロイする一連の作業を実行するパイプラインを構築※
     データソースからデータを取得し、機械学習モデルによる推論結果を得てデータを格納する
    バッチ処理を実行するパイプラインを構築する※
     モデルの検証・品質確認を行う仕組みの実装
     テストデータ(ゴールドデータ)による精度検証の自動化
     説明性、公平性の確認
    ※代表的な機械学習モデルのデプロイパイプライン、実際にはユースケースに応じた構築が必要

    View Slide

  21. Level 3 – Automated Model Deployment
     モデルのパッケージ化、品質確認、デプロイが半自動的に行われる
    パッケージ化 品質確認 リリース
    Environments
    コード 説明
    データセット イベント & 通知
    DevOps 統合 (CI/CD)
    Model Registry
    MLOps
    エンジニア
    QAエンジニア

    View Slide

  22. 機械学習を取り巻く現実
    学習に用いるデータ
    は日々増大していく
    データの性質は日々変
    化していく
    使用状況やビジネス要
    件の変化に伴って要望
    が生じる
    機動的なモデル改善と継続的なモデル作成 (再学習) が必要

    View Slide

  23. 課題・チャレンジ
    監視 • 推論環境およびモデルの推論性能の監視が十分でない
    • データの監視が十分でない
    • 再トレーニングの基準となる KPI およびその閾値の設定ができていない
    品質とセキュリティ • デプロイ後モデルが適切なタイミングでアップグレードされていない
    • 新しいモデルを本番の推論環境にデプロイする場合に、ユーザーへの影響を最小
    化できていない
    スケーラビリティ • システム全体に自動化可能にも関わらず手動実行が必要な部分が多数存在する

    View Slide

  24. Lv3 → Lv4
     機械学習モデルの性能劣化や劣化につながる要因を検知するための
    監視体制を整備する
     機械学習モデルの性能を評価できる指標の洗い出し
     指標の算出に必要なログの収集とニアリアルタイムな指標算出の仕組み構築
     データセットの変動を検知する仕組みの構築
     自動化の仕組みを実装する
     学習からデプロイまでの各工程を間断なく処理する仕組みの実装※1
     ブルー・グリーンデプロイと新モデルの挙動を自動的に監視対象に含める仕組みの構築
     異常検知時の通知や定型的作業の自動実行
     再学習・再展開を実行する指標の閾値設定とトリガーの実装※2
    ※1 運用方針に応じて、QA やデプロイ時等、人間による承認を間に挟むことは許容される
    ※2 新しいモデルが閾値を超えられない or より劣化した場合にロールバックする基準も同時に定める必要がある

    View Slide

  25. Level 4 – Full MLOps Automated Retraining
    データパイプライン 学習パイプライン デプロイ
    パイプライン
    データ準備 良いモデル
    の発見
    アルゴリズム
    選定
    データセット
    モデル テスト・検証
    ML エンジニア
    データサイエン
    ティスト
    データ
    エンジニア
    QAエンジニア
    MLOps
    エンジニア
    検証
    ML API
    ログ
    データ変動
    再学習トリガー
    アプリ
    Kubernetes
    インフラ
    エンジニア
    ソフトウェア
    エンジニア
    ログ
    モニタリング
    ML エンジニア
    データサイエン
    ティスト
    QAエンジニア
    MLOps
    エンジニア

    View Slide

  26. Azure Machine Learning での
    MLOps 実装
    • アーキテクチャ
    • 利用する Azure サービスの機能詳細

    View Slide

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

    View Slide

  28. Azure Machine Learning のキー要素
    Models Environments
    Experiments & Run Deployment
    Pipelines Datastores & Datasets
    Compute Target Data Labelling
    Workspace

    View Slide

  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
    アセット

    View Slide

  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

    View Slide

  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

    View Slide

  32. 利用サービス
    サービス 機能 目的
    Azure Data Lake Storage Gen2 • データの保存
    Azure Machine Learning Compute Instance • 機械学習の実行
    • 開発
    Managed Online Endpoint • モデルの API 化

    View Slide

  33. Data Science Virtual Machine
     一通り機械学習を実行するた
    めに必要なソフトウェアがプ
    リセットされた VM
     JupyterLab + JupyterHub が
    デフォルトで稼働
    https://docs.microsoft.com/ja-jp/azure/machine-learning/data-science-virtual-machine/overview

    View Slide

  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

    View Slide

  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 化

    View Slide

  36. GitHub
     Git によるソースコード管理
     多種多様なサービスとの強力
    な連携機能
     Github Actions によるワーク
    フロー構築

    View Slide

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

    View Slide

  38. Azure Repos
     Azure DevOps に含まれる
    ソースコード管理機能
     Git※もしくは TFVC
     容量無制限
     AAD ベースの権限管理
    https://azure.microsoft.com/ja-jp/services/devops/repos/
    ※ Azure Machine Learning は Git と連携可能 (TFVC は未対応)

    View Slide

  39. Azure Pipelines
     Azure DevOps に含まれる
    パイプラインツール
     Azure と緊密に連携した処
    理に強み

    View Slide

  40. Workspaces
     Azure Machine Learning 使用時に作
    成したあらゆる成果物を集約した一元
    的な作業スペースを提供
     Workspace は複数人で共有すること
    ができ、RBAC によって Workspace
    上で可能な操作を制限することができ

    View Slide

  41. Data and Data
    Stores
     Datastores は Azure のストレージ
    サービスに対する接続情報を保持する
    ために使用される
     Data は Datastores を使用して接続さ
    れたデータソース内に保存されたデー
    タを参照する
     Data と Datastores により、機械学習
    ジョブとデータが疎結合になる
    認証情報
    username: admin
    password: p@s5w0rd!
    ストレージ接続情報
    リソースID:
    /subscriptions/902f23…
    Datastores
    pandas/spark
    データフレーム
    Data
    ファイル

    View Slide

  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

    View Slide

  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://[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

    View Slide

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

    View Slide

  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

    View Slide

  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 • コンテナのホスト

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  53.  1つの Pipeline は完成した機械学習
    タスクのワークフローを表し、機械
    学習の各サブタスクはパイプライン
    を構成する Step として内包される
     Pipeline は REST エンドポイントを
    パラメーターを備え、パラメーター
    を受け取ることで動作をカスタマイ
    ズすることができる
    Azure ML Pipelines
    データ
    準備
    アルゴリズム
    選定
    良いモデル
    の発見
    データ
    準備
    モデル
    学習
    推論と
    結果の保存
    データ
    準備
    モデル
    学習
    推論と
    結果の保存

    View Slide

  54. Designer
    GUI で機械学習のタスクを定義し、実行可能なパイプライン
    を作成する機能

    View Slide

  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%

    View Slide

  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

    View Slide

  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 化

    View Slide

  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

    View Slide

  59. ブルーグリーンデプロイメント
    AzureMLのエンドポイントは、複数のデプロイを含めることができる。
    メリット・できること
    • 各デプロイに任意の割合のトラフィックを与えて負荷分散可能
    • モデルを切り替える際の安全なロールアウトの実現が可能
    • 別のデプロイにミラーリングして、ライブクライアントに影響を
    与えずに、応用待機時間やエラー状態などをテスト可能(プレビュー)
    ミラーリングの場合
    Blue:100%、Green:10%(ミラーリング)
    デプロイ先によってトラフィックを分離可能
    トラフィックの割合を設定可能
    詳細な方法:オンライン エンドポイントの安全なロールアウト - Azure Machine Learning | Microsoft Docs

    View Slide

  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

    View Slide

  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 • 監視

    View Slide

  62. Dataset Monitor (Preview)
     データセットの変動(ドリ
    フト)を検知する Azure
    ML の機能
     データセット作成機能と統
    合され、ベースラインデー
    タセットと現在のデータの
    差分を監視
     ドリフトに関するアラート
    を設定し、モデルの陳腐化
    に対処
    データセットでデータ ドリフトを検出する (プレビュー) - Azure Machine Learning | Microsoft Docs

    View Slide

  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

    View Slide

  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

    View Slide

  65. 技術詳細
    MLOps を構成する要素技術の詳細

    View Slide

  66. Lv.1 DevOps No MLOps

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  70. Linter と Formatter
    Linter
     ルールに則ったコードの記述ができ
    ているか静的に解析するツール
     実行時にエラーにならないが、バグ
    の温床やコード品質を下げる原因と
    なるような記述を特定することがで
    きる
    Formatter
     コードのスタイルを確認・自動修正
    するツール
     改行やインデントなどを自動的に修
    正し、コードの見た目を整える
    https://black.readthedocs.io/en/stable/index.html

    View Slide

  71. 機械学習における Linter と Formatter
     不必要な import や未使用の変数など、実験を繰り返す中で混入し
    たコードの見通しを悪化させる要素を取り除くことができる
     コードの形式をある程度の範囲で自動的に揃えることができる
    複数人でコラボレーションする際の摩擦低減につながる
     特に初期段階においては導入コストが低く効果が大きい

    View Slide

  72. 型ヒント
    Python は型を明示的に記述しな
    くても動作するが、任意で型ヒン
    トを付与することができる
     可読性が向上する
     型ヒント付与により IDE の支援
    が強力に
     型の静的解析を行うことで不正
    な値が渡されることを防ぐ
     必須ではないため徐々に導入することが可能

    View Slide

  73. 機械学習における型ヒント
     受け取るデータ形式を明示・制約することで意図しないエラーを防

     Int 型と Float 型の取り違えによるミス (除算で起こりがち)
     渡す型のミスによるエラーや NaN 、 Inf の発生
     機械学習では各コンポーネントやモデルが独自の型や形式を要求す
    ることが多く、開発者当人以外のエンジニアがコードを触る際の可
    読性向上は効果が大きい
     tensor か pandas の DataFrame か Spark の DataFrame か ndarray か list か、あるいはラ
    イブラリが備える独自型か
     入力として複数の tensor を要求するモデルへの渡し方
     パイプラインのコンポーネントとして実装する場合の入出力インターフェースの明示

    View Slide

  74. テスト
     プログラムが正しく動作するか
    検証するためのテストコード
    コード変更時の影響範囲調査と修正が
    高速化
    「動くコード」に継続的に手を入れる
    ことが可能になり、リファクタリング
    を通じて品質向上につながる
    デプロイ頻度の向上とリードタイムの
    低減

    View Slide

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

    View Slide

  76. テストのトレードオフ
     テストを書くことによる短期的な時間損失は存在する
    チーム規模が小さく十分なリソースを確保できない(と感じる)初
    期段階や、成果を急かされている状況ではテストは省略されがち
     しかし中長期で見れば、テストコードを書く時間より多くの時間を
    失う
     コード変更時の影響範囲調査に時間を要し、修正時の動作も見落としが発生しがちになり品
    質が低下する
     「現在動くコード」をリファクタリングすることが困難になり、品質が低下し続ける
     爆弾処理のようなコード修正をこなすことになるか、最悪本番障害が発生し長期化する

    View Slide

  77. 機械学習におけるコードレベルのテスト
     前処理部分はテスト可能かつ境界値テストで問題を事前検知しやす
    くテストを書くメリットが大きい
     学習部分のコードは出力がモデルであることが多く、厳密な一致を
    確認することは意味が薄い
     単にモデルが生成されていることのみを確認し、モデルそのものの性質は後述のモデルに対
    するテストで代替する
     モデルに NaN や Inf などが含まれていないか程度はこのタイミングで確認することも可能

    View Slide

  78. 機械学習におけるテストの考慮事項
     テストを書く対象となるコード
     テストを書く意義が薄いコードも存在
     使い捨てのコンポーネントにテストは必要か?(使い捨てでも状況によって必要なこともある)
     ライブラリの薄いラッパー、ほとんどライブラリ側のテストで検証済みのことを再検証するような場合
     テストの粒度
     実装するテストの粒度を費用対効果に基づいて決定する
     状況に合わないテスト戦略はむしろリソースを無駄に消費する E2E
    結合
    単体
    • ユーザー環境に
    近い
    • 実行速度が遅い
    • 高コスト
    • 局所的(問題箇所
    を絞りやすい)
    • 実行速度が速い
    • 低コスト
     例1: プロトタイピング (jupyter notebook) と本番投入
    用コード (python スクリプト) でテストの有無を分ける
     例2: 使い回すコンポーネント向けのユニットテストを
    優先し、E2Eテストはテストデータを用いたドライラン
    で代替して実装しない

    View Slide

  79. Lv.2 Automated Training

    View Slide

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

    View Slide

  81. MLflow とは
     機械学習のライフサイクルを管理する OSS プラットフォーム
     実験管理、コードのパッケージ化、モデル管理と登録の4要素
    Tracking
    実験の記録とクエリ
    (コード、データ、
    構成設定、結果)
    Projects
    コードのパッケージ化
    による再現性を
    実現する形式
    Models
    モデルの
    様々な環境への
    デプロイメント
    Model Registry
    一元的なモデルの
    ライフサイクル管理

    View Slide

  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

    View Slide

  83. チームで使用する MLflow 環境の管理

    View Slide

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

    View Slide

  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

    View Slide

  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
    実験管理・記録 デプロイ

    View Slide

  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

    View Slide

  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

    View Slide

  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
    実験の記録とクエリ
    (コード、データ、
    構成設定、結果)

    View Slide

  90. View Slide

  91. MLflow Models
     フレームワーク、モデルの保存形式、読み込み・書き込み、モデル
    の入出力、デプロイ周りを抽象化するコンポーネント
    モデルを統一的な API で取り扱うことができる
    ノーコードでモデルデプロイを実現
     Docker コンテナ作成
     SageMaker or AML へのデプロイ
     ローカルデプロイ
    Models

    View Slide

  92. MLflow Model ノーコードデプロイの条件
     フレームワークの種類と入出力形状を特定して
    いること
     フレームワークの種類は mlflow.pytorch のようにサブモジュール
    レベルで特定する
     使用しているフレームワークがビルトイン (右記) でない場合は
    Python Function を使用し、 メンバー関数として predict を持つ
    クラスのインスタンスを登録する
     入出力形状は mlflow.models.signature.infer_signature に入出力
    サンプルを与えて得られる signature を渡すことで決定する

    View Slide

  93. MLflow Model Registry
    モデル本体、モデルの入出力の情報、フレームワーク
    の種類等、MLflow Models で定義した情報を保持
    モデルは実験と紐づけられた上でバージョンごと
    に分離して管理

    View Slide

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

    View Slide

  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の出番

    View Slide

  96. Feature Storeの概念
     データサイエンティストが作成した特徴量を保存・共有する
     トレーニングとサービングの両方において一貫したインターフェースを提供する
     低待機時間&リアルタイムで提供する
    オフラインストア
    オンラインストア
    ストリーミング
    Feature Store
    ML API
    バッチ推論
    学習
    特徴量エンジニアリング

    View Slide

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

    View Slide

  98. Feature Storeの構成
    共通
    特徴レジストリ

    管理
    特徴量
    モニタリング
    再利用性
    統一性(重複の防止)
    汎用性
    特徴量の取り込み & 計算
    (バッチ & ストリーミング ソース)
    共通プロバイダー
    • バッチプロバイダー: 高スループット(学習)
    • オンラインプロバイダー:低レイテンシー (推論)
    利用時・方法における特徴量の一貫性
    監視性
    Feature Store が解決する問題

    View Slide

  99. ©Microsoft Corporation
    Azure
    Feature Store
    推論 監視
    特徴量
    エンジニアリング
    トレーニング/テスト
    モデル&評価
    Feature Store 導入時の活用パイプライン

    View Slide

  100. Feathr

    View Slide

  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の性能に依

    プリミティブ型

    View Slide

  102. Feature Store For ML
    Feature Storeの変遷

    View Slide

  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)

    View Slide

  104. Feathr on Azureの全体像例

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

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

    View Slide

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

    View Slide

  114. Lv.3 Automated Model Deployment

    View Slide

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

    View Slide

  116. 機械学習におけるテストの考慮事項
    機械学習モデルの「テスト」は難しい
     通常テストで用いられる同値クラスの代表値を用いたテスト手法が使用できない
     そもそも「境界」が自明ではなく、それゆえに機械学習を使っているという事情も
     わずかな入力の差分が結果に大きな変化を与えることがある
     一般に入力の全パターンに対して網羅的にテスト結果を得ることは難しい
    テストを踏まえて修正することも難しい
     問題のあるパターンを発見した場合に、その問題だけをピンポイントで修正することは困難
     多くの場合モデルのアルゴリズムに手を加えるかデータセットに手を加えることになり、修
    正の結果はやってみなければ分からない
    機械学習モデルに求められる要件とテストの実装・実行コストのバ
    ランスを踏まえてテストを実装する

    View Slide

  117. 開発段階で実施できるテスト
     ゴールドスタンダードを使用した性能検証
     モデルの精度や FN/FP の傾向を測定する
     メタモルフィックテスティング
     モデルの推論結果間にあるべき関係が満たされているか確認する
     網羅検証
     特定の範囲の入力について、取り得る値の範囲が想定内か確認する

    View Slide

  118. 本番環境で実施できるテスト
     KPI を評価指標としたモデルの性能モニタリング
     推論結果の影響が大きい KPI によってモデルの性能劣化度合いを間接的に測定する
     閾値を定めれば自動的かつ効率的なモデル再学習実施のトリガーとして使用できる
     シャドウ A/B テスト
     実際にユーザーに影響を与えず新旧モデルの性能を比較する
     KPI を評価指標とする A/B テスト
     モデルが与えるビジネスインパクトを測定・比較する

    View Slide

  119. ゴールドスタンダードを使用した性能検証
     正解ラベル付きのテスト用データセット (ゴールドスタンダード) を
    用いて機械学習モデルの性能を検証する
    入力データセット 𝒙𝒙 出力 𝒚𝒚′
    正解 𝒚𝒚 クラス分類
    • 正解率
    • 適合率
    • 再現率
    • 特異度

    回帰
    • MAE
    • RMSE
    • R2
    • AIC

    事前に用意するもの

    View Slide

  120. ゴールドスタンダードを使用した性能検証
    モデルの予測性能を定量的に評価できる
    実装がシンプルかつ容易 (ライブラリで補助関数が実装されている
    場合が大半)
    正解ラベルを付与するためにコストがかかる場合がある
    学習データとゴールドスタンダード間の分布差異に注意が必要
     学習用データセットから切り出してゴールドスタンダードを構築する場合、両者で分布のず
    れがあると適正な評価が難しい
     学習用データセットとテスト用データセットの取得タイミングに時間的なずれが生じる場合
    は、「分布の差異」(データドリフト)そのものが重要な指標となり得る

    View Slide

  121. メタモルフィックテスティング
     複数の入力・推論ペア間で満たされるべき関係を見出し、推論結果
    が実際に関係を満たしているか確認する
    佐藤直人, 小川秀人, 來間啓伸, 明神智之, 2021, “AIソフトウェアのテスト-答のない答え合わせ [4つの手法] ”, リックテレコム, p93-123.
    ソース入力 𝒙𝒙
    フォローアップ入力 𝒙𝒙′
    ソース出力 𝒚𝒚
    ソースフォローアップ出力 𝒚𝒚′
    関係 関係 ?
    事前に用意するもの

    View Slide

  122. メタモルフィックテスティング
    ソースとフォローアップの関係に基づいてテストデータを追加生成
    できる
    推論結果の関係に注目しているため、推論結果に明確な正解ラベル
    を定義できない場合でも使用できる
    ソースとフォローアップ双方についてその出力間で期待される関係
    は満たされているが、出力そのものが両方とも間違っている可能性
    は否定されない
    可能であればゴールドスタンダードデータセットによる精度検証と
    併用する
    佐藤直人, 小川秀人, 來間啓伸, 明神智之, 2021, “AIソフトウェアのテスト-答のない答え合わせ [4つの手法] ”, リックテレコム, p93-123.

    View Slide

  123. 網羅検証
     ある特定の入力範囲についての推論結果が収まるべき範囲を定め、
    実際に網羅的な入力を加えて推論結果が収まるべき範囲内に収まる
    か確認する
    ある範囲内の
    入力データセット 𝒙𝒙
    出力 𝒚𝒚′
    出力 𝒚𝒚′が満たすべき条件 (範囲)
    事前に用意するもの
    反例の有無

    View Slide

  124. 網羅検証
     手法によって厳密性と実装の難しさが変わる
    佐藤直人, 小川秀人, 來間啓伸, 明神智之, 2021, “AIソフトウェアのテスト-答のない答え合わせ [4つの手法] ”, リックテレコム, p201-252.
    手法 厳密さ 実装難易度 性質
    一定範囲のデータをデータセットから
    抽出してモデルに入力して探索する
    低い 簡単 正解ラベルが不要であるため、本番環
    境からデータを取得するなどサンプリ
    ングが容易
    範囲を網羅するデータセットを生成し
    てモデルに入力して探索する
    やや高い 簡単 入力パターンが爆発的に増大し、計算
    コストが高くなり得る
    モデルを論理式に変換し SMT ソル
    バーによって与えれた条件 (論理式)
    に対する反例が存在しないか探索する
    高い 難しい 条件非適合範囲探索に繋げることで、
    システムとしてサポートする範囲をモ
    デルごとに探索することが可能

    View Slide

  125. 網羅検証
    特定範囲の入力に対しモデルが出力する推論結果の範囲を限定する
    ことで、システムのカバー範囲や異なるモデルを使用する境界設定
    に繋げることができる
    正解ラベルが不要
    厳密性を求められる場合、実装が難しい
    計算コストが重くなりやすい
     SMT ソルバーを使う場合もデータを実際にモデルに入力する場合も計算コストが高い
    佐藤直人, 小川秀人, 來間啓伸, 明神智之, 2021, “AIソフトウェアのテスト-答のない答え合わせ [4つの手法] ”, リックテレコム, p93-123.

    View Slide

  126. KPI を評価指標としたモデルの性能モニタリング
     推論結果の影響が大きい KPI によってモデルの性能劣化度合いをリ
    アルタイムに測定する
    既存推論API
    入力 出力
    ユーザー 分割
    KPI
    閾値を決め、新モ
    デルの学習パイプ
    ラインのトリガー
    などに繋げる

    View Slide

  127. KPI を評価指標としたモデルの性能モニタリング
    環境変化によるモデルが持つビジネス価値の劣化度合いを計測でき

    正解ラベルの付与が不要
    (ニア)リアルタイムに性能を検証できる
    KPI の設定も難しい
     ある程度運用経験がないと設定することが難しい (鶏卵問題、スモールスタートが現実的な
    解決策)
    モデルの性能以外の因子が KPI に与える影響を考慮する必要があ

    View Slide

  128. 既存推論API
    シャドウ A/B テスト
     実際に本番で稼働しているモデルに対する入力を複製して新しいモ
    デルにも与え、両モデルの推論結果のズレを比較・検証する、可能
    であれば正解率なども比較する
    入力 出力 比較
    • 正解ラベルを用意して精度を比
    較する
    • 推論結果のズレを比較する (分
    布を比較する)

    新推論API
    複製
    出力
    ユーザー

    View Slide

  129. シャドウ A/B テスト
    モデルそのものが実際の環境において使用できるか、本番環境およ
    びユーザーに影響を与えず検証することができる
    新モデルを含む API が実際に動作可能かを検証する目的でも使用で
    きる(≒E2E テスト)
    ビジネス上の価値を直接的に計測することは困難
    性能差を定量的に検証する場合、正解ラベルを簡単に付与できる場
    合以外ではコストが継続的にかかる
     簡単に正解ラベルを付与できる場合の例
     厳密な解法があるが UX 観点で機械学習モデルで高速な近似を与えたい場合
     前捌きとして機械学習モデルを使用しており、最終的には別の手段で正解となる値を生成する場合

    View Slide

  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

    View Slide

  131. KPI を評価指標とする A/B テスト
     機械学習モデルに対する入力を一定比率で分割して新旧モデルそれ
    ぞれに入力して応答させ、モデルごとに算出した KPI を比較する
    既存推論API
    入力
    出力
    新推論API
    出力
    ユーザー 分割
    比較
    既存モデルの KPI
    新モデルの KPI

    View Slide

  132. KPI を評価指標とする A/B テスト
    新モデルの既存モデルに対するビジネス上の価値の差を直接的に計
    測できる
    新モデルに問題が発覚した場合の切り戻しが容易
    システムの構築に手間がかかる
    本番環境に精度の保証がない新モデルを投入することが許容されな
    い場合があり得る
     バンディットアルゴリズムにより動的な「活用」群比率変更でリスクマネジメントを試みる
     開発環境上でのテストやシャドウ A/B テストを踏まえてモデルの QA を十分に行う
     究極的にはユーザーに新しいモデルを試験してもらうことは絶対に避けられない(≒どこかの
    タイミングで新モデルに切り替えることは不可避)点をステークホルダーに理解させる

    View Slide

  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

    View Slide

  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

    View Slide

  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)

    View Slide

  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)

    View Slide

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

    View Slide