SlideShare a Scribd company logo
機械学習
システムと品質
2020/09/12
Shibui Yusuke
自己紹介
shibui yusuke
● いろいろ → メルカリ → TierIV(いまここ)
● MLOpsエンジニア &
SRE &
ARエンジニア
● もともとクラウド基盤の開発、運用。
● ここ4年くらいMLOpsで仕事。
● Github: @shibuiwilliam
● Qiita: @cvusk
● FB: yusuke.shibui
● 最近の趣味:Edge AIとARと3Dマッピング
cat : 0.55
dog: 0.45
human : 0.70
gorilla : 0.30
物体検知
CatOps in work from home
放置しているとネコに
椅子を奪われる。
ネコ障害対応(餌、遊ぶ)。
「遊ぶ」を自動化する。
椅子に座っていても
ハンズフリーで遊べる。
day
奪
わ
れ
回
数
ハンズフリー導入
飽き始める
Dev
Data-driven
Agenda
1. MLOps
2. システムとして考える機械学習
3. 機械学習システムの品質
4. 機械学習のスピード
5. 機械学習と可用性
6. まとめ
機械学習のシステム
● ユーザから見たAI
● MLエンジニアから見たML
● ソフトウェアエンジニアから見た
MLシステム
猫!
犬!
猫!
https://papers.nips.cc/paper/5656-hidden-technical-debt-in-machine-learning-systems.pdf
Accuracy
99.99%
MLOps
● 機械学習をDevOpsに則って開発、運用する手法と文化。
● 機械学習はモデルを作るだけでなく、モデルを本番環境に導入して
ビジネスインパクトを創出することが重要。
● 本番環境で機械学習モデルを稼働させ、継続的に改善していく
(CI、CD、CT)ことで価値を最大化。
● 機械学習のワークフローをシステムとして開発、運用することが望ましい。
システムとして考える機械学習
推論器
インターフェイ
ス
ログ
学習評価
モデル
管理
コード
管理
運用監視
イメージ
管理
スト
レージ
CI
前処理
推論
後処理
BI
→
機械学習で
DevOpsを
回すために必要
↓最低限必要
機械学習システムの品質
機械学習システムの品質を3カテゴリに分類してみる。
1. 機械学習の推論モデル
a. 推論モデルのパフォーマンス
b. 本番データの変化による劣化とエラー
c. 問題定義とソリューション
2. 推論モデルを稼働させるシステム
a. 入出力のデータやデータ型
b. 推論スピードと可用性
c. 例外処理
3. 運用と体制
a. モデルの再現および再学習
b. 推論器の再現およびロールバック
c. 維持可能な運用体制
Client RT LB
int float
test data
accuracy:
99.99%
何のML
だっけ?
1sec/req
モデル作った
VM消したよ
dockerimg:latest
上書き
error率
0.1%
アサイン
変わった
me
too
転
職
商品カテゴリ
追加削除
そして誰も
いなくなった
アンチパターン
● 推論器が遅すぎてユーザを待たせてる。 ● 性能劣化した推論器でも継続して
すべてのリクエストに推論を返す。
test data
accuracy:
99.99%
5sec/req
2015年の
test accuracy:
99.99%
ネコ!
イヌ!
2015年
2020年
5秒で離脱
機械学習のスピード
● 学習のスピード:モデル改善の効率。 TensorboardでProfiling可能。
https://www.tensorflow.org/tensorboard/tensorboard_profiling_keras
● 推論のスピード:ユーザ向けサービスのサービスレベル。
○ レスポンススピード:リクエストに対する推論結果の返信所要時間。
○ 負荷耐性:レスポンススピードの安定度。負荷テストで計測。
○ 誰も長く待ちたくない!
入力
前処理
推論
後処理
出力
通信
前処理
推論
後処理
出力
通信
入力
所要時間
通信
機械学習の推論スピード
● 推論器のボトルネックは推論。 Deep learningの場合、9割以上がDeep learningだったりする。
● 学習コストの高いDeep learningは学習後に測定するのではなく、学習前に測っておく。
● Too bigなモデルでない限り、学習後はモデルは変更せず、実行環境やプログラムで高速化、
可用性向上を図るほうが効率的なことがある。
○ モデルをチューニングする費用対効果 < 基盤でチューニングする費用対効果
入力
前処理
推論
後処理
出力
通信
前処理
推論
後処理
出力
通信
入力
所要時間
通信
機械学習と負荷テスト
● 推論器に対して負荷テストを実施。
● 入力が画像やテキストの場合、ランダムなサイズのデータを用意して所要時間や負荷耐性を測る。
● 推論はCPUバウンドのため、高負荷になると CPU使用率が上がるはず。
Load tester LB
計測時間
req/sec
計測時間
RAM
CPU
負荷に対して
CPU使用率が
上がるはず。
計測時間
RAM
CPU
CPU使用率が
低い場合は
以下のいずれか
1. 効率的なモデル
2. サーバの設定漏れ
負荷負荷テストの構成 リソース利用
可用性
● サーキットブレーカー
○ 急激な負荷増で処理能力やスケールアウトが
間に合わない場合、一部のリクエストを
遮断して全断を防ぐ。
○ NginxやEnvoy proxyで標準装備。
● 推論のバックアッププランと例外処理
○ デフォルトの推論結果や挙動を決めておいて、
エラー発生時はデフォルトの挙動を発動。
○ 障害発生時や遅延時に有効。
○ 本番データの傾向が変わって推論器が性能劣化
している場合も環境変数でデフォルトの推論を
返すようにすることもできる。
Client LB
Nginx 推論器
circuit break
over 300rps
Client LB LB
<= 300rps: 推論
> 300rps: default 0
まとめ
● 推論結果を返却するまでが機械学習。
● 確率的 & 重い計算処理が含まれる機械学習を本番環境で動かすためには、
正常に動かなかった場合のバックアッププランが必要。
● 機械学習を本番導入するときの転ばぬ先の杖になれば幸いです。
● もっと詳しく
https://www.slideshare.net/yusukeshibui/ml-system-inpython

