SlideShare a Scribd company logo
1 of 14
機械学習入門
MLflowで学ぶMLOpsことはじめ
Subhead goes here on one line
園田憲一
日本オラクル株式会社
ソリューションアーキテクト本部
機械学習のワークフロー
• 整形されていない生
データ
• 企業内の様々なシス
テムで利用される
データストアに散在
するデータ
• データレイク、
RDB、オブジェクト
ストア、NoSQL、
Hadoopなど
• 生データから必要な
データ(特徴量)を抽
出し、機械学習に利
用できるように整形
• 整形されたデータを
統計処理にかけて予
測モデルを構築
• 予測モデルの精度を
評価し、目標の精度
を達成するまで繰り
返し学習する
• 構築した予測モデル
を本番環境にデプロ
イし、アプリケー
ションから利用でき
るようにする
2 Copyright © 2022, Oracle and/or its affiliates
RAW Data Prep Train & Evaluation Deploy
MLflow概要
• 機械学習のワークフロー支援ツール
• Databrics社により開発
• OSSのライブラリとして提供
• pip install mlflow
• Managed PaaSとして同社からクラウドサービスと
してリリース
• 一般的なMLライブラリと併用
• 実験の試行錯誤の過程で生成される多数をセットで整
理、視覚化
• データセット
• アーティファクト
• 学習パラメータ
• 精度メトリックなど
• 学習環境、デプロイ環境のパッケージ化
• 各種ライブラリ、バージョン、依存関係を完全に
キャプチャ
• 環境の可搬性と処理実行の確実性
• シンプルな関数体形と容易な使い勝手
• 主要クラウドベンダーのMLサービスと連携可能
3 Copyright © 2022, Oracle and/or its affiliates
MLflow モジュール概要
Copyright © 2022, Oracle and/or its affiliates
4
Mlflow Models
Mlflow Tracking
Mlflow Projects
Mlflow Registry
機械学習のコード実行時に、パラメータ、メトリックなどを
ロギングし、結果を整理、視覚化
機械学習のコードおよび学習環境を、再利用可能かつ再現可
能なフォーマットでパッケージ化
学習済みの予測モデルおよびデプロイ環境を、再利用可能か
つ再現可能なフォーマットでパッケージ化
予測モデルのライフサイクルを一元管理(リリース管理、
バージョニング)
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
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
デモのサンプルデータ
Copyright © 2022, Oracle and/or its affiliates
7
http://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv
データセット:ワインの成分データと品質を纏めたデータセット
デモシナリオ:ワインの成分データから品質(10段階評価)を予測
コード概要:ElasticNetを使った回帰分析
成分データ(説明変数) 品質(目的変数)
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
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
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
予測データ
Mlflow Registry
Mlflow Registry
Copyright © 2022, Oracle and/or its affiliates
11
予測モデルのライフサイクルを一元化されたモデルストアで管理
モデルの整理、バージョニング、フェーズ指定(Staging/Production/Archived)
• 予測モデル
• アーティファクト
• 精度メトリック
• 学習パラメータ
• etc.
Mlflow データストア
Mlflow Tracking
Staging Production Archived
多数の予測モデルの一元管理
• バージョニング
• リリースステージ
Mlflow Models
本番環境へのデプロイ
本番リリース
トラッキング
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
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
MLflowで学ぶMLOpsことはじめ

More Related Content

What's hot

畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化Yusuke Uchida
 
Amazon SageMakerでカスタムコンテナを使った学習
Amazon SageMakerでカスタムコンテナを使った学習Amazon SageMakerでカスタムコンテナを使った学習
Amazon SageMakerでカスタムコンテナを使った学習西岡 賢一郎
 
MLflowによる機械学習モデルのライフサイクルの管理
MLflowによる機械学習モデルのライフサイクルの管理MLflowによる機械学習モデルのライフサイクルの管理
MLflowによる機械学習モデルのライフサイクルの管理Takeshi Yamamuro
 
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)NTT DATA Technology & Innovation
 
