Amazon SageMaker AI と Azure DevOps を使用して MLOps ワークフローを構築する - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon SageMaker AI と Azure DevOps を使用して MLOps ワークフローを構築する

Deepika Kumar、Sara van de Moosdijk、Philips Kokoh Prasetyo (Amazon Web Services)

概要

機械学習オペレーション (MLOps) は、機械学習 (ML) ワークフローとデプロイを自動化および簡素化する一連のプラクティスです。MLOps は、ML ライフサイクルの自動化に焦点を当てたものです。これにより、モデルを開発するだけでなく、体系的かつ反復的にデプロイ、モニタリング、再トレーニングできるようになります。MLOps は DevOps の原則を ML に適用することで、ML モデルのデプロイを高速化し、時間の経過とともに精度を向上させ、真のビジネス価値の確実な提供を支援します。

多くの場合、組織には MLOps ジャーニーを開始する前に既に、DevOps ツールとデータストレージソリューションがあります。このパターンは、Microsoft Azure と の両方の強みを活用する方法を示しています AWS。こうした環境では、Azure DevOps と Amazon SageMaker AI を容易に統合して、MLOps ワークフローを作成できます。

このソリューションは、Azure と 間の作業を簡素化します AWS。Azure は、開発および機械学習 AWS に使用できます。これにより、データ処理、トレーニング、 AWSへのデプロイなど、機械学習モデルを最初から最後まで作成するための効果的なプロセスを促進できます。効率性を高めるには、このようなプロセスの管理に Azure DevOps パイプラインを使用します。このソリューションは、ファインチューニング、ベクトルデータベース、プロンプト管理を含む、生成 AI の基盤モデルオペレーション (FMOps) と大規模言語モデルオペレーション (LLMOps) に適用されます。

前提条件と制限事項

前提条件

  • Azure サブスクリプション – 継続的インテグレーションおよび継続的デプロイ (CI/CD) パイプラインを設定するための Azure サービス (Azure DevOps など) へのアクセス。

  • アクティブな AWS アカウント – このパターン AWS のサービス で使用される を使用するためのアクセス許可。

  • データ – 機械学習モデルをトレーニングするための履歴データへのアクセス。

  • ML の概念に関する知識 — Python、Jupyter Notebooks、機械学習モデル開発について理解している必要があります。

  • セキュリティ設定 – Azure と AWS の両方でロール、ポリシー、アクセス許可を適切に設定し、安全なデータ転送とアクセスを確保しておきます。

  • (オプション) ベクトルデータベース – ベクトルデータベースに検索拡張生成 (RAG) アプローチとサードパーティーサービスを使用している場合は、外部ベクトルデータベースへのアクセスが必要です。

制限事項

  • このガイダンスでは、安全なクラウド間データ転送については説明していません。クラウド間のデータ転送の詳細については、「ハイブリッドおよびマルチクラウド向けのAWS ソリューション」を参照してください。

  • マルチクラウドソリューションでは、リアルタイムデータ処理とモデル推論のレイテンシーが増大する可能性があります。

  • このガイダンスは、マルチアカウント MLOps アーキテクチャの一例を示すものであり、調整は、機械学習と AWS 戦略に基づいて必要です。

  • このガイダンスでは、Amazon SageMaker AI 以外の AI/ML サービスの使用については説明していません。

  • 一部の AWS のサービス は では使用できません AWS リージョン。利用可能なリージョンについては、「AWS のサービス (リージョン別)」を参照してください。特定のエンドポイントについては、「サービスエンドポイントとクォータ」ページを参照して、サービスのリンクを選択します。

アーキテクチャ

ターゲットアーキテクチャ

ターゲットアーキテクチャは、Azure DevOps を Amazon SageMaker AI と統合し、クロスクラウド ML ワークフローを作成します。ここでは、CI/CD プロセスには Azure が使用され、ML モデルのトレーニングとデプロイには SageMaker AI が使用されます。これは、モデルの構築とデプロイを通じて (Amazon S3、Snowflake、Azure Data Lake などのソースから) データを取得するプロセスの概要を表しています。主なコンポーネントには、モデルの構築とデプロイ、データ準備、インフラストラクチャ管理のための CI/CD パイプライン、ML モデルのトレーニングとファインチューニング、評価、デプロイのための Amazon SageMaker AI などがあります。このアーキテクチャは、効率的で自動化されたスケーラブルな ML ワークフローを、クラウドプラットフォーム全体で提供するように設計されています。

Azure DevOps と SageMaker を使用する MLOps ワークフローのアーキテクチャ図。

