$30 off During Our Annual Pro Sale. View Details »

機械学習システムアーキテクチャ入門 #2

機械学習システムアーキテクチャ入門 #2

機械学習システムのアーキテクチャを検討する上で考慮すべき課題について調査しまとめた資料です。Money Forward 社内で開かれた MLOps についての勉強会のために作成しました。

## Reference

澁井 雄介 著 AIエンジニアのための機械学習システムデザインパターン 翔泳社 2021年 https://www.shoeisha.co.jp/book/detail/9784798169453
有賀 康顕 中山 心太 西林 孝 著 仕事ではじめる機械学習 第2版 オライリー・ジャパン 2021年 https://www.shoeisha.co.jp/book/detail/9784798169453
Katrina Clokie 著 風間 裕也, 河原田 政典 訳 A Practical Guide to Testing in DevOps Japanese Edition Leanpub 2021年 https://leanpub.com/testingindevops-japanese-edition

Asei Sugiyama

July 15, 2022
Tweet

More Decks by Asei Sugiyama

Other Decks in Technology

Transcript

  1. 機械学習システム
    アーキテクチャ入門 #2
    Asei Sugiyama

    View Slide

  2. 要旨
    機械学習システムのアーキテクチャについて典型的な内容を共有します

    View Slide

  3. TOC
    機械学習パイプライン <-
    推論システム
    運用・監視

    View Slide

  4. 機械学習パイプライン
    TFX
    ETL
    訓練
    デプロイ

    View Slide

  5. TFX
    パターン化されたものの一部のコンポーネントは複雑になりがち
    Akshay Naresh Modi and Chiu Yuen Koo and Chuan Yu Foo and Clemens Mewald and Denis M. Baylor and Eric Breck and Heng-Tze Cheng and Jarek
    Wilkiewicz and Levent Koc and Lukasz Lew and Martin A. Zinkevich and Martin Wicke and Mustafa Ispir and Neoklis Polyzotis and Noah Fiedel and Salem
    Elie Haykal and Steven Whang and Sudip Roy and Sukriti Ramesh and Vihan Jain and Xin Zhang and Zakaria Haque TFX: A TensorFlow-Based Production-
    Scale Machine Learning Platform, KDD 2017 (2017) https://research.google/pubs/pub46484/

    View Slide

  6. ETL
    データの取得は大変
    課題 対策
    データが散財していて取得が大変 Data Lake, DWH, Data Mart
    テーブルが散財していて把握が大変 Data Catalog
    見つけたテーブルが使えるか不明 メタデータ管理
    見つけたテーブルの使い方が難しい BI ツール

    View Slide

  7. AWS Glue
    さまざまな場所にあるデー
    タを統合して扱うためのサ
    ービス
    クローラーによるデータカ
    タログの構築と、EMR によ
    る ETL 処理
    AWS Glue(分析用データ抽出、変換、ロード (ETL) )| AWS

    View Slide

  8. Google Cloud
    Data Catalog
    Google Cloud Data Catalog Now Available in Public Beta |
    Google Cloud Blog

    View Slide

  9. 訓練
    バッチ処理が基本
    複数のモデルを訓練
    分散学習

    View Slide

  10. kfp.dsl.ParallelFor
    json_string: str = json.dumps([

    {"snakes": "anaconda",

    "lizards": "anole",

    "bunnies": [{"cottontail": "bugs"}, {"cottontail": "thumper"}]},

    {"snakes": "cobra",

    "lizards": "gecko",

    "bunnies": [{"cottontail": "roger"}]},

    ])

    with dsl.ParallelFor(json_string) as item:

    with dsl.ParallelFor(item.bunnies) as item_bunnies:

    print_op(item_bunnies.cottontail)

    パイプラインにモデルのパラメーターや ID で分岐を作成
    パイプラインは分割しすぎない & まとめすぎない

    View Slide

  11. Federated Learning
    分散学習の分散度合いを高
    めてユーザーのデバイス内
    で学習する
    採用例はほとんど聞かない

    View Slide

  12. デプロイ
    複数サービスの変更が必要
    コンテナレジストリ
    ホスティングサービス
    スケジューリング
    カナリアリリース
    デプロイ対象が複数
    シュミレーター
    試作機
    本番機

    View Slide

  13. TOC
    機械学習パイプライン
    推論システム <-
    運用・監視

    View Slide

  14. 推論システム
    検討事項
    モノリス
    同期推論パターン
    非同期推論パターン
    バッチ推論パターン
    エッジ推論パターン

    View Slide

  15. 検討事項
    機能: 推論の精度
    レイテンシー
    システムコスト
    上記を可能な範囲
    でバランスよく叶
    える
    澁井 雄介 著 AIエンジニアのための機械学習システムデザインパ
    ターン 翔泳社 2021年
    https://www.shoeisha.co.jp/book/detail/9784798169453

    View Slide

  16. モノリス
    Web アプリケーション
    内で直接モデルを呼び
    出して推論
    初期はこうなりがち
    バンディットはこうな
    りがち
    有賀 康顕 中山 心太 西林 孝 著 仕事ではじめる機械学習 第2版 オライリ
    ー・ジャパン 2021年
    https://www.shoeisha.co.jp/book/detail/9784798169453

    View Slide

  17. 同期推論パターン
    推論用 API を実装し、アプ
    リケーションから呼び出す
    コンテナとして実装するの
    が一般的
    軽いモデル向き
    有賀 康顕 中山 心太 西林 孝 著 仕事ではじめる機械学習 第2版 オライリー・ジ
    ャパン 2021年 https://www.shoeisha.co.jp/book/detail/9784798169453
    澁井 雄介 著 AIエンジニアのための機械学習システムデザインパターン 翔泳社
    2021年 https://www.shoeisha.co.jp/book/detail/9784798169453

    View Slide

  18. 非同期推論パターン
    アプリケーションのリクエ
    ストをキューイング
    推論結果をキューか DB に
    書き込み、アプリケーショ
    ンから利用
    重いモデル向け
    ユーザーになんとかして待
    ってもらう必要はある
    澁井 雄介 著 AIエンジニアのための機械学習システムデザインパターン 翔泳社
    2021年 https://www.shoeisha.co.jp/book/detail/9784798169453

    View Slide

  19. バッチ推論パターン
    あらかじめバッチ処理とし
    て全件推論
    結果を DB に保存し、アプ
    リケーションから利用
    重いモデルでユーザーが待
    てないのならこれ
    入力をあらかじめ列挙でき
    ないのなら採用不可
    澁井 雄介 著 AIエンジニアのための機械学習システムデザインパターン 翔泳社
    2021年 https://www.shoeisha.co.jp/book/detail/9784798169453

    View Slide

  20. エッジ推論パターン
    サーバーサイドではなく、
    エンドユーザー環境上でモ
    デルを動かす
    学習時と推論時でまったく
    異なる環境を用いる
    中間表現へのコンパイル
    と、それを動かすランタイ
    ムが必須
    澁井 雄介 著 AIエンジニアのための機械学習システムデザインパターン 翔泳社
    2021年 https://www.shoeisha.co.jp/book/detail/9784798169453

    View Slide

  21. どれを選ぶべき?
    検討の出発点として
    は、バッチ推論か同期
    推論パターン
    コンテナで実装してお
    けばオートスケールを
    利用できる
    コンパイルは職人芸に
    なってきた
    Configure compute resources for prediction | Vertex AI | Google
    Cloud https://cloud.google.com/vertex-
    ai/docs/predictions/configure-compute#scaling

    View Slide

  22. TOC
    機械学習パイプライン
    推論システム
    運用・監視 <-

    View Slide

  23. 運用・監視
    機械学習の困難さ
    バグフィルター
    シャドウ A/B テスト
    カナリアリリース (A/B テスト)
    ダッシュボード
    注意点

    View Slide

  24. 機械学習の困難さ
    通常のソフトウェアエンジニア
    リングの手法では機械学習シス
    テムを扱うことが難しい
    コードではなくシステムのレベ
    ルで困難が生じる
    データへの依存は原因の1つ
    D. Sculley and Gary Holt and Daniel Golovin and Eugene Davydov and Todd Phillips
    and Dietmar Ebner and Vinay Chaudhary and Michael Young (2014) Machine
    Learning: The High Interest Credit Card of Technical Debt, SE4ML: Software
    Engineering for Machine Learning (NIPS 2014 Workshop
    https://research.google/pubs/pub43146/

    View Slide

  25. バグフィルター
    復旧が即座にできるのなら本番環境
    へのデプロイ後もテストできる
    異なる範囲・粒度のフィルターでバ
    グを補足する考え方
    単体テスト、結合テスト、E2E テス
    トに加え、アラート、モニタリン
    グ、ログを用いてバグを補足
    Katrina Clokie 著 風間 裕也, 河原田 政典 訳 A Practical Guide to Testing in DevOps Japanese
    Edition Leanpub 2021年 https://leanpub.com/testingindevops-japanese-edition

    View Slide

  26. シャドウ A/B テスト
    現行のサーバーと別にアップデ
    ート後のモデルをデプロイした
    サーバーを用意
    実際のリクエストを2つのサーバ
    ーに送信
    エラーやレイテンシ、計算資源
    の負荷をテスト
    可能な場合は精度やビジネス指
    標をテスト
    澁井 雄介 著 AIエンジニアのための機械学習システムデザインパターン 翔泳社 2021年
    https://www.shoeisha.co.jp/book/detail/9784798169453

    View Slide

  27. カナリアリリース
    リクエストの一部をアップデー
    ト後のサーバーに送信
    エラーやレイテンシのテスト
    可能な場合は精度やビジネス指
    標をテスト
    様子を見ながら徐々に新しいバ
    ージョンに送信する割合を高め

    澁井 雄介 著 AIエンジニアのための機械学習システムデザインパターン 翔泳社 2021年
    https://www.shoeisha.co.jp/book/detail/9784798169453

    View Slide

  28. ダッシュボード
    本番環境の状況を把握
    基本は時系列 (異常はデプロ
    イに起因するものが多いた
    め)
    システムのメトリクスとあ
    わせて機械学習のメトリク
    ス、ビジネス指標を表示で
    きると最高
    澁井 雄介 著 AIエンジニアのための機械学習システムデザインパターン 翔泳社
    2021年 https://www.shoeisha.co.jp/book/detail/9784798169453

    View Slide

  29. 注意点 (1/2)
    見たい観点は次々に出てくるものの、取りうる行動のパターンはそんな
    に多くない

    View Slide

  30. 注意点 (2/2)
    暫定対応 (〜数h)
    経過観察
    切り戻し
    個別の特別対応
    恒久対応 (数日〜数週間)
    バグフィックス
    特徴量・モデルの再設計
    リリースフローの見直し

    View Slide

  31. まとめ
    機械学習パイプラインは典型的なパターンが整理されたものの、ETL と
    デプロイは複雑になりがち
    推論システムは機能、スピード、コストのバランスを考慮する
    運用・監視においては「本番環境でのテスト」の考え方を導入し、カナ
    リアリリースなどのパターンを用いて本番環境でもバグを補足するよう
    設計する

    View Slide