Weitere ähnliche Inhalte
Ähnlich wie GOの機械学習システムを支えるMLOps事例紹介 (20)
Mehr von Takashi Suzuki (9)
Kürzlich hochgeladen (12)
GOの機械学習システムを支えるMLOps事例紹介
- 2. Mobility Technologies Co., Ltd.
自己紹介
2
鈴木 隆史 | Takashi Suzuki
開発本部 AI技術開発部 MLエンジニアリンググループ
● 2019年DeNA入社
機械学習の実験基盤やパイプラインの設計開発を担当
● 2020年Mobility Technologies転籍
- 13. Mobility Technologies Co., Ltd.
MLシステムのリアルタイムデータの重要性
13
● 時間帯による需要変化、タクシーの供給変化など、刻一刻と状況は変化する
● 例: 突然の商業施設閉館による道路の需要減
高需要道路 低需要道路
施設閉館
Map data ©2021 Google
- 14. Mobility Technologies Co., Ltd.
MLシステムのワークフロー
14
● 新鮮なデータで推論・学習(モデル更新)を行う必要がある
現在のモデルでリアルタイムデータに対し推論(短期の変化)
直近のデータを用いて学習・モデルを更新(中長期の変化)
前処理 推論
推論パイプライン (5分ごと) 統計値
作成
前処理
MLモデル更新パイプライン (1週ごと)
学習
バッチ推論 シミュレーション
- 19. Mobility Technologies Co., Ltd.
MLシステムにおけるテストの難しさ
19
統計値
作成 前処理 学習
バッチ
推論
シミュレータ
デプロイサイクル
● 開始から終了まで10時間ほど要する
● 学習など、ステップ単位でも1時間以上要するものも
● BigQuery や GCS を含む複雑な依存関係
● 動作の保証だけでなく、精度も考慮する必要
- 20. Mobility Technologies Co., Ltd.
MLシステムにおけるテストの難しさ
20
精度テスト
- 最新 develop image で定期実行
- 10時間ほど要する
- プロダクションと同条件のデータ
- 精度の面は監視・通知によってカバー
- 問題なければ本番環境にデプロイ
動作テスト
- ローカルもしくはCI で実行するテスト
- 30分ほど要する
- 最小限のダミーデータを用いる
- 精度やデータノイズは一切見ない
- パスすれば開発環境まで自動デプロイ
- 21. Mobility Technologies Co., Ltd.
動作テスト
21
Github + CircleCI + PyTest によるテスト運用
● 運用ルール: PR を出す時は最低限テストをパスさせる
● develop ブランチにマージされたら、 CI で最新イメージをビルド
○ 開発環境 Airflow に自動デプロイ
○ 精度含めたテストはパイプラインの定期実行で検知
ローカル開発環境
Push
PyTest Job
Deploy Job
※develop branch のみ
※全 branch
Hook Composer
Image Hash
- 22. Mobility Technologies Co., Ltd.
動作テスト
22
● 基本的にパイプラインの流れを最低限のデータで再現
● CircleCI 上での実行時間は30分弱
統計値作成 前処理 学習 バッチ推論
※最小限のデータで実行
AI Platform は使わずローカルリソースで
- 24. Mobility Technologies Co., Ltd.
Test MLOps まとめ
24
1. 動作テスト
- 開発サイクルにおけるテスト
- Github + CircleCI + PyTestで最小限データと実行時間で動作確認
2. 精度テスト
- 開発パイプラインにおけるテスト
- 最新 develop branch に自動追従させ、定期実行
- 精度面は監視運用で検証
- 26. Mobility Technologies Co., Ltd.
MLシステムにおける精度検証の難しさ
26
学習データのノイズや時期性
モデル精度の経年悪化
テストデータのノイズ等
正しい精度評価ができない
精度が悪いモデルを本番デプロイ
経路、UXに悪影響
検証項目
- 27. Mobility Technologies Co., Ltd.
デプロイフローにおける精度検証
27
RMSE (Root Mean Squared Error)
● 道路ごとに、ある時間枠で何台のタクシーが通るか → 供給
● 道路ごとに、ある時間枠で何回の乗車が発生するか → 需要
● これらを2つのモデルで予測しており、その誤差を見る
シミュレーション結果
● バッチ推論の結果を用いた経路に従うと、どれだけの営収となるか
- 28. Mobility Technologies Co., Ltd.
デプロイフローにおける精度検証
28
統計値
作成 前処理 学習
バッチ
推論
BQの一時テーブルを利用して平均値がおかしな値でないかを確認
閾値は少し緩めだが、多段なので許容
統計値の Validation
シミュレータ
- 29. Mobility Technologies Co., Ltd.
デプロイフローにおける精度検証
29
学習したMLモデルが
検証データに対する RMSE が統計値よりも悪ければ弾く
学習時の Validation
統計値
作成 前処理 学習
バッチ
推論
シミュレータ
- 30. Mobility Technologies Co., Ltd.
デプロイフローにおける精度検証
30
テストデータに対する RMSE がプロファイルよりも悪ければ弾く
バッチ推論時の Validation
テストデータに対する RMSE が統計値よりも悪ければ弾く
Monitoring で監視し、ここで弾かれたらアラートを飛ばす
バッチ推論時の Validation
統計値
作成 前処理 学習
バッチ
推論
シミュレータ
- 32. Mobility Technologies Co., Ltd.
Validation MLOps まとめ
32
1. モデルデプロイ時には多段Validation
- データ異常値によるモデルと統計値のズレを想定する
- デプロイ時には多段Validationで精度を担保
- デプロイフローを1週毎に実施することで精度劣化を防ぐ
- 34. Mobility Technologies Co., Ltd.
● 手動デプロイと自動デプロイの選択
○ 手動にすれば質の悪いモデルデプロイは防げるが、人的コストがかか
る
○ 自動デプロイの場合は、リリース時の精度担保をどうするか
● 障害等により時間内にモデル推論が終わらなかった際のfallback
● デプロイ後のモデル精度を監視する仕組み
MLシステムにおけるデプロイ周りの難しさ
34
- 35. Mobility Technologies Co., Ltd.
● 前項で話したとおり、デプロイ前に4段のValidationでモデル/統計値の精度
面チェックは実施済み
● そのためValidation通過済みのモデルに関しては自動デプロイをしてもよい
という判断へ
● その分、デプロイ後の精度監視を強化していく
自動デプロイ
35
- 36. Mobility Technologies Co., Ltd.
統計値によるフォールバック
36
デプロイ対象
● 推論結果が一定時間更新されない際、統計値を基にした経路が引かれる
● つまり推論パイプラインが止まっても、ナビは機能する(重要)
● しかし推論を基にした経路のほうがシミュレーション営収が良い 場合がほとんど
モデル推論バケット
推論パイプライン
(5分ごと)
統計値バケット 経路生成API
アップロード
デプロイパイプライン
(週ごと)
アップロード
直近30分の結果があれば
推論データを参照
- 37. Mobility Technologies Co., Ltd.
統計値によるフォールバック
37
デプロイ対象
● 推論結果が一定時間更新されない際、統計値を基にした経路が引かれる
● つまり推論パイプラインが止まっても、ナビは機能する(重要)
● しかし推論を基にした経路のほうがシミュレーション営収が良い 場合がほとんど
モデル推論バケット
推論パイプライン
(5分ごと)
統計値バケット 経路生成API
停止
デプロイパイプライン
(週ごと)
アップロード 直近30分の結果がなければ
統計値を参照
- 38. Mobility Technologies Co., Ltd.
デプロイ済みモデルの精度劣化監視
38
評価パイプライン(1日1回)
● 直近1日の推論結果を Ground Truth (実際のログ)を用いて評価
● 推論 RMSE と統計値 RMSE をカスタム指標として Monitoring に送信
● 推論結果が統計値よりも悪かった場合にアラート発火
評価パイプライン
(日ごと)
カスタム指標
送信
Monitoring
精度が
悪ければ
- 39. Mobility Technologies Co., Ltd.
Deploy MLOps まとめ
39
1. 統計値でシステム担保
- MLリアルタイム推論の停止前提に統計値でフォールバック
2. 監視パイプラインで事後精度の担保
- モデル推論が統計値よりも悪かった場合は通知
- 通知が続いた場合は、異常値などによるモデル精度劣化を検証
- 41. Mobility Technologies Co., Ltd.
人的リソースの削減
● 枯れたMLシステムとなると、システム担保のための定常的なエンジニア工数削減が
重要になる
● テスト、精度検証、デプロイ、監視まわりでしきい値や担保したい精度を定義すること
で、ほとんどのMLシステムは自動化が可能
まとめ
41
- 42. Mobility Technologies Co., Ltd.
Appendix
42
お客様探索ナビのアルゴリズムやMLOps全般については
DeNA TechConでの登壇資料をご覧ください
https://www.slideshare.net/dena_tech/mov-mlops
https://www.slideshare.net/dena_tech/dena-techcon-2019-
132196217