More Related Content

What's hot

Testing machine learning development
Testing machine learning developmentTesting machine learning development
Testing machine learning development
yusuke shibui
 
ML system design_pattern
ML system design_patternML system design_pattern
ML system design_pattern
yusuke shibui
 
TFLite_and_PyTorch_Mobile
TFLite_and_PyTorch_MobileTFLite_and_PyTorch_Mobile
TFLite_and_PyTorch_Mobile
yusuke shibui
 
Twillio deadshot made me happy
Twillio deadshot made me happyTwillio deadshot made me happy
Twillio deadshot made me happy
yusuke shibui
 
Machine learning and_system_design
Machine learning and_system_designMachine learning and_system_design
Machine learning and_system_design
yusuke shibui
 
Mercari Image search 1st Anniversary
Mercari Image search 1st AnniversaryMercari Image search 1st Anniversary
Mercari Image search 1st Anniversary
yusuke shibui
 
Machine learning microservice_management
Machine learning microservice_managementMachine learning microservice_management
Machine learning microservice_management
yusuke shibui
 
Pythonで機械学習を自動化 auto sklearn
Pythonで機械学習を自動化 auto sklearnPythonで機械学習を自動化 auto sklearn
Pythonで機械学習を自動化 auto sklearn
Yukino Ikegami
 
S08 t0 orientation
S08 t0 orientationS08 t0 orientation
S08 t0 orientation
Takeshi Akutsu
 
興味から遠い論文を”あえて”レコメンドするSlack Botを作成してみる
興味から遠い論文を”あえて”レコメンドするSlack Botを作成してみる興味から遠い論文を”あえて”レコメンドするSlack Botを作成してみる
興味から遠い論文を”あえて”レコメンドするSlack Botを作成してみる
Katsuya Ishiyama
 
Devとopsをつなぐpuppet
DevとopsをつなぐpuppetDevとopsをつなぐpuppet
Devとopsをつなぐpuppetyuzorock
 
Jupyter Notebookを納品した話
Jupyter Notebookを納品した話Jupyter Notebookを納品した話
Jupyter Notebookを納品した話
Hiroki Yamamoto
 
