Data Version Control と Amazon SageMaker Experiments PlatoBlockchain Data Intelligence を使用して、ML 実験をエンドツーエンドで追跡します。 垂直検索。 あい。

ML実験をデータバージョン管理とAmazonSageMaker実験でエンドツーエンドで追跡します

データサイエンティストは、さまざまなモデルアーキテクチャやハイパーパラメータと組み合わせて、さまざまなデータ前処理や特徴工学戦略の効果を理解するために取り組むことがよくあります。 そのためには、大きなパラメータースペースを繰り返しカバーする必要があり、実験の再現性を維持しながら、以前に実行した構成と結果を追跡するのは大変な作業になる可能性があります。

この投稿では、を使用してコード、データ、アーティファクト、および指標全体で実験を追跡する方法の例を紹介します。 AmazonSageMakerの実験 と一緒に データバージョン管理(DVC)。 DVCをと並べて使用する方法を示します アマゾンセージメーカー 処理およびトレーニングジョブ。 カリフォルニアの住宅データセットでさまざまなCatBoostモデルをトレーニングします。 StatLibリポジトリ、およびDVCでデータバージョンを追跡しながらホールドアウト戦略を変更します。 個々の実験では、SageMaker実験を使用して、入力と出力のアーティファクト、コード、およびメトリックを追跡します。

SageMakerの実験

SageMaker Experimentsは、機械学習(ML)実験を追跡するためのAWSサービスです。 The SageMaker実験PythonSDK は、Pythonを使用して実験情報を追跡するのに役立つ、このサービスへの高レベルのインターフェースです。

SageMaker Experimentsの目標は、実験の作成、試行の入力、追跡および系統情報の追加、試行と実験全体での分析の実行を可能な限り簡単にすることです。

SageMaker実験について説明するときは、次の概念を参照します。

  • 実験 –関連する試験のコレクション。 一緒に比較したい実験に試行を追加します。
  • トライアル –マルチステップMLワークフローの説明。 ワークフローの各ステップは、トライアルコンポーネントによって記述されます。
  • トライアルコンポーネント –データクリーニング、特徴抽出、モデルトレーニング、モデル評価など、MLワークフローの単一ステップの説明。
  • 追跡者 –単一のトライアルコンポーネントに関する情報(パラメーター、メトリック、アーティファクトなど)をログに記録するためのPythonコンテキストマネージャー。

データバージョン管理

データバージョン管理(DVC)は、新しいタイプのデータバージョン管理、ワークフロー、および実験管理ソフトウェアであり、その上に構築されています。 Gitの (スタンドアロンでも動作しますが)。 DVCは、確立されたエンジニアリングツールセットとデータサイエンスのニーズの間のギャップを減らし、新しいものを活用できるようにします 機能を使用 既存のスキルと直感を再利用しながら。

データサイエンス実験の共有とコラボレーションは、ソフトウェアエンジニアの場合と同じように、通常のGitフロー(コミット、ブランチ、タグ付け、プルリクエスト)を介して実行できます。 GitとDVCを使用すると、データサイエンスチームとMLチームは、実験のバージョン管理、大規模なデータセットの管理、プロジェクトの再現性を高めることができます。

DVCには次の機能があります。

  • DVCは 無料です。、 オープンソース コマンドライン ツール。
  • DVCはGitリポジトリ上で動作し、Gitと同様のコマンドラインインターフェイスとフローを備えています。 DVCはスタンドアロンでも動作しますが、 バージョニング 機能を提供します。
  • データのバージョン管理は、大きなファイル、データセットディレクトリ、MLモデルなどを小さなファイルに置き換えることで可能になります メタファイル (Gitで扱いやすい)。 これらのプレースホルダーは、ソースコード管理から切り離された元のデータを指します。
  • オンプレミスまたはクラウドストレージを使用して、プロジェクトのデータをコードベースとは別に保存できます。 これは、データサイエンティストが大規模なデータセットを転送したり、GPUでトレーニングされたモデルを他の人と共有したりする方法です。
  • DVCは、軽量を作成することにより、データサイエンスプロジェクトを再現可能にします パイプライン 暗黙の依存関係グラフを使用し、関連するデータとアーティファクトを体系化する。
  • DVCはプラットフォームに依存しません。 すべての主要なオペレーティングシステム(Linux、macOS、およびWindows)で実行され、プログラミング言語(Python、R、Julia、シェルスクリプトなど)またはMLライブラリ(Keras、TensorFlow、PyTorch、Scipy、およびmore)プロジェクトで使用されます。
  • DVCはすぐに install 特別なインフラストラクチャを必要とせず、APIや外部サービスに依存しません。 これはスタンドアロンのCLIツールです。

