Amazon Web Services ブログ
【開催報告 & 資料公開】 AI/ML@Tokyo #7 AWSにおけるMLOps 開催報告
アマゾン ウェブ サービス ジャパン株式会社 機械学習ソリューションアーキテクトの卜部です。AWS Japan では、AI/ML 関連情報を発信するイベント「AWS AI/ML@Tokyo」を定期的に開催しています。2020年10月15日にオンラインで開催された AWS AI/ML@Tokyo #7では、AWS ソリューションアーキテクトより、AWSにおけるMLOpsプロセス実装のベストプラクティスや ML CI/CD環境の構築についてお話ししました。また、お客様活用事例として、株式会社コナミデジタルエンタテインメント様、ヤフー株式会社様 におけるAmazon SageMakerの事例をお話しいただきました。
「AWS で構築する MLOps 基盤」[Slides]
アマゾン ウェブ サービス ジャパン株式会社
ソリューションアーキテクト 上総 虎智
MLサービス開発とMLOpsについて
機械学習モデルの開発と運用においては、ソースコードに加えてデータや、学習させた機械学習モデルそのもの、システムとして活用するためのデプロイ先など、管理対象が多くなり開発の手順が煩雑になる傾向にあります。複雑な開発工程を管理・支援するためにMLOps基盤を構築することが求められますが、最適なMLOps基盤は立場(例えばデータサイエンティストや機械学習エンジニア、開発基盤の整備担当エンジニア)やプロジェクトのフェーズによって大きく変わるため、求められる課題感や解決策を見定めることが重要です。今回は特に研究実験フェーズと運用フェーズに大きく分けて、モデル開発の効率を向上させるという観点から、機械学習基盤に求められる機能をお話ししました。
研究実験フェーズと運用フェーズに求められる機械学習基盤の違い
サービス開発の初期段階である研究実験フェーズでは、下記に示すような手順に沿ってループを回していくことが求められます。
- ビジネスケースから解決すべき課題を見つける
- 課題に対して機械学習によるアプローチが有効かを検証する
- 有効な場合に、ビジネス的な価値を確認する
- 価値が高いと判断したら、ビジネスに投入していき新たな課題を見つける(最初に戻る)
ループを回していくことにより、より高度な機械学習の適用や価値の高いビジネス課題へ取り組んでいきます。
サービスがビジネス価値を生み出し、広く使われるようになったと判断できた際には、研究実験フェーズから、運用を効率化するフェーズ(下記)へと移行していきます。
- 開発、運用コストを下げる
- モジュールごとの依存や衝突を解消する
- 改善のためのリードタイムを短縮する
これらの要請に応えるには多くのコンポーネントが必要となりますが、準備が必要なわりには他社と差別化できない重労働が存在します。Amazonではそれらの作業を“Undifferentiated Heavy Lifting”と位置付けています。AWSの機械学習サービスもこのような考えを受け継ぎ、Undifferentiated Heavy Liftingを排除した機械学習基盤を構築するためのMLマネージドサービスとしてAmazon SageMakerを提供しています。
研究実験フェーズでML基盤に求められる機能
研究実験フェーズでは、機械学習モデルを素早く開発して評価するために試行錯誤を高速化することが必要です。計算リソースを柔軟・迅速に変更することや、多くの実験をきちんと管理することが重要です。そのために求められる機能を、AWSサービス、その中でも特にAmazon SageMakerを用いて実現する方法についてお話しします。
チームで標準化された開発環境の構築:
Amazon SageMakerを用いた機械学習ワークフローでは、学習データはAmazon S3に保存し、実行環境はコンテナイメージを準備します(PyTorchなど一般的なフレームワークのコンテナイメージはAWS側で準備しています)。これにより、適切なコンピューティングリソースを迅速に準備し、同じ条件で学習を実行することができます。
前処理のための計算環境:
多様なAWSサービスが機械学習の前処理に利用できますが、その中でもサーバレスかつ学習工程との親和性が高いSageMaker Processingを紹介しました。
試行錯誤を高速化する機能:
SageMakerを用いたハイパーパラメータ最適化(HPO)、分散学習、実験管理機能があり、機械学習の試行錯誤を高速化できます。学習後のモデルデプロイに関しても、バッチ推論、リアルタイム推論それぞれをAPIコマンドを実行することですぐに実行することができます。また、Managed Spot Trainingを用いることで学習の際のコストを最大90%削減することができます。
詳細はそれぞれのblog、ニュース記事をご覧ください。
- Amazon SageMaker Processing – フルマネージドなデータ加工とモデル評価
- Amazon SageMaker の Horovod またはパラメータサーバーでTensorFlow 分散トレーニングを簡単に起動する
- Amazon SageMaker Experiments – 機械学習モデルの整理、追跡、比較、評価
- Amazon SageMaker で、機械学習のトレーニングコストを最大 90% 削減するマネージドスポットトレーニングが利用できるようになりました
運用フェーズでML基盤に求められる機能
運用フェーズでは、ビジネス適用後に機械学習モデルが安定的に価値を発揮するか、特に外部環境の変化に柔軟に対応し続けられるかに関心が向けられます。そのためには、ワークフローの構築の自動化、出力される生成物の管理、CI/CDパイプラインの構築、さらにはモデルのパフォーマンス管理が求められます。
機械学習ワークフローの自動化:
ソースコード開発から本番環境デプロイまでの行程を効率化することでモデル改善のための作業に集中することができます。選択肢の一つとしてサーバレスのオーケストレーションツールであるAWS Step Functons Data Science SDKをご紹介しました。また、AirflowからSageMakerを呼び出して実行することも可能です。
出力される生成物の管理:
生成物の管理はタスクや組織によって大きく異なりますが、標準的な例としてスクリプトは git、データやモデルファイル は S3、計算環境 は ECR、実行ジョブ はSageMaker上で管理する手法があります。
CD/CDパイプラインの管理:
コードの変更に対して、モデルの評価やデプロイへのテストなどを一括管理、自動化するためにgitやAWS CodeBuildを使った手法を紹介いたしました。プルリクエストをトリガーとして機械学習モデルの精度評価を自動実行し、精度の良いモデルをMainブランチに採用する例および、マージ後にシステムテストを行ったのちに本番環境にデプロイする例についてご説明いたしました。
モデルのパフォーマンス管理:
ビジネスでは、時間が経つとデータの質が変わっていくため、継続的なモデルの監視が必要です。SageMakerのModel Monitorを使うことでデプロイしたモデルのパフォーマンス管理を簡単におこなうことができます。またAugmented AIの機能を用いて、Human in the loopの観点から人間のフィードバックをモデル改善に取り入れていくことができます。
詳細はそれぞれの記事をご覧ください。
- AWS Step Functions Data Science SDK for Amazon SageMaker を使用してモデルの再トレーニングとデプロイを自動化する
- Amazon SageMaker Model Monitor – 機械学習モデルのためのフルマネージドな自動監視
- Amazon SageMaker と Amazon Augmented AI によるオブジェクトの検出とモデルの再トレーニング
研究実験フェーズ、運用フェーズで求められる機能が異なり、それぞれのフェーズに対するMLOps基盤についてSageMakerおよびAWSサービスを用いた方法についてご紹介しました。プロジェクトが求めている成果や組織構成によっても求められる機能が異なるため、コンポーネントを組み合わせて使えるような基盤を意識することが必要です。AWSでは機械学習ソリューションアーキテクトがお客さまのお話しを伺い、ご状況に合わせたMLOps基盤を構築するご支援をしております。ご興味やご質問などがございましたら是非お気軽にお尋ねいただけたらと思います!
「『遊戯王ニューロン』における10000種類カード認識大規模データの学習パイプライン」 [Slides]
株式会社コナミデジタルエンタテインメント
制作支援本部 技術開発部 田中秀和様
株式会社コナミデジタルエンタテインメント様は、遊戯王オフィシャルカードゲーム公式アプリケーションである「遊戯王ニューロン」を提供しており、カメラによる複数のカードの検索とデッキへの登録を一括で行える機能を搭載しています。その際、10000種類を超えるカードを分類するための学習モデルの生成や、大量の学習データの生成・管理、また学習モデルの精度評価をおこなっています。
遊戯王ニューロンでは新しいカードが頻繁にリリースされるため、1,2ヶ月ごとに学習モデルをアップデートする必要があります。開発当時の機械学習ワークフローの課題として、データ生成からモデルデプロイまでのリードタイムが長いことがありました。また、開発にともない作業フローが複雑になり、工程が属人化・サイロ化することで柔軟な開発が困難になってきました。
これらの課題を解決するために、Amazon SageMakerを活用して大規模データの学習パイプラインの構築を行いました。自社で開発したコードをDockerコンテナ上の開発環境で実行することにより、計算リソースの変更に柔軟に対処できるようになりました。またAmazon SageMakerマネージドコンソール上のログ機能をダッシュボードとして用いることで、処理ステータスの把握・共有が容易になりました。機械学習ワークフローにはAirflowを採用し、各処理をパイプライン化した上でスケジューリング実行しています。前処理・学習・推論の各工程でAmazon SageMakerを効果的に使っており、SageMaker ProcessingやFSx for Lustreなどの具体例を交えながらご説明いただきました。また、インスタンスの自動停止やManaged Spot Instance、複数インスタンスを用いた並列処理など、コストを削減するための実例についてもお話しいただきました。
SageMakerは各工程のモジュールが疎結合しているため、工程の一部分をオンプレミス上のマシンと組み合わせることも可能です。コナミデジタルエンタテインメント様では、冗長化のために、オンプレミス上のマシンでの学習も行なっており、インスタンス名を“local_gpu”と書き換えるだけで切り替えられる点にもメリットを感じておられました。(注:SageMaker Python SDKやNVIDIA Dockerなどの事前の環境構築は必要になります)。全体として、SageMakerを採用することで作業の属人化を防ぎ、工程を把握・共有することが可能になり、低コストで機械学習ワークフローを管理することができるようになりました。
「ハイブリッドMLパイプラインによるビジネスアジリティの向上」 [Slides]
ヤフー株式会社 石川貴大様
ヤフー株式会社様には、プレミアム会員へのマーケティングやレコメンド配信の最適化といったモデリング施策に関して、ビジネスアジリティ向上を目的とした機械学習パイプラインの構築についてお話しいただきました。特にプライベートクラウドとAWSクラウドを組み合わせたハイブリッド環境構築に至った背景や、システムの概要、さらにはモデル管理におけるCI/CDの取り組みについてもご紹介いただきました。
冒頭では、これまでの開発の背景を踏まえながらAWS活用のマイルストーンについて説明いただきました。AWS検討前、PoC、フェーズ1(現状)、フェーズ2の4段階に分け、コストや使い勝手の観点からプライベートクラウドとAWSクラウドを使い分けるようになった経緯を述べられました。また、スピード感を持って変わるビジネス要求に対して柔軟な改善を行うためには、お互いのクラウドが分断しているのではなく、シームレスに乗り入れできるようなハイブリッドクラウドを構築する必要があることも強調されていました。
AWSクラウドの活用方針に関して、イベント冒頭のセッションでAWS上総が述べたのと同様に、モデルの探索段階とモデルの運用段階に分けてご説明いただきました。モデルの探索段階では、データ集計以降の過程をAWSで実施しモデルの開発速度を向上させました。プライベートクラウド上にあるデータソースをS3にコピーし、その後はSageMaker Step Functions Data Science SDKによりワークフロー全体をラップして管理しました。Step Functions Data Science SDKを使うメリットは、ノートブック上でPythonを用いて記述でき、データサイエンティストとの親和性が高いことです。モデルの運用段階では、前処理をプライベートクラウドで、それ以降をAWSクラウドで実施する運用にしました。このため、通常シームレスに運用される前処理〜学習の工程がクラウド間で分断される問題がおきます。これに対処するため、AWSクラウドにあるStep Functions Data Science SDKで作ったワークフローを、プライベートクラウドに立てたAirflow Web UIからラップしてEnd to Endで実行する運用方式を採用しました。最後にDevOpsとしての取り組みとして、モデルのCI/CDパイプラインについてご説明いただきました。特徴は、オフライン(機械学習ワークフロー内)で定義されたメトリクスやモデルのデプロイ履歴を一つのバケットで管理しているところです。これはビジネスでのメトリクスとオフラインのメトリクスが連動しない場合があるためで、後でさかのぼって原因解明できる体制を整える必要があるから、とのことでした。
まとめ
今回は AWSにおけるMLOpsプロセス実装のベストプラクティスや ML CI/CD環境の構築について、お客様事例を交えてお話ししました。次回のAWS AI/ML@Tokyoは、11/26の開催を予定しています。お申し込み こちら から。
2019年に開催した「Amazon SageMaker事例祭り」、2020年からスタートした「AWS AI/ML@Tokyo」の開催報告と登壇スライドは、以下のリンクからご覧いただけます。
- 第1回 Amazon SageMaker 事例祭り 2019年1月15日 [Web]
- 第2回 Amazon SageMaker 事例祭り 2019年2月12日 [Blog]
- 第3回 Amazon SageMaker 事例祭り 2019年3月12日 [Blog]
- 第4回 Amazon SageMaker 事例祭り 2019年4月24日 [Blog]
- 第5回 Amazon SageMaker 事例祭り 2019年5月21日 [Blog]
- 第6回 Amazon SageMaker 事例祭り 2019年7月18日 [Blog]
- 第7回 Amazon SageMaker 事例祭り 2019年8月29日 [Blog]
- 第8回 Amazon SageMaker 事例祭り 2019年9月19日 [Blog]
- 第9回 Amazon SageMaker 事例祭り 2019年10月30日 [Blog]
- 第10回 Amazon SageMaker 事例祭り 2019年11月28日 [Blog]
- 第1回 AWS AI/ML@Tokyo #1 2020年2月6日 [Blog]
- 第2回 AWS AI/ML@Tokyo #2 2020年2月27日 [Blog]
- 第3回 AWS AI/ML@Tokyo #3 2020年4月23日 [Blog]
- 第4回 AWS AI/ML@Tokyo #4 2020年6月11日 [Blog]
- 第5回 AWS AI/ML@Tokyo #5 2020年7月9日 [Blog]
- 第6回 AWS AI/ML@Tokyo #6 2020年9月3日 [Blog]
またAmazon SageMakerのオンラインによる体験ハンズオンがございますので、こちらもご活用ください。
https://pages.awscloud.com/event_JAPAN_hands-on-ml_ondemand.html