Jupyterで手順再現!Elasticsearch構築・運用を実行可能ドキュメントで機械化してみた
Jupyterで手順再現!Elasticsearch構築・運用を実行可能ドキュメントで機械化してみたJupyterで手順再現!Elasticsearch構築・運用を実行可能ドキュメントで機械化してみた
Jupyterで手順再現!Elasticsearch構築・運用を実行可能ドキュメントで機械化してみた
Satoshi Yazawa
 
PyData入門(超初心者編)~野球のデータをカジュアルに可視化
PyData入門(超初心者編)~野球のデータをカジュアルに可視化PyData入門(超初心者編)~野球のデータをカジュアルに可視化
PyData入門(超初心者編)~野球のデータをカジュアルに可視化
Shinichi Nakagawa
 
S09 t0 orientation
S09 t0 orientationS09 t0 orientation
S09 t0 orientation
Takeshi Akutsu
 
Herokuの課金から逃れるための安い鯖探し
Herokuの課金から逃れるための安い鯖探しHerokuの課金から逃れるための安い鯖探し
Herokuの課金から逃れるための安い鯖探し
gecko655
 
Herokuの新料金について
Herokuの新料金についてHerokuの新料金について
Herokuの新料金について
gecko655
 
2014年の制作物報告
2014年の制作物報告2014年の制作物報告
2014年の制作物報告
uu ymd
 
Scikit-learnを使って 画像分類を行う
Scikit-learnを使って 画像分類を行うScikit-learnを使って 画像分類を行う
Scikit-learnを使って 画像分類を行う
Arata Honda
 

What's hot (20)

Testing machine learning development
Testing machine learning developmentTesting machine learning development
Testing machine learning development
 
ML system design_pattern
ML system design_patternML system design_pattern
ML system design_pattern
 
TFLite_and_PyTorch_Mobile
TFLite_and_PyTorch_MobileTFLite_and_PyTorch_Mobile
TFLite_and_PyTorch_Mobile
 
Twillio deadshot made me happy
Twillio deadshot made me happyTwillio deadshot made me happy
Twillio deadshot made me happy
 
Machine learning and_system_design
Machine learning and_system_designMachine learning and_system_design
Machine learning and_system_design
 
Mercari Image search 1st Anniversary
Mercari Image search 1st AnniversaryMercari Image search 1st Anniversary
Mercari Image search 1st Anniversary
 
Machine learning microservice_management
Machine learning microservice_managementMachine learning microservice_management
Machine learning microservice_management
 
Pythonで機械学習を自動化 auto sklearn
Pythonで機械学習を自動化 auto sklearnPythonで機械学習を自動化 auto sklearn
Pythonで機械学習を自動化 auto sklearn
 
S08 t0 orientation
S08 t0 orientationS08 t0 orientation
S08 t0 orientation
 
興味から遠い論文を”あえて”レコメンドするSlack Botを作成してみる
興味から遠い論文を”あえて”レコメンドするSlack Botを作成してみる興味から遠い論文を”あえて”レコメンドするSlack Botを作成してみる
興味から遠い論文を”あえて”レコメンドするSlack Botを作成してみる
 
Devとopsをつなぐpuppet
DevとopsをつなぐpuppetDevとopsをつなぐpuppet
Devとopsをつなぐpuppet
 
Hachiojipm31
Hachiojipm31Hachiojipm31
Hachiojipm31
 
Jupyter Notebookを納品した話
Jupyter Notebookを納品した話Jupyter Notebookを納品した話
Jupyter Notebookを納品した話
 
Jupyterで手順再現!Elasticsearch構築・運用を実行可能ドキュメントで機械化してみた
Jupyterで手順再現!Elasticsearch構築・運用を実行可能ドキュメントで機械化してみたJupyterで手順再現!Elasticsearch構築・運用を実行可能ドキュメントで機械化してみた
Jupyterで手順再現!Elasticsearch構築・運用を実行可能ドキュメントで機械化してみた
 
PyData入門(超初心者編)~野球のデータをカジュアルに可視化
PyData入門(超初心者編)~野球のデータをカジュアルに可視化PyData入門(超初心者編)~野球のデータをカジュアルに可視化
PyData入門(超初心者編)~野球のデータをカジュアルに可視化
 