[DL輪読会]Grokking: Generalization Beyond Overfitting on Small Algorithmic Datasets
[DL輪読会]Grokking: Generalization Beyond Overfitting on Small Algorithmic Datasets[DL輪読会]Grokking: Generalization Beyond Overfitting on Small Algorithmic Datasets
[DL輪読会]Grokking: Generalization Beyond Overfitting on Small Algorithmic DatasetsDeep Learning JP
 
機械学習モデルのサービングとは?
機械学習モデルのサービングとは?機械学習モデルのサービングとは?
機械学習モデルのサービングとは?Sho Tanaka
 
[DL輪読会]Learning Transferable Visual Models From Natural Language Supervision
[DL輪読会]Learning Transferable Visual Models From Natural Language Supervision[DL輪読会]Learning Transferable Visual Models From Natural Language Supervision
[DL輪読会]Learning Transferable Visual Models From Natural Language SupervisionDeep Learning JP
 
Tensorflow Liteの量子化アーキテクチャ
Tensorflow Liteの量子化アーキテクチャTensorflow Liteの量子化アーキテクチャ
Tensorflow Liteの量子化アーキテクチャHitoshiSHINABE1
 
【DL輪読会】ViT + Self Supervised Learningまとめ
【DL輪読会】ViT + Self Supervised Learningまとめ【DL輪読会】ViT + Self Supervised Learningまとめ
【DL輪読会】ViT + Self Supervised LearningまとめDeep Learning JP
 
自己教師学習(Self-Supervised Learning)
自己教師学習(Self-Supervised Learning)自己教師学習(Self-Supervised Learning)
自己教師学習(Self-Supervised Learning)cvpaper. challenge
 
Machine learning CI/CD with OSS
Machine learning CI/CD with OSSMachine learning CI/CD with OSS
Machine learning CI/CD with OSSyusuke shibui
 
先駆者に学ぶ MLOpsの実際
先駆者に学ぶ MLOpsの実際先駆者に学ぶ MLOpsの実際
先駆者に学ぶ MLOpsの実際Tetsutaro Watanabe
 
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリングmlm_kansai
 
モデルアーキテクチャ観点からのDeep Neural Network高速化
モデルアーキテクチャ観点からのDeep Neural Network高速化モデルアーキテクチャ観点からのDeep Neural Network高速化
モデルアーキテクチャ観点からのDeep Neural Network高速化Yusuke Uchida
 
(修正)機械学習デザインパターン(ML Design Patterns)の解説
(修正)機械学習デザインパターン(ML Design Patterns)の解説(修正)機械学習デザインパターン(ML Design Patterns)の解説
(修正)機械学習デザインパターン(ML Design Patterns)の解説Hironori Washizaki
 
[DeepLearning論文読み会] Dataset Distillation
[DeepLearning論文読み会] Dataset Distillation[DeepLearning論文読み会] Dataset Distillation
[DeepLearning論文読み会] Dataset DistillationRyutaro Yamauchi
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使うKazuhiro Suga
 
AWSではじめるMLOps
AWSではじめるMLOpsAWSではじめるMLOps
AWSではじめるMLOpsMariOhbuchi
 
[DL輪読会]GLIDE: Guided Language to Image Diffusion for Generation and Editing
[DL輪読会]GLIDE: Guided Language to Image Diffusion  for Generation and Editing[DL輪読会]GLIDE: Guided Language to Image Diffusion  for Generation and Editing
[DL輪読会]GLIDE: Guided Language to Image Diffusion for Generation and EditingDeep Learning JP
 

What's hot (20)

畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化
 
Amazon SageMakerでカスタムコンテナを使った学習
Amazon SageMakerでカスタムコンテナを使った学習Amazon SageMakerでカスタムコンテナを使った学習
Amazon SageMakerでカスタムコンテナを使った学習
 
