機械学習(ML)チームはMLflowを使用してMLライフサイクルを効果的に管理しています。Amazon SageMaker MLflowは、包括的なML実験追跡とモデル管理機能を提供します。しかし、多くの企業には、直接SDKを使用するのではなく、HTTPSベースの統合を必要とする既存のインフラストラクチャ要件があります。
多くの組織は、セキュリティとインフラストラクチャのパターンを維持しながら、Amazon SageMaker MLflowを確立されたシステムと統合する必要があります。この統合の課題は、企業のセキュリティポリシー、ネットワーク制限、またはレガシーシステムの制約によりSDKを直接使用できないチームに影響を与えます。
この投稿では、MLflow SDKを必要とせずにAmazon SageMaker MLflowへのHTTPSアクセスを提供する、FlaskベースのセキュアなMLflowプロキシサービスの構築方法を説明します。このソリューションは、クラウド移行中の組織が既存のMLワークフローを維持しながらクラウドネイティブサービスを採用するためのものです。
ソリューションの概要
軽量なFlaskベースのMLflowプロキシアーキテクチャは、3つの主要コンポーネントを通じて企業システムとAmazon SageMaker MLflow間の安全な統合を提供します。
コンポーネント1:Application Load Balancer(ALB) AWS Application Load Balancerはアップストリームルーターとして機能し、トラフィック分散、初期リクエスト処理とルーティング、カスタムドメイン名とSSL終端のサポートを提供します。注:この実装ではALBを使用しますが、要件に応じてNginxなどの他のルーティングソリューションを使用することもできます。
コンポーネント2:Flask MLflowプロキシサービス アーキテクチャの中核として、PythonベースのFlaskアプリケーションが、着信HTTPSリクエストのインターセプトと処理、AWS認証とリクエスト署名の管理、セキュアなMLflowエンドポイントアクセスのためのURL変換、クライアントへの応答ルーティングを担当します。
コンポーネント3:Amazon SageMaker MLflow AWS管理のSageMaker MLflowサービスは、MLflow Tracking Server(管理型MLflow追跡サーバー)とMLflow App(サーバーレスMLflowアプリケーション)の2つのデプロイモードをサポートします。追跡情報用のバックエンドメタデータストアと、モデルファイルとデータのストレージを提供します。
アーキテクチャとリクエストワークフロー クライアントがHTTPSリクエストを開始すると、最初にALBに到達し、その後MLflowプロキシサービスにルーティングされます。プロキシサービスは、AWS IAM統合による認証処理、セキュアなアクセスのためのURL変換と事前署名、MLflow REST APIエンドポイントの処理などの重要な機能を実行します。プロキシサービスは着信リクエストを認証されたAWSリクエストに変換し、SageMaker MLflow RESTエンドポイントにAPI呼び出しを行います。処理後、プロキシサービスは応答を元のクライアントにルーティングします。
前提条件 このチュートリアルに従うには、AWSアカウント、AWS CLI、Node.js 18+、NPM、AWS CDK CLI 2.100+、Python 3.xなどのツールがインストールされたワークステーション、および基本的なAWS、Python、Flaskの知識とMLflowの概念の理解が必要です。このソリューションはAWSリソースを作成し、コストが発生する可能性があります。
ソリューションのデプロイ デプロイには約40分かかります。まず、AWS CDKを使用してインフラストラクチャをデプロイします:コードリポジトリのクローン、依存関係のインストール、CDK環境のブートストラップ、4つのCDKスタック(ネットワーク、SageMakerドメイン、SageMaker MLflow、Flaskアプリ)のデプロイ。Tracking ServerとServerlessの両方のモードをサポートします。
次に、Flask MLflowプロキシサービスをインストールして構成します:Session Managerを使用してEC2インスタンスに接続、Python 3.13と依存関係のインストール、セットアップスクリプトの実行によるプロキシサービスの起動、サービスのステータス確認。
最後に、MLflow REST APIアクセスを検証します:ALB DNS名を取得し、curlコマンドを使用して実験の作成、検索、取得、実行の作成、アーティファクトのリスト、タグの設定、実行の削除などのAPIエンドポイントをテストします。
セキュリティに関する考慮事項 本番環境にデプロイする際は、CloudWatchモニタリングの構成、レート制限の実装(AWS WAFの使用など)、内部(インターネット向けではない)ALBのデプロイによるプロキシアクセスのプライベートネットワークへの制限、ALBレベルでのHTTPS終端の有効化(ACMを使用したSSL/TLS証明書の管理)を検討してください。