SageMakerの実験とDVCサンプル

以下 GitHubサンプル は、SageMaker環境内でDVCを使用する方法を示しています。 特に、デフォルトでインストールされたDVCライブラリを使用してカスタムイメージを構築し、データサイエンティストに一貫した開発環境を提供する方法について説明します。 Amazon SageMakerスタジオ、および処理とトレーニングのためにSageMakerマネージドインフラストラクチャと一緒にDVCを実行する方法。 さらに、SageMakerのトラッキング情報をDVCからのデータバージョン管理情報で強化し、Studioコンソール内で視覚化する方法を示します。

次の図は、ソリューションのアーキテクチャとワークフローを示しています。

DVCがすでにインストールされているカスタムStudioイメージを構築する

この中の GitHubリポジトリ、DVCがすでにインストールされているStudioのカスタムイメージを作成する方法について説明します。 イメージを作成してすべてのStudioユーザーが利用できるようにすることの利点は、Studioユーザーに一貫した環境を作成し、ローカルで実行できることです。 サンプルはに基づいていますが AWS クラウド9、Dockerがインストールされて実行されている限り、ローカルマシンでコンテナをビルドすることもできます。 このサンプルは、以下に基づいています ドッカーファイル & 環境.yml。 結果のDockerイメージはに保存されます Amazon エラスティック コンテナ レジストリ (Amazon EMR)AWSアカウントで。 次のコードを参照してください。

# Login to ECR
aws --region ${REGION} ecr get-login-password | docker login --username AWS --password-stdin ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/smstudio-custom

# Create the ECR repository
aws --region ${REGION} ecr create-repository --repository-name smstudio-custom

# Build the image - it might take a few minutes to complete this step
docker build . -t ${IMAGE_NAME} -t ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/smstudio-custom:${IMAGE_NAME}

# Push the image to ECR
docker push ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/smstudio-custom:${IMAGE_NAME}

これでできます 新しいStudioドメインを作成する or 既存のStudioドメインを更新する 新しく作成されたDockerイメージにアクセスできます。

を使用しております AWSクラウド開発キット (AWS CDK)を介して次のリソースを作成します AWS CloudFormation:

  • 新規または既存のStudioドメインへの適切な権限を持つSageMaker実行ロール
  • DockerイメージからのSageMakerイメージとSageMakerイメージのバージョン conda-env-dvc-kernel 以前に作成したもの
  • An AppImageConfig カーネルゲートウェイの構成方法を指定します
  • スタジオユーザー(data-scientist-dvc)正しいSageMaker実行ロールとそれに利用可能なカスタムStudioイメージを使用

詳細な手順については、を参照してください。 カスタムイメージをSageMakerStudioに関連付けます.

ラボを実行する