MLflowによる機械学習モデルのライフサイクルの管理
MLflowによる機械学習モデルのライフサイクルの管理MLflowによる機械学習モデルのライフサイクルの管理
MLflowによる機械学習モデルのライフサイクルの管理
 
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
 
[DL輪読会]Grokking: Generalization Beyond Overfitting on Small Algorithmic Datasets
[DL輪読会]Grokking: Generalization Beyond Overfitting on Small Algorithmic Datasets[DL輪読会]Grokking: Generalization Beyond Overfitting on Small Algorithmic Datasets
[DL輪読会]Grokking: Generalization Beyond Overfitting on Small Algorithmic Datasets
 
機械学習モデルのサービングとは?
機械学習モデルのサービングとは?機械学習モデルのサービングとは?
機械学習モデルのサービングとは?
 
[DL輪読会]Learning Transferable Visual Models From Natural Language Supervision
[DL輪読会]Learning Transferable Visual Models From Natural Language Supervision[DL輪読会]Learning Transferable Visual Models From Natural Language Supervision
[DL輪読会]Learning Transferable Visual Models From Natural Language Supervision
 
Tensorflow Liteの量子化アーキテクチャ
Tensorflow Liteの量子化アーキテクチャTensorflow Liteの量子化アーキテクチャ
Tensorflow Liteの量子化アーキテクチャ
 
研究効率化Tips Ver.2
研究効率化Tips Ver.2研究効率化Tips Ver.2
研究効率化Tips Ver.2
 
【DL輪読会】ViT + Self Supervised Learningまとめ
【DL輪読会】ViT + Self Supervised Learningまとめ【DL輪読会】ViT + Self Supervised Learningまとめ
【DL輪読会】ViT + Self Supervised Learningまとめ
 
自己教師学習(Self-Supervised Learning)
自己教師学習(Self-Supervised Learning)自己教師学習(Self-Supervised Learning)
自己教師学習(Self-Supervised Learning)
 
Machine learning CI/CD with OSS
Machine learning CI/CD with OSSMachine learning CI/CD with OSS
Machine learning CI/CD with OSS
 
先駆者に学ぶ MLOpsの実際
先駆者に学ぶ MLOpsの実際先駆者に学ぶ MLOpsの実際
先駆者に学ぶ MLOpsの実際
 
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
 
モデルアーキテクチャ観点からのDeep Neural Network高速化
モデルアーキテクチャ観点からのDeep Neural Network高速化モデルアーキテクチャ観点からのDeep Neural Network高速化
モデルアーキテクチャ観点からのDeep Neural Network高速化
 
(修正)機械学習デザインパターン(ML Design Patterns)の解説
(修正)機械学習デザインパターン(ML Design Patterns)の解説(修正)機械学習デザインパターン(ML Design Patterns)の解説
(修正)機械学習デザインパターン(ML Design Patterns)の解説
 
[DeepLearning論文読み会] Dataset Distillation
[DeepLearning論文読み会] Dataset Distillation[DeepLearning論文読み会] Dataset Distillation
[DeepLearning論文読み会] Dataset Distillation
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使う
 
AWSではじめるMLOps
AWSではじめるMLOpsAWSではじめるMLOps
AWSではじめるMLOps
 
[DL輪読会]GLIDE: Guided Language to Image Diffusion for Generation and Editing
[DL輪読会]GLIDE: Guided Language to Image Diffusion  for Generation and Editing[DL輪読会]GLIDE: Guided Language to Image Diffusion  for Generation and Editing
[DL輪読会]GLIDE: Guided Language to Image Diffusion for Generation and Editing
 

Similar to MLflowで学ぶMLOpsことはじめ

PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門じゅん なかざ
 
機械学習基盤として活用するAutonomous Database
機械学習基盤として活用するAutonomous Database機械学習基盤として活用するAutonomous Database
機械学習基盤として活用するAutonomous DatabaseKenichi Sonoda
 