このアーキテクチャは、次のコンポーネントで構成されます。

  1. データサイエンティストは、開発アカウントで ML 実験を実行し、さまざまなデータソースを使用して ML ユースケースの数とおりのアプローチを検討します。ユニットテストとトライアルを実行し、Amazon SageMaker AI with MLflow を使用して実験を追跡できます。生成 AI モデル開発では、データサイエンティストは Amazon SageMaker AI JumpStart モデルハブから基盤モデルをファインチューニングします。データサイエンティストはモデル評価の後、Azure DevOps でホストされているモデル構築リポジトリにコードをプッシュしてマージします。このリポジトリには、複数ステップのモデル構築パイプラインのコードが含まれています。

  2. Azure DevOps では、コードがメインブランチにマージされた時点で、継続的インテグレーション (CI) を提供するモデル構築パイプラインを自動または手動でアクティブ化できます。オートメーションアカウントでは、これにより、データ前処理、モデルトレーニングとファインチューニング、モデル評価、精度に基づく条件付きモデル登録のための SageMaker AI パイプラインがアクティブ化されます。

  3. オートメーションアカウントは、ML 環境 (Amazon ECR)、モデル (Amazon S3)、モデルメタデータ (SageMaker AI モデルレジストリ)、機能 (SageMaker AI Feature Store)、自動パイプライン (SageMaker AI パイプライン)、ML ログインサイト (CloudWatch) をホストする ML プラットフォーム全体の中央アカウントです。生成 AI ワークロードの場合、ダウンストリームアプリケーションのプロンプトに対して追加の評価が必要になる場合があります。プロンプト管理アプリケーションは、このプロセスの合理化と自動化に役立ちます。このアカウントを使用すると、ML アセットの再利用が可能になり、ベストプラクティスを適用して ML ユースケースの配信を高速化できます。

  4. レビューのため、最新のモデルバージョンが SageMaker AI モデルレジストリに追加されました。これにより、各モデルバージョンとそれぞれのアーティファクト (リネージュとメタデータ) が追跡されます。また、モデルのステータス (承認、拒否、または保留中)、およびダウンストリームデプロイのバージョンも管理されます。

  5. モデルレジストリのトレーニング済みモデルがスタジオインターフェイスまたは API コールを通じて承認されると、イベントを Amazon EventBridge にディスパッチできます。EventBridge は Azure DevOps でモデルデプロイパイプラインを開始します。

  6. 継続的デプロイ (CD) を提供するモデルデプロイパイプラインは、モデルデプロイリポジトリからソースをチェックアウトします。ソースには、コード、モデルデプロイの設定、品質ベンチマークのテストスクリプトが含まれています。モデルデプロイパイプラインは、推論タイプに合わせて調整できます。

  7. モデルデプロイパイプラインは品質管理チェック後、モデルをステージングアカウントにデプロイします。ステージングアカウントは本番稼働用アカウントのコピーであり、統合のテストと評価に使用されます。バッチ変換の場合、モデルデプロイパイプラインはバッチ推論プロセスを自動的に更新して、承認された最新のモデルバージョンを使用できます。リアルタイム、サーバーレス、または非同期の推論では、それぞれのモデルエンドポイントが個別に設定または更新されます。

  8. ステージングアカウントでのテストに成功した場合は、モデルデプロイパイプラインを通じて手動で承認することで、モデルを本番稼働用アカウントにデプロイできます。このパイプラインは、モデルモニタリングやデータフィードバックメカニズムなど、本番環境へのデプロイステップで本番環境エンドポイントをプロビジョニングします。

  9. モデルが本番環境になった後は、SageMaker AI Model Monitor や SageMaker AI Clarify などのツールを使用してバイアスを特定し、ドリフトを検出し、モデルのパフォーマンスを継続的にモニタリングします。

自動化とスケール

Infrastructure as Code (IaC) を使用して、複数のアカウントと環境に自動デプロイします。MLOps ワークフローの設定プロセスを自動化することで、さまざまなプロジェクトに取り組む ML チームが使用する環境を分離できます。 は、インフラストラクチャをコードとして扱うことで、 AWS リソースのモデル化、プロビジョニング、管理AWS CloudFormationを支援します。

ツール

