Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
AI Platform Pipelines を使って 機械学習パイプラインを動かす話 Karno 1
Slide 2
Slide 2 text
whoami Ryosuke Nakano a.k.a. Karno https://github.com/karno Software Engineer @ Repro AI Lab (2020.4 ~) もと JTBC(Japanese Traditional Big Company) だった クラウドにわか勢 2
Slide 3
Slide 3 text
Table of Contents 1. 背景: 機械学習をサービスに乗せるつらさ 2. 課題: 機械学習パイプラインをうまく動かす 3. 解決策: AI Platform Pipelines 4. 全体像 5. まとめ 3
Slide 4
Slide 4 text
背景: 機械学習サービスを維持するつらさ 機械学習サービスは陳腐化の速度が早く、保守を⼿厚く⾏う必要がある 稼働状況の継続的な監視が必要 予測の前提が崩れていないか? ⼊⼒データに変化はないか? にもかかわらず、保守性が低くなりがち 実装が紆余曲折し⽣まれるモノリシックな何か デバッグ困難、テスト困難 保守のために無限に時間が溶けていく うまく作る枠組みが必要 → 機械学習パイプライン の登場 4
Slide 5
Slide 5 text
機械学習パイプライン 機械学習処理全体を、独⽴したコンポーネントの連鎖として表現したアーキテクチャ モノリシックになりがちな機械学習処理をコンポーネントに分割 コンポーネント毎のI/Oが明確化、監視がしやすく ⼀度に考慮しなければいけない処理が減り、保守性が向上 コンポーネント毎に処理が完結するため、テストが容易に いわゆる「分割統治法」 画像出典: Azure Machine Learning 5
Slide 6
Slide 6 text
課題: 機械学習パイプラインをうまく動かす 機械学習パイプラインでプログラムの保守性は向上した → 機械学習パイプラインを実⾏するインフラ側にも⼿当てが欲しい ただ動かすだけでは以下の問題が解決しない: P1. パイプライン性能の監視・確認が困難 P2. 異常発⽣時のログ追跡が困難 P3. 異常の監視と通知が困難 6
Slide 7
Slide 7 text
P1. パイプライン性能の監視・確認が困難 理想: 機械学習モデルの性能を⾒やすく監視できる状態 (学習が意図通り動いているか、想定していないデータが⼊ってきていないか、など) 描くべきグラフ・⾒るべきデータは分かっているので、それを⼿軽に⾒たい 例えば GCS Bucket に保存したデータでグラフを描きたい 外部サービスを頼るか、あるいは毎回⼿元にダウンロードしてきて分析する? 外部サービスを⾒つけてきて、繋いでみて、相性を確認して… gsutil cp で持ってきて Jupyter で… → 外部サービスで可視化するのも、⼿元で可視化するのも つらい 7
Slide 8
Slide 8 text
P2. 異常発⽣時のログ追跡が困難 理想: タスクが失敗したとき、失敗の原因を教えてくれるログが⼿軽に⾒たい ログが分散していてもつらい、統合していてもつらい たとえば Airflow では Stackdriver にいろんなログが流れるようになっ ており、該当するパイプラインのログをなんとかして掘り出す必要がある → ⼤変つらい 8
Slide 9
Slide 9 text
P3. 異常の監視と通知が困難 理想: リソースが異常値になっていないか(CPU, RAMなど)、タスクが異常終了し ていないかを監視したい、状況が悪ければSlackなどで通知してほしい 動かし⽅によっては、メモリ逼迫によってタスクが失敗した場合 (OOM Killer にやられたとき)、 何の通知も⾏われないことがあった 動作していないことに気付いていろいろ調査し、最終的にどうやらOOMした らしいということが分かった → 通知がないのは本当につらい 9
Slide 10
Slide 10 text
解決策: AI Platform Pipelines 課題を解決できる機能を搭載している機械学習基盤 パイプラインが簡単に動かせる (Web UI からデプロイできる) 課題に対して打ち⼿が打てる P1. パイプラインの性能の監視・確認が困難 → S1. メトリクス可視化機能 P2. 異常発⽣時のログ追跡が困難 → S2. ログ可視化機能 P3. 異常の監視と通知が困難 → S3. 異常監視・通知機能 (by Cloud Logging) OSS の Kubeflow Pipelines のGCPマネージド版 10
Slide 11
Slide 11 text
11
Slide 12
Slide 12 text
S1. メトリクス可視化機能 パイプラインで出⼒したメトリクス を Web UI から確認可能 意図通りの性能が出ているかを ⼿軽に確認 何度か実⾏した結果を並べるよ うに⾒せることもできる → パイプラインの性能監視・確認 が簡単 12
Slide 13
Slide 13 text
S2. ログ可視化機能 Pipelines の UI から実⾏ログ を確認可能 Cloud Logging (旧 Stackdriver Logging) と連携済 パイプラインの部品をクリック すると実⾏ログ(stdout, stderr)が⾒られる → 異常発⽣時のログ追跡が簡単 13
Slide 14
Slide 14 text
S3. 異常監視・通知機能 例外発⽣, 異常終了, OOMなどを Cloud Monitoring で検知可能 異常を検知したときに Slack などに通知できる インシデント管理システムと統 合されており、対応終了までの 管理ができる → 異常の監視と通知が簡単 14
Slide 15
Slide 15 text
全体像 Kubeflow Pipelines(GKE) + Cloud Logging + Cloud Monitoring ログは Cloud Logging に 吐かれ、Pipeline Web UI からも参照できる 異常監視と通知は Cloud Monitoring を使う GCP Managed で全部揃えて 楽をする 15
Slide 16
Slide 16 text
まとめ 機械学習タスクを指針なく作ったり、いまいちな基盤を使うとつらい思いをする 機械学習パイプライン を AI Platform Pipelines で動かすといい感じ パイプラインで分割統治すると複雑さが減る メトリクス可視化で性能監視が簡単にできる ログ統合でログが簡単に追える 異常監視・通知がGCPのサービスで簡単にできる 16