More Related Content
Similar to MLflowで学ぶMLOpsことはじめ
Similar to MLflowで学ぶMLOpsことはじめ (20)
More from Kenichi Sonoda (13)
MLflowで学ぶMLOpsことはじめ
- 2. 機械学習のワークフロー
• 整形されていない生
データ
• 企業内の様々なシス
テムで利用される
データストアに散在
するデータ
• データレイク、
RDB、オブジェクト
ストア、NoSQL、
Hadoopなど
• 生データから必要な
データ(特徴量)を抽
出し、機械学習に利
用できるように整形
• 整形されたデータを
統計処理にかけて予
測モデルを構築
• 予測モデルの精度を
評価し、目標の精度
を達成するまで繰り
返し学習する
• 構築した予測モデル
を本番環境にデプロ
イし、アプリケー
ションから利用でき
るようにする
2 Copyright © 2022, Oracle and/or its affiliates
RAW Data Prep Train & Evaluation Deploy
- 3. MLflow概要
• 機械学習のワークフロー支援ツール
• Databrics社により開発
• OSSのライブラリとして提供
• pip install mlflow
• Managed PaaSとして同社からクラウドサービスと
してリリース
• 一般的なMLライブラリと併用
• 実験の試行錯誤の過程で生成される多数をセットで整
理、視覚化
• データセット
• アーティファクト
• 学習パラメータ
• 精度メトリックなど
• 学習環境、デプロイ環境のパッケージ化
• 各種ライブラリ、バージョン、依存関係を完全に
キャプチャ
• 環境の可搬性と処理実行の確実性
• シンプルな関数体形と容易な使い勝手
• 主要クラウドベンダーのMLサービスと連携可能
3 Copyright © 2022, Oracle and/or its affiliates
- 4. MLflow モジュール概要
Copyright © 2022, Oracle and/or its affiliates
4
Mlflow Models
Mlflow Tracking
Mlflow Projects
Mlflow Registry
機械学習のコード実行時に、パラメータ、メトリックなどを
ロギングし、結果を整理、視覚化
機械学習のコードおよび学習環境を、再利用可能かつ再現可
能なフォーマットでパッケージ化
学習済みの予測モデルおよびデプロイ環境を、再利用可能か
つ再現可能なフォーマットでパッケージ化
予測モデルのライフサイクルを一元管理(リリース管理、
バージョニング)
- 5. Mlflow アーキテクチャ
Copyright © 2022, Oracle and/or its affiliates
5
……...
……...
……...
MLソースコード
(Python/R)
app
container
conda
• 予測モデル
• アーティファクト
• 精度メトリック
• 学習パラメータ
• etc.
収集されたデータを
ベースに実験結果を
整理、視覚化
container
conda
予測結果
REST/CLI/Python
予測データ
収集されたデータを
ベースに学習環境を
パッケージ化
収集されたデータをベースに
デプロイ環境をパッケージ化
Staging Production Archived
モデルのバージョン、リ
リース状況を一元管理
コード実行時に各種データ
をデータベースに自動収集
Mlflow Tracking
Mlflow Registry
Mlflow Projects
Mlflow Models
Mlflow UI
- 6. Mlflow Tracking
Copyright © 2022, Oracle and/or its affiliates
6
MLコードにTracking
コードを埋め込む方式
https://www.mlflow.org/docs/latest/tracking.html
MLのコード実行時に定義した情報をログとして記録、整理された状態でMlflow UIから確認
import sklearn
Import mlflow
・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・
(scikit-learnなどMLライブラリのコード)
・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・
# MlflowのRunの定義
with mlflow.start_run():
# 学習パラメータをロギング
mlflow.log_param()
# 予測モデルの精度情報をロギング
mlflow.log_metric()
#アーディファクトをロギング
mlflow.log_artifact()
#予測モデルのロギング
mlflow.sklearn.log_model()
Run #3
• 予測モデル
• アーティファクト
• メトリック
• 学習パラメータ
Run #2
• 予測モデル
• アーティファクト
• メトリック
• 学習パラメータ
Run #1
• 予測モデル
• アーティファクト
• メトリック
• 学習パラメータ
train.py
実行 python train.py
Mlflow UI
実行 python train.py
実行 python train.py
- 7. デモのサンプルデータ
Copyright © 2022, Oracle and/or its affiliates
7
http://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv
データセット:ワインの成分データと品質を纏めたデータセット
デモシナリオ:ワインの成分データから品質(10段階評価)を予測
コード概要:ElasticNetを使った回帰分析
成分データ(説明変数) 品質(目的変数)
- 8. Mlflow Projects
Copyright © 2022, Oracle and/or its affiliates
8
学習時のライブラリの依存関係をキャプチャしcondaもしくはコンテナにパッケージ化
モデル開発時とは異なる環境、異なる人が再度学習する際の学習環境の可搬性と学習の再現性
conda.yaml
データ
name: MLproject_demo
conda_env: conda.yaml
entry_points:
main:
parameters:
alpha: float
l1_ratio: {type: float, default: 0.1}
command: "python src.py --alpha {alpha} --l1-ratio {l1_ratio}"
ソースコード
(src.py)
MLproject
$ mlflow run <project directory>
conda
$ mlflow run <repository url>
channels:
- conda-forge
dependencies:
- python=3.9.7
- pip
- pip:
- mlflow
- scikit-learn==1.0.2
name: mlflow-env
conda仮想環境
の定義ファイル
MLflow Project
の定義ファイル
ライブラリのバージョン、依存関係
が完全にキャプチャされたconda仮
想環境で学習を確実に再現
Projects
mlflow run コマンドにより学習実行
conda
- 9. Mlflow Projects
Copyright © 2022, Oracle and/or its affiliates
9
学習時のライブラリの依存関係をキャプチャしcondaもしくはコンテナにパッケージ化
モデル開発時とは異なる環境、異なる人が再度学習する際の学習環境の可搬性と学習の再現性
Dockerfile
データ
name: docker-example
docker_env:
image: mlflow-docker-example
entry_points:
main:
parameters:
alpha: float
l1_ratio: {type: float, default: 0.1}
command: "python src.py --alpha {alpha} --l1-ratio {l1_ratio}"
ソースコード
(src.py)
MLproject
$ docker build -t mlflow-docker-example -f Dockerfile .
FROM continuumio/miniconda3:4.10.3
RUN pip install mlflow>=1.0
&& pip install numpy==1.21.2
&& pip install scipy
&& pip install pandas==1.3.3
&& pip install scikit-learn==0.24.2
&& pip install cloudpickle
docker image
定義ファイル
MLflow Project
の定義ファイル
ライブラリのバージョン、依存関係が完全にキャ
プチャされたコンテナ環境で学習を確実に再現
$ mlflow run <project directory>
docker imageの作成
container
mlflow run コマンドでコンテナ起動、学習実行
Projects
- 10. Mlflow Models
Copyright © 2022, Oracle and/or its affiliates
10
学習済みモデルのライブラリの依存関係をキャプチャしcondaもしくはコンテナにパッケージ化
学習済みモデルとデプロイ環境の可搬性とデプロイの再現性
データ
ソースコード
(src.py)
Mlflow
Tracking
log_model() conda.yaml
channels:
- conda-forge
dependencies:
- python=3.9.7
- pip
- pip:
- mlflow
- scikit-learn==1.0.2
name: mlflow-env
artifact_path: model
flavors:
python_function:
env: conda.yaml
・・・中略
sklearn:
pickled_model: model.pkl
sklearn_version: 0.19.1
model_uuid: 9b9c2659f233
・・・中略
MLmodel
$ mlflow models serve
$ mlflow models build-docker
予測モデルのRESTサービスをホス
トするconda環境を作成、起動
$ docker run
docker imageを作成
予測モデルのRESTサービス
をホストするコンテナを起動
container
model.pkl
requirements.txt
mlflow
cloudpickle==2.0.0
scikit-learn==0.19.1
Models
学習
実行
ファイル
生成
conda
application
予測結果
REST/CLI/Python
予測データ
application
予測結果
REST/CLI/Python
予測データ
- 11. Mlflow Registry
Mlflow Registry
Copyright © 2022, Oracle and/or its affiliates
11
予測モデルのライフサイクルを一元化されたモデルストアで管理
モデルの整理、バージョニング、フェーズ指定(Staging/Production/Archived)
• 予測モデル
• アーティファクト
• 精度メトリック
• 学習パラメータ
• etc.
Mlflow データストア
Mlflow Tracking
Staging Production Archived
多数の予測モデルの一元管理
• バージョニング
• リリースステージ
Mlflow Models
本番環境へのデプロイ
本番リリース
トラッキング
- 12. MLflow 構成例
Copyright © 2022, Oracle and/or its affiliates
12
学習環境
Object Storage
アーティファクト
ファイルの保存
Mlflow
Tracking Server
PostgreSQL
MySQL
SQLite
メトリック、パラメータ
その他メタデータの保存
MLコードにtracking serverを指定
set_tracking_uri('http://tracking_server_ip:/')
tracking serviceを起動
$ mlflow server --backend-store-uri mysql://user:pass@host:port/database_name
--default-artifact-root S3:/buket_name
--host tracking_server_ip
tracking service
http://tracking_server_ip
tracking
Web UIアクセス
S3もしくはS3互換APIで認証
AWS_ACCESS_KEY_ID = xxxxxxx
AWS_SECRET_ACCESS_KEY =
xxxxxx
- 13. Oracle Cloud Infrastructureのデザインパターン
Copyright © 2022, Oracle and/or its affiliates
13
oracle-quickstartシリーズ(Terraformスクリプト)
https://github.com/oracle-quickstart/oci-mlflow
Object Storage
Data Science
MySQL Database Service
Container Engine
For Kubernetes
Virtual Machine
Mlflow
Tracking Server
ML
学習環境
Tracking
Artifactの保存
学習パラメータ
精度メトリック
の保存
Deploy