AWS のサービス

  • Amazon SageMaker AI は、ML モデルを構築およびトレーニングし、これらの ML モデルを、稼働準備の整ったホストされている環境にデプロイするのに役立つマネージド型 ML サービスです。

  • AWS Glue は、フルマネージド型の ETL (抽出、変換、ロード) サービスです。これにより、データストアとデータストリーム間でのデータの分類、整理、強化、移動を確実に行うことができます。

  • Amazon Simple Storage Service (Amazon S3) は、あらゆる量のデータを保存、保護、取得できるクラウドベースのオブジェクトストレージサービスです。このパターンでは、Amazon S3 はデータストレージに使用され、モデルトレーニングとモデルオブジェクト用の SageMaker AI と統合されています。

  • AWS Lambda は、サーバーのプロビジョニングや管理を行うことなくコードを実行できるコンピューティングサービスです。必要に応じてコードを実行し、自動的にスケーリングするため、課金は実際に使用したコンピューティング時間に対してのみ発生します。このパターンでは、Lambda はデータの前処理タスクと後処理タスクに使用されます。

  • Amazon Elastic Container Registry (Amazon ECR) は、セキュリティ、スケーラビリティ、信頼性を備えたマネージドコンテナイメージレジストリサービスです。このパターンでは、SageMaker AI がトレーニングおよびデプロイ環境として使用する Docker コンテナが保存されます。

  • Amazon EventBridge は、アプリケーションをさまざまなソースのリアルタイムデータに接続できるようにするサーバーレスイベントバスサービスです。このパターンでは、自動モデル再トレーニングまたはデプロイを開始するイベント駆動型または時間ベースのワークフローが、EventBridge によってオーケストレーションされます。

  • Amazon API Gateway は、任意のスケールで REST、HTTP、WebSocket API を作成、公開、維持、監視、保護する上で役立ちます。 このパターンでは、SageMaker AI エンドポイントの外部向け単一エントリポイントを作成するためにこのツールが使用されます。

  • RAG アプリケーションの場合、Amazon OpenSearch ServiceAmazon RDS for PostgreSQL AWS のサービスなどの を使用して、LLM に内部データを提供するベクトル埋め込みを保存できます。

その他のツール

  • Azure DevOps は、CI/CD パイプラインの管理を支援し、コードの構築、テスト、デプロイを容易にします。

  • Azure Data Lake Storage または Snowflake は、ML モデルのトレーニングデータのサードパーティーソースとして使用できる可能性があります。

  • PineconeMilvus、または ChromaDB は、ベクトル埋め込みを保存するためのサードパーティーのベクトルデータベースとして使用できる可能性があります。

ベストプラクティス

このマルチクラウド MLOps ワークフローのコンポーネントを実装する前に、次のアクティビティを完了してください。

  • 機械学習ワークフローとそのサポートに必要な各ツールを定義して理解します。ユースケースごとに異なるワークフローとコンポーネントが必要となります。例えば、特徴量ストアは、パーソナライゼーションのユースケースでは特徴量の再利用と低レイテンシーの推論に必要となる場合がありますが、他のユースケースでは不要となる可能性があります。アーキテクチャを適切にカスタマイズするには、ターゲットワークフローやユースケースの要件、およびデータサイエンスチームにとって望ましいコラボレーション方法を理解する必要があります。

  • アーキテクチャの各コンポーネントの責任を明確に分離します。Azure Data Lake Storage、Snowflake、Amazon S3 にデータストレージを分散すると、複雑さとコストが増大する可能性があります。可能であれば、一貫性のあるストレージメカニズムを選択します。同様に、Azure と AWS DevOps サービスの組み合わせ、または Azure と AWS ML サービスの組み合わせを使用しないでください。

  • MLOps ワークフローをエンドツーエンドでテストするには、既存のモデルとデータセットを 1 つ以上選択します。テストアーティファクトには、プラットフォームが本番環境に入った場合にデータサイエンスチームが開発する実際のユースケースを反映させる必要があります。

エピック

タスク説明必要なスキル

データソースの識別

現在および将来のユースケース、利用可能なデータソース、データの種類 (機密データなど) に基づき、MLOps プラットフォームと統合する必要があるデータソースを文書化します。データは、Amazon S3、Azure Data Lake Storage、Snowflake、またはその他のソースに保存できます。生成 AI ワークロードの場合、生成されたレスポンスを根拠とするナレッジベースがデータに含まれる場合もあります。このデータは、ベクトルデータベースにベクトル埋め込みとして保存されます。これらのソースをプラットフォームと統合し、正しいリソースへのアクセスを保護するための計画を作成してください。

データエンジニア、データサイエンティスト、クラウドアーキテクト

該当するサービスを選択します。

データサイエンスチームにとって望ましいワークフロー、該当するデータソース、既存のクラウドアーキテクチャに基づいてサービスを追加または削除して、アーキテクチャをカスタマイズします。たとえば、データエンジニアやデータサイエンティストは、SageMaker AI AWS Glue、または Amazon EMR でデータ前処理と特徴量エンジニアリングを実行できます。3 つのサービスすべてが必要になる可能性はほとんどありません。

