次世代の Amazon SageMaker Experiments – 大規模な PlatoBlockchain Data Intelligence の機械学習トレーニングを整理、追跡、比較します。垂直検索。あい。

次世代の Amazon SageMaker Experiments – 機械学習トレーニングを大規模に整理、追跡、比較します

本日は、 AmazonSageMakerの実験 の能力 アマゾンセージメーカー SageMaker Python SDK または boto3 (ローカルの Jupyter Notebook を含む) を使用して、任意の統合開発環境 (IDE) から機械学習 (ML) の実験とモデルのバージョンを整理、追跡、比較、評価できます。

機械学習 (ML) は反復プロセスです。 新しいユース ケースを解決するとき、データ サイエンティストと ML エンジニアは、さまざまなパラメーターを反復処理して、特定されたビジネス上の課題を解決するために運用環境で使用できる最適なモデル構成 (別名ハイパーパラメーター) を見つけます。 時間が経つにつれて、複数のモデルとハイパーパラメーターを試した後、さまざまな実験を追跡するツールがなければ、ML チームがモデルの実行を効率的に管理して最適なモデルを見つけることが難しくなります。 実験追跡システムは、さまざまな反復を比較するプロセスを合理化し、チーム内のコラボレーションとコミュニケーションを簡素化するのに役立ちます。これにより、生産性が向上し、時間が節約されます。 これは、ML 実験を簡単な方法で整理および管理して、それらから結論を導き出すことによって達成されます。たとえば、最高の精度で実行されるトレーニングを見つけることです。

この課題を解決するために、SageMaker は、完全に統合された SageMaker 機能である SageMaker Experiments を提供します。 モデルのメトリック、パラメーター、ファイル、アーティファクトをログに記録し、さまざまなメトリックからチャートをプロットし、さまざまなメタデータをキャプチャし、それらを検索して、モデルの再現性をサポートする柔軟性を提供します。 データ サイエンティストは、視覚的なチャートと表を使用して、モデル評価のパフォーマンスとハイパーパラメーターをすばやく比較できます。 また、SageMaker Experiments を使用して、作成されたチャートをダウンロードし、モデルの評価を関係者と共有することもできます。

次世代の Amazon SageMaker Experiments – 大規模な PlatoBlockchain Data Intelligence の機械学習トレーニングを整理、追跡、比較します。垂直検索。あい。

SageMaker Experiments の新しい更新により、SageMaker SDK の一部になり、データサイエンティストの作業が簡素化され、複数のモデル実行を管理するために追加のライブラリをインストールする必要がなくなりました。 次の新しいコアコンセプトを導入しています。

  • 実験: グループ化された実行のコレクション。 実験には、SageMaker Python SDK を使用してどこからでも開始できる複数のタイプの実行が含まれます。
  • ラン: モデル トレーニング プロセスの各実行ステップ。 実行は、モデル トレーニングの XNUMX 回の反復のすべての入力、パラメーター、構成、および結果で構成されます。 カスタム パラメータとメトリックは、 log_parameter, log_parameters, log_metric 機能。 カスタム入力と出力は、 log_file 機能。

の一部として実装される概念 Run クラスは、SageMaker Python SDK がインストールされている任意の IDE から利用できます。 SageMaker のトレーニング、処理、

ジョブを変換すると、実行コンテキスト内でジョブが呼び出された場合、SageMaker Experiment Run が自動的にジョブに渡されます。 を使用して実行オブジェクトを回復できます load_run() あなたの仕事から。 最後に、新しい機能の統合により、データ サイエンティストは、混同行列、適合率と再現率のグラフ、および分類のユース ケースの ROC 曲線を自動的にログに記録することもできます。 run.log_confusion_matrix, run.log_precision_recall, run.log_roc_curve それぞれ関数。