S09 t0 orientation
S09 t0 orientationS09 t0 orientation
S09 t0 orientation
 
Herokuの課金から逃れるための安い鯖探し
Herokuの課金から逃れるための安い鯖探しHerokuの課金から逃れるための安い鯖探し
Herokuの課金から逃れるための安い鯖探し
 
Herokuの新料金について
Herokuの新料金についてHerokuの新料金について
Herokuの新料金について
 
2014年の制作物報告
2014年の制作物報告2014年の制作物報告
2014年の制作物報告
 
Scikit-learnを使って 画像分類を行う
Scikit-learnを使って 画像分類を行うScikit-learnを使って 画像分類を行う
Scikit-learnを使って 画像分類を行う
 

Similar to Quality of ml_system

機械学習システム構築実践ガイド
機械学習システム構築実践ガイド機械学習システム構築実践ガイド
機械学習システム構築実践ガイド
yusuke shibui
 
Generative AIと検索を組み合わせた新たな体験の模索
Generative AIと検索を組み合わせた新たな体験の模索Generative AIと検索を組み合わせた新たな体験の模索
Generative AIと検索を組み合わせた新たな体験の模索
yusuke shibui
 
Creative as Software Engineering for GenAI LT
Creative as Software Engineering for GenAI LTCreative as Software Engineering for GenAI LT
Creative as Software Engineering for GenAI LT
yusuke shibui
 
Reviewing_machine_learning_program.pdf
Reviewing_machine_learning_program.pdfReviewing_machine_learning_program.pdf
Reviewing_machine_learning_program.pdf
yusuke shibui
 
machine_learning_failure_apocalypse.pdf
machine_learning_failure_apocalypse.pdfmachine_learning_failure_apocalypse.pdf
machine_learning_failure_apocalypse.pdf
yusuke shibui
 
機械学習でテスト実行を効率化するLaunchable.pdf
機械学習でテスト実行を効率化するLaunchable.pdf機械学習でテスト実行を効率化するLaunchable.pdf
機械学習でテスト実行を効率化するLaunchable.pdf
yusuke shibui
 
MLOps failure(1_108)
MLOps failure(1_108)MLOps failure(1_108)
MLOps failure(1_108)
yusuke shibui
 
簡単に機械学習(画像)を使おうと思ったけど、駄目だった話
簡単に機械学習(画像)を使おうと思ったけど、駄目だった話簡単に機械学習(画像)を使おうと思ったけど、駄目だった話
簡単に機械学習(画像)を使おうと思ったけど、駄目だった話
Mitsushige Ishiguro
 
クラウドセキュリティ基礎 @セキュリティ・ミニキャンプ in 東北 2016 #seccamp
クラウドセキュリティ基礎 @セキュリティ・ミニキャンプ in 東北 2016 #seccampクラウドセキュリティ基礎 @セキュリティ・ミニキャンプ in 東北 2016 #seccamp
クラウドセキュリティ基礎 @セキュリティ・ミニキャンプ in 東北 2016 #seccamp
Masahiro NAKAYAMA
 
Handoffは動かない〜これから役立たないバッドノウハウ集
Handoffは動かない〜これから役立たないバッドノウハウ集Handoffは動かない〜これから役立たないバッドノウハウ集
Handoffは動かない〜これから役立たないバッドノウハウ集
Yuichi Yoshida
 
Juliaを使った機械学習
Juliaを使った機械学習Juliaを使った機械学習
Juliaを使った機械学習
Aki Ariga
 
Jupyterで運用やってみた
Jupyterで運用やってみたJupyterで運用やってみた
Jupyterで運用やってみた
Satoshi Yazawa
 
Netadashi Meetup #2 20170120
Netadashi Meetup #2 20170120Netadashi Meetup #2 20170120
Netadashi Meetup #2 20170120
Shigeki Morizane
 
Swiftで機械学習(Play Machinelearning with Swift easily)
Swiftで機械学習(Play Machinelearning with Swift easily)Swiftで機械学習(Play Machinelearning with Swift easily)
Swiftで機械学習(Play Machinelearning with Swift easily)
Yusuke Yoshie
 