Azure Antenna AI 概要
Azure Antenna AI 概要Azure Antenna AI 概要
Azure Antenna AI 概要Miho Yamamoto
 
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】Tomoharu ASAMI
 
Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造Etsuji Nakai
 
企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)
企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)
企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)オラクルエンジニア通信
 
データ仮想化を活用したデータ分析のフローと分析モデル作成の自動化のご紹介
データ仮想化を活用したデータ分析のフローと分析モデル作成の自動化のご紹介データ仮想化を活用したデータ分析のフローと分析モデル作成の自動化のご紹介
データ仮想化を活用したデータ分析のフローと分析モデル作成の自動化のご紹介Denodo
 
Jjug springセッション
Jjug springセッションJjug springセッション
Jjug springセッションYuichi Hasegawa
 
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006Cloudera Japan
 
2012年1月技術ひろば
2012年1月技術ひろば2012年1月技術ひろば
2012年1月技術ひろば貴仁 大和屋
 
中規模Androidアプリ開発の過程に生じた問題と対策の紹介
中規模Androidアプリ開発の過程に生じた問題と対策の紹介中規模Androidアプリ開発の過程に生じた問題と対策の紹介
中規模Androidアプリ開発の過程に生じた問題と対策の紹介NilOne Ltd.
 
The seminar of asp.net at 201908 sakurug
The seminar of asp.net at 201908 sakurugThe seminar of asp.net at 201908 sakurug
The seminar of asp.net at 201908 sakurugSAKURUG co.
 
WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料Recruit Technologies
 
【de:code 2020】 アマダの Azure への取り組みと DevOPS・MLOPS 環境の構築と運用
【de:code 2020】 アマダの Azure への取り組みと DevOPS・MLOPS 環境の構築と運用【de:code 2020】 アマダの Azure への取り組みと DevOPS・MLOPS 環境の構築と運用
【de:code 2020】 アマダの Azure への取り組みと DevOPS・MLOPS 環境の構築と運用日本マイクロソフト株式会社
 
G tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイント
G tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイントG tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイント
G tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイントTrainocate Japan, Ltd.
 
Open stack reference architecture v1 2
Open stack reference architecture v1 2Open stack reference architecture v1 2
Open stack reference architecture v1 2Dell TechCenter Japan
 

Similar to MLflowで学ぶMLOpsことはじめ (20)

Ocha_MLflow_MLOps.pdf
Ocha_MLflow_MLOps.pdfOcha_MLflow_MLOps.pdf
Ocha_MLflow_MLOps.pdf
 
PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門
 
機械学習基盤として活用するAutonomous Database
機械学習基盤として活用するAutonomous Database機械学習基盤として活用するAutonomous Database
機械学習基盤として活用するAutonomous Database
 
Azure Antenna AI 概要
Azure Antenna AI 概要Azure Antenna AI 概要
Azure Antenna AI 概要
 
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
 
Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造
 
企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)
企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)
企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)
 
データ仮想化を活用したデータ分析のフローと分析モデル作成の自動化のご紹介
データ仮想化を活用したデータ分析のフローと分析モデル作成の自動化のご紹介データ仮想化を活用したデータ分析のフローと分析モデル作成の自動化のご紹介
データ仮想化を活用したデータ分析のフローと分析モデル作成の自動化のご紹介
 
Jjug springセッション
Jjug springセッションJjug springセッション
Jjug springセッション
 
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
 
2012年1月技術ひろば
2012年1月技術ひろば2012年1月技術ひろば
2012年1月技術ひろば
 
中規模Androidアプリ開発の過程に生じた問題と対策の紹介
中規模Androidアプリ開発の過程に生じた問題と対策の紹介中規模Androidアプリ開発の過程に生じた問題と対策の紹介
中規模Androidアプリ開発の過程に生じた問題と対策の紹介
 
Oracle Database 12c Release 1 PSR 12.1.0.2 のご紹介
Oracle Database 12c Release 1 PSR 12.1.0.2 のご紹介Oracle Database 12c Release 1 PSR 12.1.0.2 のご紹介
Oracle Database 12c Release 1 PSR 12.1.0.2 のご紹介
 