AWS 管理者、データエンジニア、データサイエンティスト、ML エンジニア

セキュリティ要件を分析します。

セキュリティ要件を収集して文書化します。この一環として、以下を決定します。

  • 特定のデータソースにアクセスできるチームまたはエンジニア

  • 事前トレーニング済みの基盤モデルにアクセスできるチームまたはエンジニア

  • チームが他のチームのコードとモデルにアクセスできるかどうか

  • 非開発アカウントに対してチームメンバーに付与する必要があるアクセス許可 (存在する場合)

  • クラウド間データ転送のために実装する必要があるセキュリティ対策

生成 AI ワークロードの保護の詳細については、「生成 AI の保護: 生成 AI セキュリティスコープマトリックスの概要」(AWS ブログ記事) を参照してください。

AWS 管理者、クラウドアーキテクト
タスク説明必要なスキル

セットアップします AWS Organizations。

ルート AWS Organizations で をセットアップします AWS アカウント。こうすると、マルチアカウント MLOps 戦略の一部として作成する後続アカウントを管理しやすくなります。詳細については、AWS Organizations のドキュメントを参照してください。

AWS 管理者
タスク説明必要なスキル

AWS 開発アカウントを作成します。

データエンジニアとデータサイエンティスト AWS アカウント が ML モデルを試して作成するためのアクセス許可を持つ を作成します。手順については、 AWS Organizations ドキュメントの「組織内のメンバーアカウントの作成」を参照してください。

AWS 管理者

モデル構築リポジトリを作成します。

データサイエンティストが実験フェーズの完了後にモデル構築とデプロイのコードをプッシュするための、Git リポジトリを Azure に作成します。手順については、Azure DevOps ドキュメントの「Git リポジトリを設定する」を参照してください。

DevOps エンジニア、ML エンジニア

モデルデプロイリポジトリを作成します。

標準のデプロイコードとテンプレートを保存する Git リポジトリを Azure に作成します。設計フェーズで特定したように、組織が使用するすべてのデプロイオプションのコードを含める必要があります。例えば、リアルタイムエンドポイント、非同期エンドポイント、サーバーレス推論、またはバッチ変換を含める必要があります。手順については、Azure DevOps ドキュメントの「Git リポジトリを設定する」を参照してください。

DevOps エンジニア、ML エンジニア

Amazon ECR リポジトリを作成します。

承認された ML 環境を Docker イメージとして保存する Amazon ECR リポジトリを設定します。データサイエンティストと ML エンジニアが新しい環境を定義できるようにします。手順については、Amazon ECR ドキュメントの「プライベートリポジトリの作成」を参照してください。

ML エンジニア

SageMaker AI Studio を設定します。

以前に定義したセキュリティ要件、必要なデータサイエンスツール (MLflow など)、必要な統合開発環境 (IDE) に従って、開発アカウントに SageMaker AI Studio を設定します。ライフサイクル設定を使用して主要機能のインストールを自動化し、データサイエンティストのための統一された開発環境を作成します。詳細については、SageMaker AI ドキュメントの「Amazon SageMaker AI Studio」と「MLflow トラッキングサーバー」を参照してください。

データサイエンティスト、ML エンジニア、プロンプトエンジニア
タスク説明必要なスキル

オートメーションアカウントを作成します。

自動パイプラインとジョブ AWS アカウント が実行される を作成します。データサイエンスチームに、このアカウントへの読み取りアクセス権を付与できます。手順については、 AWS Organizations ドキュメントの「組織内のメンバーアカウントの作成」を参照してください。

AWS 管理者

モデルレジストリの設定

オートメーションアカウントで SageMaker AI モデルレジストリを設定します。このレジストリは ML モデルのメタデータを保存します。また、特定のデータサイエンティストやチームリーダーがモデルを承認または拒否するのに役立ちます。詳細については、SageMaker AI ドキュメントの「モデルレジストリを使用したモデルの登録とデプロイ」を参照してください。

ML エンジニア

モデル構築パイプラインを作成します。

コードがモデル構築リポジトリにプッシュされたときに手動または自動で開始される CI/CD パイプラインを Azure に作成します。このパイプラインは、ソースコードをチェックアウトし、オートメーションアカウントで SageMaker AI パイプラインを作成または更新する必要があります。さらに、モデルレジストリに新しいモデルを追加する必要があります。パイプラインの作成に関する詳細については、Azure パイプラインについての各ドキュメントを参照してください。

DevOps エンジニア、ML エンジニア
タスク説明必要なスキル