このブログ投稿では、SageMaker SDK を介して Jupyter ノートブックで新しい SageMaker Experiments 機能を使用する方法の例を提供します。 これらの機能については、 パイトーチ MNIST 手書き数字分類の例をトレーニングする例。 実験は次のように構成されます。

  1. 実験の実行とログ パラメータの作成: 最初に新しい実験を作成し、この実験の新しい実行を開始して、パラメーターをログに記録します。
  2. モデル パフォーマンス メトリックのロギング:モデルのパフォーマンス メトリックをログに記録し、メトリック グラフをプロットします。
  3. モデル実行の比較:モデルのハイパーパラメータに従って、さまざまなモデルの実行を比較します。 これらの実行を比較する方法と、SageMaker Experiments を使用して最適なモデルを選択する方法について説明します。
  4. SageMaker ジョブからの実験の実行: 実験のコンテキストを SageMaker の処理、トレーニング、またはバッチ変換ジョブと自動的に共有する方法の例も提供します。 これにより、実行コンテキストを自動的に回復できます load_run あなたの仕事の中で機能します。
  5. SageMaker Clarify レポートの統合: どのように統合できるかをデモンストレーションします SageMakerの明確化 バイアスと説明可能性は、トレーニング済みのモデル レポートと共に単一のビューにレポートします。

前提条件

このブログ記事では、 Amazon SageMakerスタジオ 更新された SageMaker Experiments 機能を使用して Studio ノートブックからメトリクスをログに記録する方法を紹介します。 この例で示したコマンドを実行するには、次の前提条件が必要です。

  • SageMakerStudioドメイン
  • SageMaker フルアクセス権を持つ SageMaker Studio ユーザープロファイル
  • 少なくとも XNUMX つの SageMaker Studio ノートブック ml.t3.medium インスタンスタイプ

SageMaker ドメインとユーザープロファイルを利用できない場合は、これを使用して作成できます クイックセットアップガイド.

ロギング パラメータ

この演習では、 トーチビジョンは、一般的なデータセット、モデル アーキテクチャ、およびコンピューター ビジョン用の一般的な画像変換を提供する PyTorch パッケージです。 SageMaker Studio は一連の Dockerイメージ Amazon ECR で利用できる一般的なデータ サイエンスのユースケース向け。 PyTorch の場合、CPU または GPU トレーニング用に最適化されたイメージを選択するオプションがあります。 この例では、画像を選択します PyTorch 1.12 Python 3.8 CPU OptimizedPython 3 カーネル。 以下で説明する例は、SageMaker Experiments の機能に焦点を当てており、完全なコードではありません。

でデータをダウンロードしましょう torchvision SageMaker Experiments を使用して、トレーニングおよびテスト データセットのデータ サンプルの数をパラメータとしてパッケージ化し、追跡します。 この例では、 train_set & test_set すでにダウンロードされているように torchvision データセット。

from sagemaker.session import Session
from sagemaker.experiments.run import Run
import os

# create an experiment and start a new run
experiment_name = "local-experiment-example"
run_name = "experiment-run"

with Run(experiment_name=experiment_name, sagemaker_session=Session(), run_name=run_name) as run:
    run.log_parameters({
        "num_train_samples": len(train_set.data),
        "num_test_samples": len(test_set.data)
    })
    for f in os.listdir(train_set.raw_folder):
        print("Logging", train_set.raw_folder+"/"+f)
        run.log_file(train_set.raw_folder+"/"+f, name=f, is_output=False)

この例では、 run.log_parameters トレーニングおよびテスト データ サンプルの数をログに記録し、 run.log_file 生のデータセットを Amazon S3 にアップロードし、実験への入力としてログに記録します。

次世代の Amazon SageMaker Experiments – 大規模な PlatoBlockchain Data Intelligence の機械学習トレーニングを整理、追跡、比較します。垂直検索。あい。 次世代の Amazon SageMaker Experiments – 大規模な PlatoBlockchain Data Intelligence の機械学習トレーニングを整理、追跡、比較します。垂直検索。あい。

モデルのトレーニングとモデル メトリックのログ記録

MNIST データセットをダウンロードしたので、トレーニングしましょう。 CNNモデル 数字を認識します。 モデルのトレーニング中に、既存の実験の実行を読み込み、新しいパラメーターをログに記録し、モデル メトリックをログに記録してモデルのパフォーマンスを追跡します。

使用できます load_run 以前の実行をロードし、それを使用してモデルトレーニングをログに記録する関数

with load_run(experiment_name=experiment_name, run_name=run_name, sagemaker_session=Session()) as run:
    train_model(
        run=run,
        train_set=train_set,
        test_set=test_set,
        epochs=10,
        hidden_channels=5,
        optimizer="adam"
    )

その後、使用できます run.log_parameter & run.log_parameters XNUMX つまたは複数のモデル パラメーターを実行に記録します。

# log the parameters of your model
run.log_parameter("device", "cpu")
run.log_parameters({
    "data_dir": data_dir,
    "optimizer": optimizer,
    "epochs": epochs,
    "hidden_channels": hidden_channels
})