Oracle Database (CDB) on Docker を動かしてみる
Oracle Database (CDB) on Docker を動かしてみるOracle Database (CDB) on Docker を動かしてみる
Oracle Database (CDB) on Docker を動かしてみる
 
The seminar of asp.net at 201908 sakurug
The seminar of asp.net at 201908 sakurugThe seminar of asp.net at 201908 sakurug
The seminar of asp.net at 201908 sakurug
 
WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料
 
【de:code 2020】 アマダの Azure への取り組みと DevOPS・MLOPS 環境の構築と運用
【de:code 2020】 アマダの Azure への取り組みと DevOPS・MLOPS 環境の構築と運用【de:code 2020】 アマダの Azure への取り組みと DevOPS・MLOPS 環境の構築と運用
【de:code 2020】 アマダの Azure への取り組みと DevOPS・MLOPS 環境の構築と運用
 
G tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイント
G tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイントG tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイント
G tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイント
 
AWS re:Invent2017で見た AWSの強さとは
AWS re:Invent2017で見た AWSの強さとは AWS re:Invent2017で見た AWSの強さとは
AWS re:Invent2017で見た AWSの強さとは
 
Open stack reference architecture v1 2
Open stack reference architecture v1 2Open stack reference architecture v1 2
Open stack reference architecture v1 2
 

More from Kenichi Sonoda

[Oracle Code Night] Reinforcement Learning Demo Code
[Oracle Code Night] Reinforcement Learning Demo Code[Oracle Code Night] Reinforcement Learning Demo Code
[Oracle Code Night] Reinforcement Learning Demo CodeKenichi Sonoda
 
20210831 code night はじめての強化学習
20210831 code night  はじめての強化学習20210831 code night  はじめての強化学習
20210831 code night はじめての強化学習Kenichi Sonoda
 
20210531 ora jam_stackgan
20210531 ora jam_stackgan20210531 ora jam_stackgan
20210531 ora jam_stackganKenichi Sonoda
 
[Code night 20200531]machine learning for begginer generation of virtual rea...
[Code night 20200531]machine learning for begginer  generation of virtual rea...[Code night 20200531]machine learning for begginer  generation of virtual rea...
[Code night 20200531]machine learning for begginer generation of virtual rea...Kenichi Sonoda
 
20210226[oracle code night] 機械学習入門:ディープラーニングの基礎から転移学習まで
20210226[oracle code night] 機械学習入門:ディープラーニングの基礎から転移学習まで20210226[oracle code night] 機械学習入門:ディープラーニングの基礎から転移学習まで
20210226[oracle code night] 機械学習入門:ディープラーニングの基礎から転移学習までKenichi Sonoda
 
[Code night] natural language proccessing and machine learning
[Code night] natural language proccessing and machine learning[Code night] natural language proccessing and machine learning
[Code night] natural language proccessing and machine learningKenichi Sonoda
 
20200812 Cbject Detection with OpenCV and CNN
20200812 Cbject Detection with OpenCV and CNN20200812 Cbject Detection with OpenCV and CNN
20200812 Cbject Detection with OpenCV and CNNKenichi Sonoda
 
20200402 oracle cloud infrastructure data science
20200402 oracle cloud infrastructure data science20200402 oracle cloud infrastructure data science
20200402 oracle cloud infrastructure data scienceKenichi Sonoda
 
