Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Airflow+SageMakerで安定稼動する機械学習バッチインフラへ

 Airflow+SageMakerで安定稼動する機械学習バッチインフラへ

Airflow+SageMakerで安定稼動する機械学習バッチインフラへ

More Decks by レバレジーズTechアカウント

Other Decks in Technology

Transcript

  1. Airflow+SageMakerで安定稼動す
    る機械学習バッチインフラへ
    テク戦MLOpsチーム 古賀

    View Slide

  2. 自己紹介
    古賀悠太(4年目)、テクノロジー戦略室
    MLOpsチーム
    機械学習周辺のシステムの開発
    /運用
    - レコメンドAPIの実装
    - 機械学習パイプラインの実装
    ほんと時間ないので、プロフィール貼っときます
    https://lvgs.docbase.io/posts/1267498

    View Slide

  3. 話すこと
    - 機械学習バッチが増えても、安定して動き、運用工数がなるべくかからないシステ
    ム構成

    View Slide

  4. 旧システムでのデータサイエンティスト開発/運用状況

    View Slide

  5. 旧システムでのデータサイエンティスト開発/運用状況
    怪しい匂い
    ・開発環境と本番環境を兼ねてる
    ・なるべく被らないように、定期実行設定
    (機械学習はメモリ食うので)

    View Slide

  6. 何が辛いの?
    - バッチ数が増えると、実行時間を被らせないのが大変に
    - 可用性の懸念
    - 実行時間が被ると、共倒れする
    - 機械学習はリソース食うので、共倒れ発生しやすい
    - 運用工数の懸念
    - そもそも何がいつ実行されているのか管理必要
    - 一度書いて終わりじゃない
    サーバー使用表の抜粋

    View Slide

  7. 解決策
    - 各バッチのインフラを分離
    - 死んでも他へは影響しない →共倒れしない
    - 実行時間が被っても良いので、好きなタイミングで実行できる →他のバッチを考えなくて良い

    View Slide

  8. 導入技術
    Airflow
    - スケジューラー
    - Pythonで実行タイミングと処理を記述
    - 今回は順次ワーカーを起動するだけ
    AWS SageMaker Processing Job
    - ワーカー
    - ECSタスクみたいなもの
    - Dockerイメージをpullして実行
    - CPU / GPU / メモリを指定可能

    View Slide

  9. システム構成とデプロイフロー
    ※開発はまだGCE。許して。

    View Slide

  10. Airflowの他のメリット
    - 依存関係定義が楽
    - コストカット
    - 必要なリソースだけ稼動するので
    - リトライ設定簡単
    - 通知設定簡単
    - 実行履歴やログ見れる
    などなど Pythonでの定義
    taskA >> [taskB, taskC] >> taskD

    View Slide

  11. まとめ
    - 機械学習バッチが増えても、安定して動き、運用工数がなるべくかからないシステ
    ム構成にできた
    - 役割で分割して、負荷面のスケーラビリティを担保する手法はよくある
    - Message QueueとかDBのWriter / Readerとか
    - イケテナイシステムにも敬意を持ちたい

    View Slide