Amazon Web Services ブログ

Amazon SageMaker でのフルマネージド型 MLFlow の一般提供に関するお知らせ

6月19日、Amazon SageMaker でのフルマネージド型 MLflow 機能の一般提供についてお知らせいたします。 MLflow は広く使用されているオープンソースツールであり、機械学習 (ML) チームが ML ライフサイクル全体を管理する上で重要な役割を果たします。今回の新リリースにより、わずか数ステップで MLflow Tracking Server を簡単にセットアップおよび管理できるようになり、お客様はプロセスの合理化と生産性の向上を実現できます。

MLflow を活用すると、データサイエンティストと ML デベロッパーはモデルトレーニングの複数回の試行を実験内のランとして追跡し、それらのランを視覚化と比較して、モデルを評価し、最適なモデルをモデルレジストリに登録することができます。Amazon SageMaker では、MLflow のセットアップと管理に必要とされる、競合他社との差別化にはつながらない手間のかかる作業が不要になります。また、ML 管理者は AWS で安全かつスケーラブルな MLflow 環境をすばやく効率的に構築できるようになります。

SageMaker でのマネージド MLflow の主要なコンポーネント

SageMaker のフルマネージド型 MLflow 機能は、次の 3 つの主要なコンポーネントを中心に構築されています。

  • MLflow Tracking Server – SageMaker Studio UI を使用すると、わずか数ステップで MLflow Tracking Server を作成できます。このスタンドアロン HTTP サーバーは、ランと実験を追跡するための複数の REST API エンドポイントを提供するため、ML 実験のモニタリングを効率的に開始できます。セキュリティをさらに細かくカスタマイズするには、AWS コマンドラインインターフェイス (AWS CLI) を使用することもできます。
  • MLflow バックエンドメタデータストア — メタデータストアは MLflow Tracking Server の重要な部分であり、実験、ラン、アーティファクトに関連するすべてのメタデータが保持されます。これには、テスト名、ラン ID、パラメーター値、メトリクス、タグ、アーティファクトの場所が含まれ、ML テストを包括的に追跡および管理できます。
  • MLflow アーティファクトストア – このコンポーネントは、トレーニング済みモデル、データセット、ログ、プロットなど、ML 実験中に生成されたすべてのアーティファクトの保存場所を提供します。Amazon Simple Storage Service (Amazon S3) バケットを利用して、これらのアーティファクトを安全かつ効率的に保存するためのカスタマー管理型 AWS アカウントを提供します。

Amazon SageMaker with MLflow の利点

Amazon SageMaker と MLflow を組み合わせて使用すると、機械学習ワークフローを合理化および強化できます。

  • 包括的な実験トラッキング: ローカル統合開発環境 (IDE)、SageMaker Studio のマネージド IDE、SageMaker トレーニングジョブ、SageMaker 処理ジョブ、SageMaker パイプライン全体にわたって MLflow の実験を追跡します。
  • MLflow の全機能: MLflow トラッキング、MLflow 評価、MLflow モデルレジストリなどのすべての MLflow 実験機能を使用して、トレーニング反復の結果を簡単に比較および評価できます。
  • 統合モデルガバナンス: MLflow に登録したモデルは自動的に SageMaker モデルレジストリに表示され、統合モデルガバナンスエクスペリエンスが提供されるため、カスタムコンテナを構築することなく MLflow モデルを SageMaker 推論にデプロイできます。
  • 効率的なサーバー管理: SageMaker API または SageMaker Studio UI を使用して、必要に応じて MLflow Tracking Server のプロビジョニング、削除、アップグレードを行います。SageMaker は、お客様が基盤となるインフラストラクチャを管理しなくても、Tracking Server のスケーリング、パッチ適用、継続的なメンテナンスを管理します。
  • セキュリティの強化: AWS Identity and Access Management (IAM) を使用して MLflow Tracking Server へのアクセスを保護します。特定の MLFlow API へのアクセスを許可または拒否する IAM ポリシーを記述して、ML 環境の強固なセキュリティを確保します。
  • 効果的なモニタリングとガバナンス: Amazon EventBridgeAWS CloudTrail を使用して MLflow Tracking Server のアクティビティをモニタリングし、Tracking Server の効果的なガバナンスをサポートします。

MLflow Tracking Server の前提条件 (環境設定)

  1. SageMaker Studio ドメインの作成
    新しい SageMaker Studio エクスペリエンスを使用して SageMaker Studio ドメインを作成できます。
  2. IAM 実行ロールの設定
    MLflow Tracking Server には、Amazon S3 へのアーティファクトの読み取りおよび書き込みを行ったり、モデルを SageMaker に登録したりするための IAM 実行ロールが必要です。Studio ドメイン実行ロールを Tracking Server 実行ロールとして使用することも、Tracking Server 実行ロール用に別のロールを作成することもできます。このために新しいロールを作成する場合は、IAM ロールの詳細について「SageMaker デベロッパーガイド」をご覧ください。Studio ドメイン実行ロールを更新する場合、ロールに必要な IAM ポリシーの詳細については、「SageMaker デベロッパーガイド」を参照してください。