ラボを実行するには、次の手順を実行します。

  1. Studioドメインで、Studioを起動します。 data-scientist-dvc ユーザー。
  2. Gitアイコンを選択してから、 リポジトリのクローンを作成する.
    リポジトリのクローンを作成する
  3. リポジトリのURLを入力します(https://github.com/aws-samples/amazon-sagemaker-experiments-dvc-demo)と選択 クローン.リポジトリボタンのクローンを作成する
  4. ファイルブラウザで、 amazon-sagemaker-experiments-dvc-demo リポジトリ。
  5. Video Cloud Studioで dvc_sagemaker_script_mode.ipynb ノート。
  6. カスタムイメージ、イメージconda-env-dvc-kernelを選択します。
  7. 選択する 選択.
    conda-env-dvc-カーネル

データバージョン管理用にDVCを構成する

データを準備するサブディレクトリsagemaker-dvc-sampleを作成します。 このサブディレクトリ内で、新しいGitリポジトリを初期化し、リモートを作成したリポジトリに設定します AWS コードコミット。 目標は、データ追跡用のDVC構成とファイルをこのリポジトリでバージョン管理することです。 ただし、Gitは、たとえばgitサブモジュールやgitサブツリーを介してサブプロジェクトを管理するネイティブ機能を提供します。このサンプルを拡張して、ワークフローに最適な前述のツールを使用できます。

この場合、SageMakerでCodeCommitを使用する主な利点は、 AWS IDおよびアクセス管理 (IAM)認証と承認用。つまり、IAMロールを使用して、クレデンシャル(またはSSHキー)をフェッチすることなくデータをプッシュおよびプルできます。 SageMaker実行ロールに適切な権限を設定すると、StudioノートブックとSageMakerトレーニングおよび処理ジョブがCodeCommitと安全に対話できるようになります。

CodeCommitをGitHub、Gitlab、Bitbucketなどの他のソース管理サービスに置き換えることはできますが、システムのクレデンシャルを処理する方法を検討する必要があります。 XNUMXつの可能性は、これらの資格情報をに保存することです AWSシークレットマネージャー 実行時にStudioノートブックおよびSageMakerの処理およびトレーニングジョブからそれらをフェッチします。

DVCの初期化

DVCとSageMakerを使用した処理とトレーニング

このセクションでは、問題に取り組むためのXNUMXつの異なるアプローチと、前に示した高レベルの概念アーキテクチャに従ってSageMakerExperimentsを使用してXNUMXつのテストを追跡する方法について説明します。

SageMaker実験をセットアップする

SageMakerでこのテストを追跡するには、実験を作成する必要があります。 また、実験内で試行を定義する必要があります。 簡単にするために、実験ではXNUMXつの試行のみを検討しますが、たとえば、さまざまなアルゴリズムをテストする場合は、実験内で任意の数の試行を行うことができます。

名前の付いた実験を作成します DEMO-sagemaker-experiments-dvc XNUMX回の試行で、 dvc-trial-single-file & dvc-trial-multi-files、それぞれがデータセットの異なるバージョンを表します。

を作成しましょう DEMO-sagemaker-experiments-dvc 実験:

from smexperiments.experiment import Experiment
from smexperiments.trial import Trial
from smexperiments.trial_component import TrialComponent
from smexperiments.tracker import Tracker

experiment_name = 'DEMO-sagemaker-experiments-dvc'

# create the experiment if it doesn't exist
try:
    my_experiment = Experiment.load(experiment_name=experiment_name)
    print("existing experiment loaded")
except Exception as ex:
    if "ResourceNotFound" in str(ex):
        my_experiment = Experiment.create(
            experiment_name = experiment_name,
            description = "How to integrate DVC"
        )
        print("new experiment created")
    else:
        print(f"Unexpected {ex}=, {type(ex)}")
        print("Dont go forward!")
        raise

テスト1:トレーニングと検証のために単一のファイルを生成する

このセクションでは、生データをから直接フェッチする処理スクリプトを作成します Amazon シンプル ストレージ サービス (Amazon S3)入力として; それを処理して、トレイン、検証、およびテストのデータセットを作成します。 DVCを使用して結果をAmazonS3に保存します。 さらに、処理ジョブとトレーニングジョブを実行するとき、およびSageMaker実験を介して、SageMakerを使用してDVCによって生成された出力アーティファクトを追跡する方法を示します。

まず、作成します dvc-trial-single-file 試用して、に追加します DEMO-sagemaker-experiments-dvc 実験。 そうすることで、このテストに関連するすべてのトライアルコンポーネントを意味のある方法で整理します。

first_trial_name = "dvc-trial-single-file"

try:
    my_first_trial = Trial.load(trial_name=first_trial_name)
    print("existing trial loaded")
except Exception as ex:
    if "ResourceNotFound" in str(ex):
        my_first_trial = Trial.create(
            experiment_name=experiment_name,
            trial_name=first_trial_name,
        )
        print("new trial created")
    else:
        print(f"Unexpected {ex}=, {type(ex)}")
        print("Dont go forward!")
        raise

SageMaker処理ジョブでDVCを使用して、単一ファイルバージョンを作成します

このセクションでは、SageMakerのマネージドデータロード機能を使用して、AmazonS3から直接生データを入力として取得する処理スクリプトを作成します。 それを処理して、トレイン、検証、およびテストのデータセットを作成します。 DVCを使用して結果をAmazonS3に保存します。 DVCを使用してAmazonS3にデータを保存する(またはAmazon S3からデータをプルする)と、SageMakerが管理するデータ読み込み機能が失われ、処理およびトレーニングジョブのパフォーマンスとコストに影響を与える可能性があることを理解することが非常に重要です。 、特に非常に大きなデータセットを操作する場合。 さまざまなSageMakerネイティブ入力モード機能の詳細については、を参照してください。 トレーニングデータへのアクセス.

最後に、SageMaker Experimentsを介して処理ジョブを実行するときに、DVC追跡機能をSageMaker追跡機能と統合します。

処理スクリプトは、環境変数を介して渡されたDVCメタデータを格納するために作成するGitリポジトリとブランチのアドレスを想定しています。 データセット自体は、DVCによってAmazonS3に保存されます。 環境変数はSageMakerExperimentsで自動的に追跡され、トライアルコンポーネントのパラメーターに表示されますが、トライアルコンポーネントをさらに情報で強化し、トラッカーオブジェクトを使用してStudioUIで視覚化できるようにすることもできます。 この場合、トライアルコンポーネントのパラメータには次のものが含まれます。

  • DVC_REPO_URL
  • DVC_BRANCH
  • USER
  • data_commit_hash
  • train_test_split_ratio

前処理スクリプトはGitリポジトリのクローンを作成します。 トレイン、検証、およびテストのデータセットを生成します。 DVCを使用して同期します。 前述のように、DVCを使用する場合、ネイティブのSageMakerデータ読み込み機能を利用することはできません。 大規模なデータセットで発生する可能性のあるパフォーマンスの低下は別として、出力アーティファクトの自動追跡機能も失われます。 ただし、トラッカーとDVC Python APIのおかげで、これらの欠点を補い、実行時にそのような情報を取得して、わずかな労力でトライアルコンポーネントに保存できます。 そうすることによる付加価値は、この特定の処理ジョブに属する入力および出力アーティファクトの単一のビューを持つことです。

完全な前処理Pythonスクリプトは、 GitHubレポ.

with Tracker.load() as tracker:
    tracker.log_parameters({"data_commit_hash": commit_hash})
    for file_type in file_types:
        path = dvc.api.get_url(
            f"{data_path}/{file_type}/california_{file_type}.csv",
            repo=dvc_repo_url,
            rev=dvc_branch
        )
        tracker.log_output(name=f"california_{file_type}",value=path)

SageMakerを使用すると、AWSインフラストラクチャで実行するように最適化されたAWSが管理するコンテナイメージで処理スクリプトを実行できます。 スクリプトに追加の依存関係が必要な場合は、 requirements.txt ファイル。 処理ジョブを開始すると、SageMakerは pip-install 必要なすべてのライブラリ(たとえば、DVC関連のライブラリ)をインストールします。 コンテナにインストールされているすべてのライブラリをより厳密に制御する必要がある場合は、SageMakerに独自のコンテナを持ち込むことができます。 処理 とトレーニング。

これで、SageMaker処理ジョブを実行するためのすべての要素が揃いました。

  • 複数の引数を処理できる処理スクリプト(--train-test-split-ratio)とXNUMXつの環境変数(DVC_REPO_URL & DVC_BRANCH)
  • A requiremets.txt file
  • Gitリポジトリ(CodeCommit内)
  • SageMakerの実験と試行
from sagemaker.processing import FrameworkProcessor, ProcessingInput
from sagemaker.sklearn.estimator import SKLearn

dvc_repo_url = "codecommit::{}://sagemaker-dvc-sample".format(region)
dvc_branch = my_first_trial.trial_name

script_processor = FrameworkProcessor(
    estimator_cls=SKLearn,
    framework_version='0.23-1',
    instance_count=1,
    instance_type='ml.m5.xlarge',
    env={
        "DVC_REPO_URL": dvc_repo_url,
        "DVC_BRANCH": dvc_branch,
        "USER": "sagemaker"
    },
    role=role
)

experiment_config={
    "ExperimentName": my_experiment.experiment_name,
    "TrialName": my_first_trial.trial_name
}

次に、次のコマンドで処理ジョブを実行します。 preprocessing-experiment.py スクリプト、 experiment_config, dvc_repo_url, dvc_branch 前に定義しました。

%%time

script_processor.run(
    code='./source_dir/preprocessing-experiment.py',
    dependencies=['./source_dir/requirements.txt'],
    inputs=[ProcessingInput(source=s3_data_path, destination="/opt/ml/processing/input")],
    experiment_config=experiment_config,
    arguments=["--train-test-split-ratio", "0.2"]
)

処理ジョブは、完了するまでに約5分かかります。 これで、単一ファイルデータセットのトライアルの詳細を表示できます。

次のスクリーンショットは、Studio内に保存されている情報を見つけることができる場所を示しています。 の値に注意してください dvc-trial-single-file in DVC_BRANCH, DVC_REPO_URL, data_commit_hash 計測パラメータ タブには何も表示されないことに注意してください。

SageMaker実験のパラメータータブ

また、入力と出力の詳細にも注意してください。 アーティファクト タブには何も表示されないことに注意してください。

SageMaker実験アーティファクトタブ

推定量を作成し、モデルを単一ファイルのデータバージョンに適合させます

SageMakerトレーニングジョブ内でDVC統合を使用するには、 dvc_repo_url & dvc_branch Estimatorオブジェクトを作成するときの環境変数として。

私たちはで訓練します dvc-trial-single-file 最初に分岐します。

DVCでデータをプルする場合、次のデータセット構造を使用します。

dataset
    |-- train
    |   |-- california_train.csv
    |-- test
    |   |-- california_test.csv
    |-- validation
    |   |-- california_validation.csv

次に、を使用してScikit-learnEstimatorを作成します。 SageMaker Python SDK。 これにより、以下を指定できます。

  • トレーニングへのエントリポイントとして実行する必要があるPythonソースファイルへのパス。
  • Amazon S3およびCodeCommitデータにアクセスし、SageMaker関数を実行するためのアクセス許可を制御するIAMロール。
  • トレーニングジョブの評価に使用されるメトリックを定義する辞書のリスト。
  • トレーニングインスタンスの数とタイプ。 5つのml.mXNUMX.largeインスタンスを使用します。
  • トレーニングに使用されるハイパーパラメータ。
  • トレーニングジョブ中に使用する環境変数。 を使用しております DVC_REPO_URL, DVC_BRANCH, USER.
metric_definitions = [{'Name': 'median-AE', 'Regex': "AE-at-50th-percentile: ([0-9.]+).*$"}]

hyperparameters={ 
        "learning_rate" : 1,
        "depth": 6
    }
estimator = SKLearn(
    entry_point='train.py',
    source_dir='source_dir',
    role=role,
    metric_definitions=metric_definitions,
    hyperparameters=hyperparameters,
    instance_count=1,
    instance_type='ml.m5.large',
    framework_version='0.23-1',
    base_job_name='training-with-dvc-data',
    environment={
        "DVC_REPO_URL": dvc_repo_url,
        "DVC_BRANCH": dvc_branch,
        "USER": "sagemaker"
    }
)

experiment_config={
    "ExperimentName": my_experiment.experiment_name,
    "TrialName": my_first_trial.trial_name
}

トレーニングを開始するために、前に定義したexperiment_configを使用してEstimatorのfitメソッドを呼び出します。

%%time
estimator.fit(experiment_config=experiment_config)

トレーニングジョブは、完了するまでに約5分かかります。 ログにはこれらの行が表示され、DVCによってプルされたファイルが示されます。

Running dvc pull command
A       train/california_train.csv
A       test/california_test.csv
A       validation/california_validation.csv
3 files added and 3 files fetched
Starting the training.
Found train files: ['/opt/ml/input/data/dataset/train/california_train.csv']
Found validation files: ['/opt/ml/input/data/dataset/train/california_train.csv']

テスト2:トレーニングと検証のために複数のファイルを生成する

私たちは新しいを作成します dvc-trial-multi-files 試用して現在に追加する DEMO-sagemaker-experiments-dvc 実験。

second_trial_name = "dvc-trial-multi-files"
try:
    my_second_trial = Trial.load(trial_name=second_trial_name)
    print("existing trial loaded")
except Exception as ex:
    if "ResourceNotFound" in str(ex):
        my_second_trial = Trial.create(
            experiment_name=experiment_name,
            trial_name=second_trial_name,
        )
        print("new trial created")
    else:
        print(f"Unexpected {ex}=, {type(ex)}")
        print("Dont go forward!")
        raise

最初の処理スクリプトとは異なり、トレーニングと検証のために元のデータセットから複数のファイルを作成し、DVCメタデータを別のブランチに保存します。

XNUMX番目の前処理Pythonスクリプトをで調べることができます GitHubの.

%%time

script_processor.run(
    code='./source_dir/preprocessing-experiment-multifiles.py',
    dependencies=['./source_dir/requirements.txt'],
    inputs=[ProcessingInput(source=s3_data_path, destination="/opt/ml/processing/input")],
    experiment_config=experiment_config,
    arguments=["--train-test-split-ratio", "0.1"]
)

処理ジョブは、完了するまでに約5分かかります。 これで、マルチファイルデータセットのトライアルの詳細を表示できます。

次のスクリーンショットは、SageMakerExperiments内の保存された情報を見つけることができる場所を示しています。 トライアルコンポーネント StudioUI内のセクション。 の値に注意してください dvc-trial-multi-files in DVC_BRANCH, DVC_REPO_URL, data_commit_hash 計測パラメータ タブには何も表示されないことに注意してください。

SageMakerマルチファイル実験パラメータタブ

で入力と出力の詳細を確認することもできます アーティファクト タブには何も表示されないことに注意してください。

SageMakerマルチファイル実験アーティファクトタブ

私たちは今、 dvc-trial-multi-files ブランチ。 DVCでデータをプルする場合、次のデータセット構造を使用します。

dataset
    |-- train
    |   |-- california_train_1.csv
    |   |-- california_train_2.csv
    |   |-- california_train_3.csv
    |   |-- california_train_4.csv
    |   |-- california_train_5.csv
    |-- test
    |   |-- california_test.csv
    |-- validation
    |   |-- california_validation_1.csv
    |   |-- california_validation_2.csv
    |   |-- california_validation_3.csv

以前と同様に、トライアル名で新しいScikit-learnEstimatorを作成します dvc-trial-multi-files トレーニングジョブを開始します。

%%time

estimator.fit(experiment_config=experiment_config)

トレーニングジョブは、完了するまでに約5分かかります。 ノートブックに出力されるトレーニングジョブログには、DVCによってプルされたファイルを示すこれらの行が表示されます。

Running dvc pull command
A       validation/california_validation_2.csv
A       validation/california_validation_1.csv
A       validation/california_validation_3.csv
A       train/california_train_4.csv
A       train/california_train_5.csv
A       train/california_train_2.csv
A       train/california_train_3.csv
A       train/california_train_1.csv
A       test/california_test.csv
9 files added and 9 files fetched
Starting the training.
Found train files: ['/opt/ml/input/data/dataset/train/california_train_2.csv', '/opt/ml/input/data/dataset/train/california_train_5.csv', '/opt/ml/input/data/dataset/train/california_train_4.csv', '/opt/ml/input/data/dataset/train/california_train_1.csv', '/opt/ml/input/data/dataset/train/california_train_3.csv']
Found validation files: ['/opt/ml/input/data/dataset/validation/california_validation_2.csv', '/opt/ml/input/data/dataset/validation/california_validation_1.csv', '/opt/ml/input/data/dataset/validation/california_validation_3.csv']

SageMakerでモデルをホストする

MLモデルをトレーニングした後、SageMakerを使用してデプロイできます。 一度にXNUMXつの予測を行う永続的なリアルタイムのエンドポイントをデプロイするために、 SageMakerリアルタイムホスティングサービス.

from sagemaker.serializers import CSVSerializer

predictor = estimator.deploy(1, "ml.t2.medium", serializer=CSVSerializer())

まず、Studioの開発ノートブックでローカルに最新のテストデータセットを取得します。 この目的のために、私たちは使用することができます dvc.api.read() SageMaker処理ジョブによってAmazonS3に保存された生データをロードします。

import io
import dvc.api

raw = dvc.api.read(
    "dataset/test/california_test.csv",
    repo=dvc_repo_url,
    rev=dvc_branch
)

次に、Pandasを使用してデータを準備し、テストCSVファイルを読み込んで、 predictor.predict 以前に作成したSageMakerエンドポイントをデータを使用して呼び出し、予測を取得します。

test = pd.read_csv(io.StringIO(raw), sep=",", header=None)
X_test = test.iloc[:, 1:].values
y_test = test.iloc[:, 0:1].values

predicted = predictor.predict(X_test)
for i in range(len(predicted)-1):
    print(f"predicted: {predicted[i]}, actual: {y_test[i][0]}")

エンドポイントを削除します

エンドポイントはデプロイされた時間ごとに請求されるため、使用されなくなったら削除する必要があります(詳細については、を参照してください)。 Amazon SageMakerの価格)。 予期しないコストを回避するために、必ずエンドポイントを削除してください。

