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

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

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

Deepika Kumar、Sara van de Moosdijk、および " Kokoh Prasetyo、Amazon Web Services

概要

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

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

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

前提条件と制限

前提条件

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

  • アクティブな 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 ユースケースのさまざまなアプローチを検討します。データサイエンティストはユニットテストとトライアルを実行し、実験を追跡するために、MLflow で Amazon SageMaker AI を使用できます。生成 AI モデル開発では、データサイエンティストは Amazon SageMaker AI JumpStart モデルハブから基盤モデルを微調整します。モデル評価後、データサイエンティストはコードを Azure DevOps でホストされている Model Build リポジトリにプッシュしてマージします。このリポジトリには、複数ステップのモデル構築パイプラインのコードが含まれています。

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

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

  4. 最新のモデルバージョンが SageMaker AI Model Registry に追加され、レビューが行われます。モデルバージョンとそれぞれのアーティファクト (系統とメタデータ) を追跡します。また、モデルのステータス (承認、拒否、または保留中) を管理し、ダウンストリームデプロイのバージョンを管理します。

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

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

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

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

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

自動化とスケール

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

ツール

AWS のサービス

  • Amazon SageMaker AI は、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 ワークフローのend-to-endのテストを実行するには、既存のモデルとデータセットを 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 管理者

Model Build リポジトリを作成します。

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

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

Model Deploy リポジトリを作成します。

標準のデプロイコードとテンプレートを保存する 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 StudioMLflow 追跡サーバー」を参照してください。 SageMaker

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

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

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

AWS 管理者

モデルレジストリをセットアップします。

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

ML エンジニア

Model Build パイプラインを作成します。

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

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

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

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

AWS 管理者

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

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

ML エンジニア

Model Deploy パイプラインを作成します。

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

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 プラットフォーム間でベストプラクティスを適用しない可能性があり、ワークフローに一貫性がない可能性があります。

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

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

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

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

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

本番デプロイのボトルネック 手動の承認プロセスではボトルネックが発生し、モデルの本番デプロイが遅れる可能性があります。

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

関連リソース

AWS ドキュメント

その他の AWS リソース

Azure ドキュメント