Global Lab Sendai主催 Unity初心者講座2018
Global Lab Sendai主催 Unity初心者講座2018Global Lab Sendai主催 Unity初心者講座2018
Global Lab Sendai主催 Unity初心者講座2018
Jun Shimura
 

Similar to Quality of ml_system (15)

機械学習システム構築実践ガイド
機械学習システム構築実践ガイド機械学習システム構築実践ガイド
機械学習システム構築実践ガイド
 
Generative AIと検索を組み合わせた新たな体験の模索
Generative AIと検索を組み合わせた新たな体験の模索Generative AIと検索を組み合わせた新たな体験の模索
Generative AIと検索を組み合わせた新たな体験の模索
 
Creative as Software Engineering for GenAI LT
Creative as Software Engineering for GenAI LTCreative as Software Engineering for GenAI LT
Creative as Software Engineering for GenAI LT
 
Reviewing_machine_learning_program.pdf
Reviewing_machine_learning_program.pdfReviewing_machine_learning_program.pdf
Reviewing_machine_learning_program.pdf
 
machine_learning_failure_apocalypse.pdf
machine_learning_failure_apocalypse.pdfmachine_learning_failure_apocalypse.pdf
machine_learning_failure_apocalypse.pdf
 
機械学習でテスト実行を効率化するLaunchable.pdf
機械学習でテスト実行を効率化するLaunchable.pdf機械学習でテスト実行を効率化するLaunchable.pdf
機械学習でテスト実行を効率化するLaunchable.pdf
 
MLOps failure(1_108)
MLOps failure(1_108)MLOps failure(1_108)
MLOps failure(1_108)
 
簡単に機械学習(画像)を使おうと思ったけど、駄目だった話
簡単に機械学習(画像)を使おうと思ったけど、駄目だった話簡単に機械学習(画像)を使おうと思ったけど、駄目だった話
簡単に機械学習(画像)を使おうと思ったけど、駄目だった話
 
クラウドセキュリティ基礎 @セキュリティ・ミニキャンプ in 東北 2016 #seccamp
クラウドセキュリティ基礎 @セキュリティ・ミニキャンプ in 東北 2016 #seccampクラウドセキュリティ基礎 @セキュリティ・ミニキャンプ in 東北 2016 #seccamp
クラウドセキュリティ基礎 @セキュリティ・ミニキャンプ in 東北 2016 #seccamp
 
Handoffは動かない〜これから役立たないバッドノウハウ集
Handoffは動かない〜これから役立たないバッドノウハウ集Handoffは動かない〜これから役立たないバッドノウハウ集
Handoffは動かない〜これから役立たないバッドノウハウ集
 
Juliaを使った機械学習
Juliaを使った機械学習Juliaを使った機械学習
Juliaを使った機械学習
 
Jupyterで運用やってみた
Jupyterで運用やってみたJupyterで運用やってみた
Jupyterで運用やってみた
 
Netadashi Meetup #2 20170120
Netadashi Meetup #2 20170120Netadashi Meetup #2 20170120
Netadashi Meetup #2 20170120
 
Swiftで機械学習(Play Machinelearning with Swift easily)
Swiftで機械学習(Play Machinelearning with Swift easily)Swiftで機械学習(Play Machinelearning with Swift easily)
Swiftで機械学習(Play Machinelearning with Swift easily)
 
Global Lab Sendai主催 Unity初心者講座2018
Global Lab Sendai主催 Unity初心者講座2018Global Lab Sendai主催 Unity初心者講座2018
Global Lab Sendai主催 Unity初心者講座2018
 

Recently uploaded

CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdfCO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
yamamotominami
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
fisuda
 
NIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしようNIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしよう
You&I
 
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
ooishi1
 
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
You&I
 
Grokking Simplicity探訪
Grokking Simplicity探訪Grokking Simplicity探訪
Grokking Simplicity探訪
Yoshitaka Kawashima
 

Recently uploaded (6)

CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdfCO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
 
NIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしようNIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしよう
 
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
 
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
 
Grokking Simplicity探訪
Grokking Simplicity探訪Grokking Simplicity探訪
Grokking Simplicity探訪
 

Quality of ml_system