そして、私たちは使用することができます run.log_metric パフォーマンス メトリックを実験に記録します。

run.log_metric(name=metric_type+":loss", value=loss, step=epoch)
run.log_metric(name=metric_type+":accuracy", value=accuracy, step=epoch)

分類モデルの場合、次も使用できます run.log_confusion_matrix, run.log_precision_recall, run.log_roc_curve、モデルの混同行列、精度再現率グラフ、および ROC 曲線を自動的にプロットします。 私たちのモデルは多クラス分類問題を解決するので、混同行列のみをログに記録しましょう。

# log confusion matrix
with torch.no_grad():
    for data, target in test_loader:
        data, target = data.to(device), target.to(device)
        output = model(data)
        pred = output.max(1, keepdim=True)[1] 
        run.log_confusion_matrix(target, pred, "Confusion-Matrix-Test-Data")

実行の詳細を見ると、以下のスクリーンショットに示すように、生成されたメトリクスが表示されます。

次世代の Amazon SageMaker Experiments – 大規模な PlatoBlockchain Data Intelligence の機械学習トレーニングを整理、追跡、比較します。垂直検索。あい。

実行の詳細ページには、メトリックに関する詳細情報が表示されます。

次世代の Amazon SageMaker Experiments – 大規模な PlatoBlockchain Data Intelligence の機械学習トレーニングを整理、追跡、比較します。垂直検索。あい。

また、新しいモデル パラメータは、パラメータの概要ページで追跡されます。

次世代の Amazon SageMaker Experiments – 大規模な PlatoBlockchain Data Intelligence の機械学習トレーニングを整理、追跡、比較します。垂直検索。あい。

また、自動的にプロットされた混同行列を使用してクラスごとにモデルのパフォーマンスを分析することもできます。これは、ダウンロードしてさまざまなレポートに使用することもできます。 また、追加のグラフをプロットして、ログに記録されたメトリックに基づいてモデルのパフォーマンスを分析できます。

次世代の Amazon SageMaker Experiments – 大規模な PlatoBlockchain Data Intelligence の機械学習トレーニングを整理、追跡、比較します。垂直検索。あい。

複数のモデル パラメーターの比較

データ サイエンティストは、可能な限り最適なモデルを見つけたいと考えています。 これには、異なるハイパーパラメーターを使用してモデルを複数回トレーニングし、モデルのパフォーマンスをそれらのハイパーパラメーターと比較することが含まれます。 そのために、SageMaker Experiments では、同じ実験で複数の実行を作成できます。 モデルをさまざまな方法でトレーニングして、この概念を探ってみましょう。 num_hidden_channels & optimizers.

# define the list of parameters to train the model with
num_hidden_channel_param = [5, 10, 20]
optimizer_param = ["adam", "sgd"]
run_id = 0
# train the model using SageMaker Experiments to track the model parameters, 
# metrics and performance
sm_session = Session()
for i, num_hidden_channel in enumerate(num_hidden_channel_param):
    for k, optimizer in enumerate(optimizer_param):
        run_id += 1
        run_name = "experiment-run-"+str(run_id)
        print(run_name)
        print(f"Training model with: {num_hidden_channel} hidden channels and {optimizer} as optimizer")
        # Defining an experiment run for each model training run
        with Run(experiment_name=experiment_name, run_name=run_name, sagemaker_session=sm_session) as run:
            train_model(
                run=run, 
                train_set=train_set,
                test_set=test_set,
                epochs=10, 
                hidden_channels=num_hidden_channel,
                optimizer=optimizer
            )

現在、実験用に XNUMX つの新しい実行を作成しています。 それぞれが、モデル パラメーター、メトリック、混同行列を記録します。 次に、実行を比較して、問題に最適なモデルを選択できます。 実行を分析するとき、さまざまな実行のメトリック グラフを XNUMX つのプロットとしてプロットし、さまざまなトレーニング ステップ (またはエポック) での実行のパフォーマンスを比較できます。

次世代の Amazon SageMaker Experiments – 大規模な PlatoBlockchain Data Intelligence の機械学習トレーニングを整理、追跡、比較します。垂直検索。あい。

SageMaker トレーニング、処理、およびバッチ変換ジョブで SageMaker Experiments を使用する

