はじめに
近年、様々な分野で機械学習の利用が進む中、モデルの品質を担保し、継続的な学習を行うための施策が重要視されています。そのため、機械学習のためのDevOpsであるMLOpsの必要性が高まっており、AI事業本部でも研修内容に取り入れています。
より良いMLOpsを構築するためには、アプリケーションやインフラの知識も必要です。そのため、今年は昨年までと異なり、MLエンジニアだけでなくソフトウェアエンジニアも講義に参加しました。また、新たに実践編が加わり、より業務を意識した講義が追加されました。
- Container編
- 基礎編
- 応用編
- 実践編
そこで、今回は研修で行われた各講義の資料を公開したいと思います。
Container編
Container編では、コンテナにまつわる技術に対しインデックスを張ることと、イメージ作成や運用時のTipsを学び実業務に役立てることを目的としています。
そのため、直接MLOpsとは関係ありませんが、コンテナの仕組みやイメージ作成のためのTipsを説明しています。また、公開している資料からは省いていますが、App Runnnerへの構築などを通し、最低限コンテナ運用に必要な知識の習得を行っています。
▼スライド
基礎編
基礎編では、MLOpsとは何か?から始まり、MLOpsの要素やMLOpsを段階的に取り組んでいくための知識を取り上げています。
今回のMLOps研修は全体的にMLOpsを「DevOps for ML」と見なすスタンスをとっています。
MLOps界隈で著名なTip Huyen氏の言葉を借りると「機械学習システムの10%は機械学習、90%はソフトウェアエンジニアリング」であるため、MLOpsを機械学習エンジニア・データサイエンティストだけの担当領域にしたくなかったからです。
研修資料は、歴史的経緯からDevOpsとMLOpsの関係性を説明し、MLOpsを体系的にまとめた論文 Machine Learning Operations (MLOps): Overview, Definition, and Architecture の内容に沿ってMLOpsの定義・要素を説明しています。
▼スライド
応用編
応用編では、コンテナ編と基礎編で学んだ内容を踏まえ、AWSを用いてMLモデルをデプロイする方法を学びます。「広告クリック率をリアルタイムで予測するML基盤の構築」を要件に設定し、この要件を満たすパイプラインを実装します。
前半部分では、MLモデルの構築やDevOpsについて学びます。MLモデルの学習、コードの静的解析、テスト、CI/CDといった、MLOpsに先立つ問題について取り組みます。
後半部分では、MLOpsの実践に移ります。MLモデルの継続的な学習パイプラインと推論サーバの構築を行います。
本講義はML/DS職だけでなく、バックエンドやフロントエンドのエンジニアも受講することを想定しているため、SageMakerのようなMLに特化したサービスは採用せず、より広範囲に応用可能なサービス構成にしました。
応用編の講義で使用したコードは下記に公開しています。
https://github.com/Tyaba/aws-mlops-handson
▼スライド
実践編
実践編では普段の業務を想定し、MLOpsのOps部分を中心に「運用を意識したML基盤」を目指す講義になっています。
前半では応用編のシステムを発展させ、並列学習・推論サーバの自動更新・モデルのバージョン管理ができるようにします。
後半ではログの収集と継続的な学習・サニティチェック・カナリアリリース・監視を扱い、より実践の運用に近いシステムを構築します。
実務上ではMLOpsについて明確に棲み分けがあるわけではないため、オーバーエンジニアリングな内容も含んでいますが、幅広いテーマを扱ってインデックスを張ってもらうことを意識した内容となっています。
講義全体を通して「組織にとって重要な部分のみにフォーカスして運用する」ことに重きを置いています。
実践編で使用したコードをGitHubに公開しています。
https://github.com/hosimesi/aws-mlops-practice
▼スライド
講義のフィードバック
- AWSの様々なサービスに実際に触れる事ができ、体系的にどのようにAWSを設定して組み立てていけば良いかが分かりました。
- MLOpsはMLエンジニアとして今後も付き合って行くものであるため、講義で触れてインデックスを張ることができ、今後の業務で活かせそうと感じた。
- 元々知らないことが多く、ネットで調べにくい内容が多かった。
最後に
サイバーエージェントでは様々な人材を募集しています。興味のある方、採用ページからご連絡をお待ちしております。