[Oracle big data jam session #1] Apache Spark ことはじめ
[Oracle big data jam session #1] Apache Spark ことはじめ[Oracle big data jam session #1] Apache Spark ことはじめ
[Oracle big data jam session #1] Apache Spark ことはじめKenichi Sonoda
 
Oracle cloud infrastructure shared file service comparison 20181019 ss
Oracle cloud infrastructure shared file service comparison 20181019 ssOracle cloud infrastructure shared file service comparison 20181019 ss
Oracle cloud infrastructure shared file service comparison 20181019 ssKenichi Sonoda
 
Oci file storage service deep dive 20181001 ss
Oci file storage service deep dive 20181001 ssOci file storage service deep dive 20181001 ss
Oci file storage service deep dive 20181001 ssKenichi Sonoda
 
Configureing analytics system with apache spark and object storage service of...
Configureing analytics system with apache spark and object storage service of...Configureing analytics system with apache spark and object storage service of...
Configureing analytics system with apache spark and object storage service of...Kenichi Sonoda
 
Oci object storage deep dive 20190329 ss
Oci object storage deep dive 20190329 ssOci object storage deep dive 20190329 ss
Oci object storage deep dive 20190329 ssKenichi Sonoda
 

More from Kenichi Sonoda (13)

[Oracle Code Night] Reinforcement Learning Demo Code
[Oracle Code Night] Reinforcement Learning Demo Code[Oracle Code Night] Reinforcement Learning Demo Code
[Oracle Code Night] Reinforcement Learning Demo Code
 
20210831 code night はじめての強化学習
20210831 code night  はじめての強化学習20210831 code night  はじめての強化学習
20210831 code night はじめての強化学習
 
20210531 ora jam_stackgan
20210531 ora jam_stackgan20210531 ora jam_stackgan
20210531 ora jam_stackgan
 
[Code night 20200531]machine learning for begginer generation of virtual rea...
[Code night 20200531]machine learning for begginer  generation of virtual rea...[Code night 20200531]machine learning for begginer  generation of virtual rea...
[Code night 20200531]machine learning for begginer generation of virtual rea...
 
20210226[oracle code night] 機械学習入門:ディープラーニングの基礎から転移学習まで
20210226[oracle code night] 機械学習入門:ディープラーニングの基礎から転移学習まで20210226[oracle code night] 機械学習入門:ディープラーニングの基礎から転移学習まで
20210226[oracle code night] 機械学習入門:ディープラーニングの基礎から転移学習まで
 
[Code night] natural language proccessing and machine learning
[Code night] natural language proccessing and machine learning[Code night] natural language proccessing and machine learning
[Code night] natural language proccessing and machine learning
 
20200812 Cbject Detection with OpenCV and CNN
20200812 Cbject Detection with OpenCV and CNN20200812 Cbject Detection with OpenCV and CNN
20200812 Cbject Detection with OpenCV and CNN
 
20200402 oracle cloud infrastructure data science
20200402 oracle cloud infrastructure data science20200402 oracle cloud infrastructure data science
20200402 oracle cloud infrastructure data science
 
[Oracle big data jam session #1] Apache Spark ことはじめ
[Oracle big data jam session #1] Apache Spark ことはじめ[Oracle big data jam session #1] Apache Spark ことはじめ
[Oracle big data jam session #1] Apache Spark ことはじめ
 
Oracle cloud infrastructure shared file service comparison 20181019 ss
Oracle cloud infrastructure shared file service comparison 20181019 ssOracle cloud infrastructure shared file service comparison 20181019 ss
Oracle cloud infrastructure shared file service comparison 20181019 ss
 
Oci file storage service deep dive 20181001 ss
Oci file storage service deep dive 20181001 ssOci file storage service deep dive 20181001 ss
Oci file storage service deep dive 20181001 ss
 
Configureing analytics system with apache spark and object storage service of...
Configureing analytics system with apache spark and object storage service of...Configureing analytics system with apache spark and object storage service of...
Configureing analytics system with apache spark and object storage service of...
 
Oci object storage deep dive 20190329 ss
Oci object storage deep dive 20190329 ssOci object storage deep dive 20190329 ss
Oci object storage deep dive 20190329 ss
 

MLflowで学ぶMLOpsことはじめ

  • 1. 機械学習入門 MLflowで学ぶMLOpsことはじめ Subhead goes here on one line 園田憲一 日本オラクル株式会社 ソリューションアーキテクト本部
  • 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