上記の例では、SageMaker Experiments を使用して、モデルがノートブックでローカルにトレーニングされた SageMaker Studio ノートブックからモデルのパフォーマンスをログに記録しました。 SageMaker の処理、トレーニング、およびバッチ変換ジョブからモデルのパフォーマンスをログに記録するために同じことができます。 新しい自動コンテキスト受け渡し機能を使用すると、実験構成は自動的にキャプチャされるため、SageMaker ジョブと具体的に共有する必要はありません。

以下の例は、SageMaker Experiments 機能に焦点を当てており、完全なコードではありません。

from sagemaker.pytorch import PyTorch
from sagemaker.experiments.run import Run
from sagemaker.session import Session
from sagemaker import get_execution_role
role = get_execution_role()

# set new experiment configuration
exp_name = "training-job-experiment-example"
run_name = "experiment-run-example"

# Start training job with experiment setting
with Run(experiment_name=exp_name, run_name=run_name, sagemaker_session=Session()) as run:
    est = PyTorch(
        entry_point="",
        dependencies=[""],
        role=role,
        model_dir=False,
        framework_version="1.12",
        py_version="py38",
        instance_type='ml.c5.xlarge',
        instance_count=1,
            hyperparameters={
            "epochs": 10,
            "hidden_channels":5,
            "optimizer": "adam",
        },
        keep_alive_period_in_seconds=3600
    )
    
    est.fit()

モデル スクリプト ファイルでは、次を使用して実行コンテキストを取得できます。 load_run(). SageMaker の処理およびトレーニング ジョブでは、構成をロードするための実験構成を提供する必要はありません。 バッチ変換ジョブの場合、提供する必要があります experiment_name & run_name 実験の構成をロードします。

with load_run() as run:
    run.log_parameters({...})
    train_model(run, ...)

ノートブック スクリプトから SageMaker Experiments を実行するときに取得する情報に加えて、SageMaker ジョブから実行すると、ジョブのパラメーターと出力が自動的に入力されます。

次世代の Amazon SageMaker Experiments – 大規模な PlatoBlockchain Data Intelligence の機械学習トレーニングを整理、追跡、比較します。垂直検索。あい。 次世代の Amazon SageMaker Experiments – 大規模な PlatoBlockchain Data Intelligence の機械学習トレーニングを整理、追跡、比較します。垂直検索。あい。

新しい SageMaker Experiments SDK は、トライアルとトライアル コンポーネントの概念を使用して、以前のバージョンとの後方互換性も保証します。 以前の SageMaker Experiments バージョンを使用してトリガーされた実験は、新しい UI で自動的に利用可能になり、実験を分析できます。

SageMaker Clarify とモデルトレーニングレポートの統合

SageMaker Clarify は、検出によって ML モデルを改善するのに役立ちます 電位バイアス そして手助け 説明します これらのモデルが予測を行う方法。 Clarify は、データ (データ構成)、モデル (モデル構成)、およびバイアスの可能性について分析したい機密データ列 (バイアス構成)。 これまで、SageMaker Experiments はモデルトレーニングと Clarify レポートを、トライアルを介して接続された個々のトライアルコンポーネントとして表示していました。

新しい SageMaker Experiments を使用すると、SageMaker Clarify レポートをモデルトレーニングと統合することもできます。これにより、モデルをさらに理解できるようになります。 統合レポートの場合、トレーニング ジョブと Clarify ジョブの実行名を同じにするだけで済みます。 次の例は、 XGBoostモデル 全米の成人の収入を予測します。 モデルは、 UCI アダルト データセット. この演習では、モデルが既にトレーニングされており、データ、モデル、およびバイアスの構成が既に計算されていると想定しています。

with Run(
    experiment_name='clarify-experiment',
    run_name="joint-run",
    sagemaker_session=sagemaker_session,
) as run:
    xgb.fit({"train": train_input}, logs=False)
    clarify_processor.run_bias(
        data_config=bias_data_config,
        bias_config=bias_config,
        model_config=model_config,
        model_predicted_label_config=predictions_config,
        pre_training_methods="all",
        post_training_methods="all",
    )
    clarify_processor.run_explainability(
        data_config=explainability_data_config,
        model_config=model_config,
        explainability_config=shap_config,
    )

この設定により、モデルの指標、共同の入力と出力、およびモデルの統計的バイアスと説明可能性に関する Clarify レポートを含む複合ビューが得られます。

