はじめに
機械学習を使ったプロダクトを開発していると、そのうち効率化やデータやモデルの管理が課題になってきます。すると、俄然 MLOps というキーワードが気になってくるものです。今回は、AWS のサービスを使って MLOps ってどうやるの?ということを2021年の事例をもとに見ていきたいと思います。
トレーサビリティ、データハンドリングの効率化、モデル学習、ワークフローの自動化 (株式会社デンソー)
まずは AWS Summit Online 2021 のデンソーさんの事例です。この発表について個人的にすごいと感じたところは、単に MLOps を実現しただけではなく、オンプレではなくクラウドで MLOps パイプラインを構築することのコスト優位性を包括的に検討しているところです。一般的に、コンピュートリソースのコストのみを比べてオンプレのが安い、と判断されることがよくありますが、セキュリティ、ネットワーク、ハードウェアの管理などに関連する開発コストも含めて比較した上でクラウド利用にメリットを見出しています。
MLOps アーキテクチャを決めるための White Boarding に丸3日を費やしたそうで、どんな情報をどのように管理したいか、どのようなデータを使ってどれくらいの頻度でモデルを学習するのか、などに鑑みてアーキテクチャを考える必要性が垣間見えます。
アーキテクチャの特徴
それでは、デンソーさんのアーキテクチャにどんな工夫がされているかを見てみましょう。
データ管理基盤
Computer Vision のモデル学習に用いる大量の画像データは Amazon S3 で管理し、モデルに関連するラベル情報などのメタデータは Amazon DocumentDB で管理することで、データを一元管理できるようにしています。また、複数の拠点に点在するエンジニア全員がデータを参照できるようにすることで、エンジニアが手間なく必要なデータを必要なときに取り出せる環境を実現しました。
ワークフロー自動化
処理実行環境の最適化
データの前処理、モデルの学習、後処理などに Amazon SageMaker を採用しています。これにより、各種スクリプトの実行環境をコンテナで管理し、統一された環境で処理を実行できるようにしています。また、スポットインスタンスと自動再開機能を使うことで、モデルの学習コストを 50% 削減しつつ、分散学習を行うことで学習時間の短縮も図っています。
データ読み込みの高速化
大量の画像を使ってモデルを学習する必要があり、学習のたびに Amazon S3 からデータをダウンロードするのは時間がかかることから、Amazon FSx for Lustre を採用し、高速に画像をロードできる仕組みを構築しています。
ワークフロー構築の効率化
AWS Step Functions Data Science SDK を使って、Amazon SageMaker を組み込んだワークフローを Python ベースで構築しています。いったんワークフローを作成してしまえば、モデルの再学習など繰り返しの多いフローを何度でも簡単に実行することができます。また、学習データなど、ワークフロー定義時ではなく、実行時に指定したいパラメタは、ワークフロー実行時に都度指定できます。
トレーサビリティの実現
AWS Step Functions で作成したワークフローを実行するごとに一意の Workflow ID を生成して Amazon DocumentDB に記録することで、ワークフローに紐づく情報の一元管理を実現しています。また、ワークフロー実行時にタグを指定することで、過去実行したワークフローの条件で再度ワークフローを実行することができるようにしています。
この事例をもっと詳しく知りたいときは
こちらに今回ご紹介したアーキテクチャを含むスライドとセッション動画がありますので、詳細が気になった方はぜひご覧ください。
発表資料
CUS-17 高度運転支援向け画像認識のための Machine Learning Production Line
セッション動画
マネージドな MLOps への移行 (株式会社PKSHA Technology、株式会社BEDORE)
次は AWS Summit Online 2021 の PKSHA Technology, BEDORE さんの事例です。対話エンジンサービスで使用するモデル開発で MLOps を実現しています。特徴的なのは、モデルの学習フェーズと推論フェーズでアーキテクチャを変えているところです。実際のワークロードの特徴に合わせて最適な構成を取ることの重要性が伺えます。
この事例で特徴的なのは、クライアント(顧客)によって知識ドメインが大きく異なるため、より高い精度を実現するためにはモデルを利用するクライアントごとに異なる学習済みモデルを使用する必要があるというところです。100社の顧客がいたらモデル100個を切り替えて推論する必要があります。また、クライアントのニーズに即座に対応するために、クライアントのタイミングでモデルの再学習を実行する必要があります。
アーキテクチャの特徴
それでは、PKSHA Technology, BEDORE さんのアーキテクチャにどんな工夫がされているかを見てみましょう。
モデルの学習フェーズ
従来、Amazon EC2 を使ってモデルを学習するアーキテクチャを採用していましたが、開発者ごとに環境の差異が生じたり、Web サーバとモデルの分離ができていないなど、効率的な構成ではありませんでした。そこで、API リクエスト1つで学習が動くフルマネージドな学習環境が得られる Amazon SageMaker を ベースにした構成に切り替えました。SageMaker の採用により、自動的にコンテナを利用することになり、環境の統一や管理が必要なリソースの削減を実現しています。
アーキテクチャを刷新したことにより、モデル学習基盤における事故はゼロとなり、運用管理を担当するインフラエンジニアは OS・ミドルウェアのメンテナンスから解放され、フルマネージドサービスの恩恵を受けることができています。また、学習に要する時間が 57.4% 減少させることができました。
モデルの推論フェーズ
従来、推論フェーズにおいても EC2 を利用していましたが、AWS Fargate を採用することで同時にコンテナベースの構成になりました。
この事例をもっと詳しく知りたいときは
こちらに今回ご紹介したアーキテクチャを含むスライドとセッション動画がありますので、詳細が気になった方はぜひご覧ください。
発表資料
CUS-21 顧客最適な機械学習モデルを提供する対話エンジンサービスと Amazon SageMaker の活用事例
セッション動画
大規模画像データを扱う MLOps (株式会社コナミデジタルエンタテインメント)
次は AWS Summit Online 2021 のコナミデジタルエンタテインメントさんの事例です。もともと、モデルの学習、データの管理、システムの運用に課題があり、それらを解決する MLOps が必要でした。課題の原因のひとつが、モデルの学習に大量の画像を使用する必要があり、それらを効率的に管理、運用することが肝となっています。
アーキテクチャの特徴
それでは、コナミデジタルエンタテインメントさんのアーキテクチャにどんな工夫がされているかを見てみましょう。
モデルの学習における課題と解決方法
ベースの学習アルゴリズムのアップデートやアルゴリズムの追加などに対応する必要があり、学習フローが複雑化していることが課題でした。また、ad-hoc なバッチ処理や手作業によるファイルコピーなどが発生しており作業コストが増大していました。さらに、情報がサイロ化し関係者間でモデルの学習状況などの情報をうまく共有できなかったり、学習したモデルのバージョン管理やログ管理などができていないという課題も抱えていました。
上記課題について、各工程における処理のパイプライン化に Amazon Managed Workflows for Apache Airflow を採用し、前処理、学習、推論、後処理、モニタリングに Amazon SageMaker を採用することで対応しています。また、モデルの学習にスポットインスタンスを利用することで約 70% のコストを削減しています。さらに、SageMaker の local mode を使用してオンプレでの学習も並行して行っています。
学習中のモデル精度・ロスのモニタリング、複数ジョブ間・過去の学習モデルの精度比較、ハイパーパラメータの管理には Amazon SageMaker Experiments を活用しています。学習の進行状況をチーム内で確認するのに Slack を活用し、詳細なログは Amazon CloudWatch に保存するようにしています。Slack への通知は、Amazon CloudWatch で Job Status Changed イベントをトリガーし、AWS Lambda を経由して実現しています。
データ管理における課題と解決方法
大量の学習データを管理するストレージのディスク容量の圧迫、頻繁なデータのコピーや共有によるコストの増大が課題になっていました。
上記課題について、大規模な学習データの読み込み・I/Oの高速化に Amazon FSx for Lustre を採用し、学習データ・学習済みモデル・テストデータ等の保存に Amazon S3 を採用し、各サービスで用いる共通の設定パラメータの集約に AWS System Manager Parameter Store を採用することで対応しています。
システム運用における課題と解決方法
学習環境を構築したりメンテナンスするためのコスト、物理的な障害リスク、コードの管理、定期的なリリースサイクルへの対応、作業内容やデータの属人化が課題でした。
上記課題について、学習環境のプロビジョニングに AWS CloudFormation を採用し、前処理・学習・後処理の Docker イメージの管理に Amazon ECR を採用することで対応しています。
この事例をもっと詳しく知りたいときは
こちらに今回ご紹介したアーキテクチャを含むスライドとセッション動画がありますので、詳細が気になった方はぜひご覧ください。
発表資料
CUS-45 遊戯王ニューロンにおける Amazon SageMaker の活用 大規模画像データの MLOps 基盤構築
セッション動画
おわりに
以上、2021年に発表された MLOps on AWS の事例をご紹介しました。2021年時点では、大規模データを扱う場合は Amazon FSx for Lustre を使うのが AWS的スタンダードと言えそうです。
各社各様の構成になっていて興味深いですが、共通しているのはどのような開発フローで何を実現するために必要なのかが考え抜かれていることだと思いました。MLOps は 1日にしてならず、ですね。