Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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/

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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 で分岐を作成 パイプラインは分割しすぎない & まとめすぎない

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

機械学習の困難さ 通常のソフトウェアエンジニア リングの手法では機械学習シス テムを扱うことが難しい コードではなくシステムのレベ ルで困難が生じる データへの依存は原因の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/

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

カナリアリリース リクエストの一部をアップデー ト後のサーバーに送信 エラーやレイテンシのテスト 可能な場合は精度やビジネス指 標をテスト 様子を見ながら徐々に新しいバ ージョンに送信する割合を高め る 澁井 雄介 著 AIエンジニアのための機械学習システムデザインパターン 翔泳社 2021年 https://www.shoeisha.co.jp/book/detail/9784798169453

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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