AWS ステージングアカウントとデプロイアカウントを作成します。

ML モデルのステージングとデプロイ AWS アカウント 用に を作成します。本番環境への移行前にステージング中のモデルを正確にテストできるようにするためには、これらのアカウントは同一である必要があります。データサイエンスチームに、ステージングアカウントへの読み取りアクセス権を付与できます。手順については、 AWS Organizations ドキュメントの「組織内のメンバーアカウントの作成」を参照してください。

AWS 管理者

モデルモニタリング用 S3 バケットを設定します。

モデルデプロイパイプラインによって作成されたデプロイ済みモデルのモデルモニタリングを有効にする場合は、このステップを完了します。入出力データを保存するための Amazon S3 バケットを作成します。S3 バケットの作成の詳細については、Amazon S3 ドキュメントの「汎用バケットの作成」を参照してください。自動モデルモニタリングジョブがオートメーションアカウントで実行されるように、クロスアカウントアクセス許可を設定します。詳細については、SageMaker AI ドキュメントの「データとモデルの品質を監視する」を参照してください。

ML エンジニア

モデルデプロイパイプラインを作成します。

モデルがモデルレジストリで承認されたときに開始される CI/CD パイプラインを Azure に作成します。パイプラインは、ソースコードとモデルアーティファクトをチェックアウトし、ステージングアカウントと本番稼働用アカウントにモデルをデプロイするためのインフラストラクチャテンプレートを構築し、ステージングアカウントにモデルをデプロイし、自動テストを実行し、手動承認を待機し、承認されたモデルを本番稼働用アカウントにデプロイする必要があります。パイプラインの作成に関する詳細については、Azure パイプラインについての各ドキュメントを参照してください。

DevOps エンジニア、ML エンジニア
タスク説明必要なスキル

ビルドテンプレート AWS CDK または CloudFormation テンプレート。

自動的にデプロイする必要があるすべての環境の AWS Cloud Development Kit (AWS CDK) または AWS CloudFormation テンプレートを定義します。これには、開発環境、オートメーション環境、ステージングおよびデプロイ環境が含まれる場合があります。詳細については、AWS CDK および CloudFormation についての各ドキュメントを参照してください。

AWS DevOps

インフラストラクチャパイプラインを作成します。

インフラストラクチャデプロイ用の CI/CD パイプラインを Azure に作成します。管理者は、このパイプラインを開始して新しい を作成し AWS アカウント 、ML チームが必要とする環境を設定できます。

DevOps エンジニア

トラブルシューティング

問題ソリューション

モニタリングとドリフトの検出が不十分 – モニタリングが不十分だと、モデルのパフォーマンスの問題やデータドリフトが検出されない可能性があります。

Amazon CloudWatch、SageMaker AI Model Monitor、SageMaker AI Clarify などのツールを使用して、モニタリングフレームワークを強化してください。また、特定された問題に対してすぐにアクションを実行するためのアラートを設定します。

CI パイプラインのトリガーエラー 設定ミスが原因となり、コードマージ時に Azure DevOps の CI パイプラインがトリガーされない場合があります。

Azure DevOps プロジェクト設定をチェックして、ウェブフックが正しく設定され、正しい SageMaker AI エンドポイントを指していることを確認します。

ガバナンス 中央オートメーションアカウントが、すべての ML プラットフォームにベストプラクティスを適用しないことで、ワークフローの一貫性が損なわれる場合があります。

オートメーションアカウントの設定を監査し、すべての ML 環境とモデルが定義済みのベストプラクティスとポリシーに準拠していることを確認します。

モデルレジストリの承認の遅延 – この事象は、ユーザーがモデルの確認に時間がかかったか、技術的な問題が原因で、モデルのチェックと承認が遅れた場合に発生します。

承認保留中のモデルをステークホルダーに警告する通知システムを実装し、レビュープロセスを合理化します。

モデルデプロイイベントの失敗 モデルデプロイパイプラインを開始するためにディスパッチされたイベントが失敗し、デプロイの遅延が発生する場合があります。

Amazon EventBridge に、Azure DevOps パイプラインを正常に呼び出すための適切なアクセス許可とイベントパターンが設定されていることを確認します。

本番稼働用デプロイのボトルネック 手動の承認プロセスでボトルネックが発生し、モデルの本番稼働用デプロイが遅れる場合があります。

モデルデプロイパイプライン内の承認ワークフローを最適化し、タイムリーなレビューと明確なコミュニケーションチャネルを促進します。

関連リソース

AWS ドキュメント

その他の AWS リソース

Azure ドキュメント