predictor.delete_endpoint()

クリーンアップ

作成したすべてのリソースを削除する前に、すべてのアプリがから削除されていることを確認してください data-scientist-dvc すべてのKernelGatewayアプリ、およびデフォルトのJupiterServerアプリを含むユーザー。

次に、次のコマンドを実行してAWSCDKスタックを破棄できます。

cdk destroy

既存のドメインを使用した場合は、次のコマンドも実行します。

# inject your DOMAIN_ID into the configuration file
sed -i 's/<your-sagemaker-studio-domain-id>/'"$DOMAIN_ID"'/' ../update-domain-no-custom-images.json
# update the sagemaker studio domain
aws --region ${REGION} sagemaker update-domain --cli-input-json file://../update-domain-no-custom-images.json

まとめ

この投稿では、SageMakerExperimentsとSageMakerの処理およびトレーニングジョブをDVCと組み合わせて使用​​することにより、コード、データ、アーティファクト、およびメトリック全体で実験を追跡する方法の例を説明しました。 開発ノートブックとしてStudioに必要なDVCを含むDockerイメージを作成し、DVCで処理およびトレーニングジョブを使用する方法を示しました。 XNUMXつのバージョンのデータを準備し、DVCを使用してGitでデータを管理しました。 次に、SageMaker Experimentsを使用して、XNUMXつのバージョンのデータで処理とトレーニングを追跡し、パラメーター、アーティファクト、およびメトリックの統一されたビューをXNUMX枚のガラス板に表示しました。 最後に、モデルをSageMakerエンドポイントにデプロイし、XNUMX番目のデータセットバージョンのテストデータセットを使用してSageMakerエンドポイントを呼び出し、予測を取得しました。

次のステップとして、既存のノートブックを拡張し、独自の特徴エンジニアリング戦略を導入し、DVCとSageMakerを使用して実験を実行できます。 ビルドに行きましょう!

詳細については、次のリソースを参照してください。


著者について

パオロディフランチェスコパオロディフランチェスコ AWSのソリューションアーキテクトです。 彼は電気通信とソフトウェアエンジニアリングの経験があります。 彼は機械学習に情熱を注いでおり、現在、特にMLOpsに関する議論において、顧客がAWSで目標を達成できるように彼の経験を活用することに注力しています。 仕事以外では、彼はサッカーをしたり読書を楽しんだりしています。

エイタンセラエイタンセラ アマゾンウェブサービスの機械学習スペシャリストソリューションアーキテクトです。 彼はAWSのお客様と協力してガイダンスと技術支援を提供し、AWSでの機械学習ソリューションの構築と運用を支援しています。 余暇には、ジョギングや最新の機械学習記事を読むことを楽しんでいます。

タイムスタンプ:

より多くの AWS機械学習