次世代の Amazon SageMaker Experiments – 大規模な PlatoBlockchain Data Intelligence の機械学習トレーニングを整理、追跡、比較します。垂直検索。あい。 次世代の Amazon SageMaker Experiments – 大規模な PlatoBlockchain Data Intelligence の機械学習トレーニングを整理、追跡、比較します。垂直検索。あい。 次世代の Amazon SageMaker Experiments – 大規模な PlatoBlockchain Data Intelligence の機械学習トレーニングを整理、追跡、比較します。垂直検索。あい。 次世代の Amazon SageMaker Experiments – 大規模な PlatoBlockchain Data Intelligence の機械学習トレーニングを整理、追跡、比較します。垂直検索。あい。

まとめ

この投稿では、SageMaker SDK の統合部分である新世代の SageMaker Experiments について調べました。 新しい Run クラスを使用して、どこからでも ML ワークフローをログに記録する方法を示しました。 実験を追跡し、単一の実行メトリクスのグラフをプロットしたり、新しい分析機能で複数の実行を比較したりできる新しい実験 UI を発表しました。 SageMaker Studio ノートブックと SageMaker Studio トレーニングジョブから実験を記録する例を提供しました。 最後に、モデルトレーニングと SageMaker Clarify レポートを統合ビューに統合して、モデルをさらに理解できるようにする方法を示しました。

新しいウェブテスト機能を試して、 機械学習と AI コミュニティ 質問やフィードバックがあれば!


著者について

次世代の Amazon SageMaker Experiments – 大規模な PlatoBlockchain Data Intelligence の機械学習トレーニングを整理、追跡、比較します。垂直検索。あい。マイラ・ラデイラ・タンケ AWS の機械学習スペシャリストです。 データ サイエンスのバックグラウンドを持つ彼女は、さまざまな業界の顧客と共に ML アプリケーションの設計と構築に 9 年間携わってきました。 彼女はテクニカル リーダーとして、新しいテクノロジと革新的なソリューションを通じて、顧客がビジネス価値の達成を加速するのを支援しています。 マイラは自由な時間に旅行を楽しんだり、暖かい場所で家族と過ごしたりしています。

次世代の Amazon SageMaker Experiments – 大規模な PlatoBlockchain Data Intelligence の機械学習トレーニングを整理、追跡、比較します。垂直検索。あい。マニカヌジャ は、アマゾン ウェブ サービス (AWS) の人工知能および機械学習スペシャリスト SA です。 彼女は、AWS を使用して機械学習を使用してビジネス上の課題を解決する顧客を支援しています。 彼女はほとんどの時間を深く掘り下げ、コンピューター ビジョン、自然言語処理、予測、エッジでの ML などに関連する AI/ML プロジェクトについて顧客に教えることに費やしています。 彼女はエッジでの ML に情熱を注いでいるため、自動運転キットとプロトタイプ製造生産ラインを備えた独自のラボを作成し、そこで多くの自由時間を過ごしています。

次世代の Amazon SageMaker Experiments – 大規模な PlatoBlockchain Data Intelligence の機械学習トレーニングを整理、追跡、比較します。垂直検索。あい。ディーウェン・チー AWS のソフトウェア開発エンジニアです。 彼女は現在、AWS SageMaker で一連のプラットフォーム サービスとツールの構築に参加して、顧客が ML プロジェクトを成功させるのを支援しています。 また、MLOps の概念をより多くの聴衆に広めることにも情熱を注いでいます。 仕事以外では、Dewen はチェロの練習を楽しんでいます。

次世代の Amazon SageMaker Experiments – 大規模な PlatoBlockchain Data Intelligence の機械学習トレーニングを整理、追跡、比較します。垂直検索。あい。アビシェーク・アガルワル Amazon SageMaker のシニアプロダクトマネージャーです。 彼は顧客と協力し、機械学習をより身近なものにすることに情熱を注いでいます。 余暇には、Abhishek は絵を描いたり、自転車に乗ったり、革新的な技術について学んだりしています。

次世代の Amazon SageMaker Experiments – 大規模な PlatoBlockchain Data Intelligence の機械学習トレーニングを整理、追跡、比較します。垂直検索。あい。ダナ・ベンソン Amazon SageMaker Experiments、Lineage、および Search チームで働くソフトウェアエンジニアです。 AWS に入社する前は、Alexa でスマートホーム機能を有効にしたり、スターバックスでモバイル注文を行ったりしていました。

タイムスタンプ:

より多くの AWS機械学習