MLflow Tracking Server の作成
このチュートリアルでは、Tracking Server のバージョン (2.13.2)、サイズ (小)、実行ロール (Studio ドメイン実行ロール) などのデフォルト設定を使用して、MLflow Tracking Server を作成します。Tracking Server のサイズによって、サポートできる使用量は異なります。25 ユーザー以下のチームには、Small Tracking Server を使用することをお勧めします。Tracking Server 設定の詳細については、「SageMaker デベロッパーガイド」を参照してください。

まず、先ほど説明した環境設定で作成した SageMaker Studio ドメインの [アプリケーション] で [MLflow] を選択し、[作成] を選択します。

次に、Tracking Server の名前アーティファクトの保存場所 (S3 URI) を指定します。

MLflow Tracking Server の作成には最大 25 分かかる場合があります。


トレーニングランの追跡と比較
MLflow のメトリクス、パラメータ、アーティファクトのログ記録を開始するには、作成ステップで割り当てた Jupyter Notebook と Tracking Server ARN が必要です。MLflow SDK を使用してトレーニングランを追跡し、MLFlow UI を利用してそれらを比較できます。


MLFlow モデルレジストリから SageMaker モデルレジストリにモデルを登録するには、AWS Signature V4 を使用して MLFlow SDK によって行われたすべての MLFlow API リクエストを認証するための sagemaker-mlflow プラグインが必要です。

  1. MLFlow SDK と sagemaker-mlflow プラグインをインストールする
    まず、Notebook に MLFlow SDK と sagemaker-mlflow Python プラグインをインストールします。
    pip install mlflow==2.13.2 sagemaker-mlflow==0.1.0
  2. 実験でランを追跡する
    実験のランを追跡するには、次のコードを Jupyter Notebook にコピーします。

    import mlflow
    import mlflow.sklearn
    from sklearn.ensemble import RandomForestClassifier
    from sklearn.datasets import load_iris
    from sklearn.model_selection import train_test_split
    from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
    
    # Replace this with the ARN of the Tracking Server you just created
    arn = 'YOUR-TRACKING-SERVER-ARN'
    
    mlflow.set_tracking_uri(arn)
    
    # Load the Iris dataset
    iris = load_iris()
    X, y = iris.data, iris.target
    
    # Split the data into training and testing sets
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
    
    # Train a Random Forest classifier
    rf_model = RandomForestClassifier(n_estimators=100, random_state=42)
    rf_model.fit(X_train, y_train)
    
    # Make predictions on the test set
    y_pred = rf_model.predict(X_test)
    
    # Calculate evaluation metrics
    accuracy = accuracy_score(y_test, y_pred)
    precision = precision_score(y_test, y_pred, average='weighted')
    recall = recall_score(y_test, y_pred, average='weighted')
    f1 = f1_score(y_test, y_pred, average='weighted')
    
    # Start an MLflow run
    with mlflow.start_run():
    # Log the model
    mlflow.sklearn.log_model(rf_model, "random_forest_model")
    
    # Log the evaluation metrics
    mlflow.log_metric("accuracy", accuracy)
    mlflow.log_metric("precision", precision)
    mlflow.log_metric("recall", recall)
    mlflow.log_metric("f1_score", f1)
  3. MLflow UI でランを表示する
    ステップ 2 で示した Notebook を実行すると、MLflow UI に新しいランが表示されます。
  4. ランを比較する
    random_state を変更してトレーニングランごとに異なるメトリクス値を生成すると、この Notebook を複数回実行できます。

候補モデルを登録する
ステップ 4 で説明したとおり、複数回のランを比較したら、要件に最も一致するメトリクスを備えたモデルを MLflow モデルレジストリに登録できます。モデルを登録すると、本番環境への導入への潜在的な適合性が示され、この適合性を検証するためのさらなるテストが行われます。MLflow に登録されたモデルは SageMaker モデルレジストリに自動的に表示され、統一されたモデルガバナンスエクスペリエンスとなり、MLFlow モデルを SageMaker 推論にデプロイできるようになります。これにより、主に MLflow を実験に使用するデータサイエンティストは、SageMaker Model Registry を使用してモデルの本番環境へのデプロイを管理する ML エンジニアにモデルを引き渡すことができます。

MLflow モデルレジストリに登録されているモデルは次のとおりです。


SageMaker モデルレジストリに登録されているモデルは次のとおりです。

クリーンアップ
一度作成した MLflow Tracking Server では、削除または停止するまでコストが発生します。Tracking Server の請求は、サーバーの稼働時間、選択したサイズ、Tracking Server に記録されたデータ量に基づきます。Tracking Server を使用していないときは停止してコストを節約したり、API や SageMaker Studio UI を使用して削除したりできます。価格設定の詳細については、Amazon SageMaker の料金を参照してください。

今すぐご利用いただけます
SageMaker with MLflow は、中国と米国の GovCloud リージョンを除く、SageMaker Studio が利用可能なすべての AWS リージョンで一般提供されています。この新機能をぜひ試して、機械学習プロジェクトの効率性と制御性の向上を体験してください。詳細については、SageMaker with MLflow 製品詳細ページをご覧ください。

詳細については、「SageMaker デベロッパーガイド」をご覧ください。また、AWS re:Post for SageMaker または通常の AWS サポートの連絡先を通じて、ぜひフィードバックをお寄せください。

Veliswa

原文はこちらです。