View a markdown version of this page

SageMaker AI マネージドウォームプールの使用 - Amazon SageMaker AI

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

SageMaker AI マネージドウォームプールの使用

SageMaker AI マネージドウォームプールは、SageMaker Python SDK、Amazon SageMaker AI コンソール、または低レベル API を通じて使用できます。管理者はオプションで sagemaker:KeepAlivePeriod 条件キーを使用して、特定のユーザーまたはグループの KeepAlivePeriodInSeconds 制限をさらに制限できます。

SageMaker AI Python SDK を使用する

SageMaker Python SDK でウォームプールを作成、更新、または終了します。

注記

この機能は SageMaker AI Python SDK v2.110.0 以降で利用できます。

ウォームプールを作成する

ウォームプールを作成するには、SageMaker Python SDK を使用して 0 より大きいkeep_alive_period_in_seconds値でトレーニングジョブを作成し、トレーニングを開始します。トレーニングジョブが完了すると、ウォームプールは保持されます。スクリプトでウォームプールが作成されない場合は、「ウォームプールの作成」の考えられる説明を参照してください。

SageMaker Python SDK を使用して、Compute設定で 0 より大きいkeep_alive_period_in_secondsModelTrainerを持つ を作成し、 を呼び出しますtrain()。SageMaker Python SDK を使用したトレーニングの詳細については、SageMaker Python SDK を使用したモデルのトレーニング」を参照してください。

from sagemaker.train import ModelTrainer from sagemaker.train.configs import Compute, SourceCode from sagemaker.core.helper.session_helper import Session, get_execution_role from sagemaker.core import image_uris from sagemaker.train.configs import InputData # Creates a SageMaker AI session and gets execution role session = Session() role = get_execution_role() # Retrieve the TensorFlow training image training_image = image_uris.retrieve( framework="tensorflow", region=session.boto_region_name, version="2.2", py_version="py37", instance_type="ml.g4dn.xlarge", image_scope="training" ) # Creates an example ModelTrainer with warm pool enabled model_trainer = ModelTrainer( training_image=training_image, source_code=SourceCode(source_dir='code', entry_script='my-training-script.py'), role=role, compute=Compute( instance_type='ml.g4dn.xlarge', instance_count=1, volume_size_in_gb=250, keep_alive_period_in_seconds=1800, ), hyperparameters={ "batch-size": "512", "epochs": "1", "learning-rate": "1e-3", "beta_1": "0.9", "beta_2": "0.999", }, ) # Starts a SageMaker training job and waits until completion train_data = InputData(channel_name="training", data_source='s3://my_bucket/my_training_data/') model_trainer.train(input_data_config=[train_data])

次に、一致する 2 つ目のトレーニングジョブを作成します。この例では、my-training-job-1 と一致する必要な属性がすべて含まれ、実験用に別のハイパーパラメータを持つ my-training-job-2 を作成します。2 つ目のトレーニングジョブはウォームプールを再利用し、1 つ目のトレーニングジョブよりも早く起動します。次のコード例では Tensorflow 推定器を使用しています。ウォームプール機能は、Amazon SageMaker AI で実行されるどのトレーニングアルゴリズムでも使用できます。どの属性が一致する必要があるかについての詳細は、「トレーニングジョブのマッチング」を参照してください。

# Creates a second ModelTrainer that reuses the warm pool model_trainer_2 = ModelTrainer( training_image=training_image, source_code=SourceCode(source_dir='code', entry_script='my-training-script.py'), role=role, compute=Compute( instance_type='ml.g4dn.xlarge', instance_count=1, volume_size_in_gb=250, keep_alive_period_in_seconds=1800, ), hyperparameters={ "batch-size": "512", "epochs": "2", "learning-rate": "1e-3", "beta_1": "0.9", "beta_2": "0.999", }, ) # Starts a SageMaker training job and waits until completion train_data = InputData(channel_name="training", data_source='s3://my_bucket/my_training_data/') model_trainer_2.train(input_data_config=[train_data])

両方のトレーニングジョブのウォームプールのステータスをチェックして、my-training-job-1 のウォームプールが Reusedmy-training-job-2 のウォームプールが InUse になっていることを確認します。

注記

トレーニングジョブ名には日付/時刻のサフィックスが付いています。この例のトレーニングジョブ名 my-training-job-1 および my-training-job-2 を実際のトレーニングジョブ名に置き換えてください。estimator.latest_training_job.job_name コマンドを使用して、実際のトレーニングジョブ名を取得できます。

session.describe_training_job('my-training-job-1') session.describe_training_job('my-training-job-2')

describe_training_job の結果には、特定のトレーニングジョブに関するすべての詳細が表示されます。WarmPoolStatus 属性を検索して、トレーニングジョブのウォームプールに関する情報を確認します。出力は以下の例のようになります。

# Warm pool status for training-job-1 ... 'WarmPoolStatus': {'Status': 'Reused', 'ResourceRetainedBillableTimeInSeconds': 1000, 'ReusedByName': my-training-job-2} ... # Warm pool status for training-job-2 ... 'WarmPoolStatus': {'Status': 'InUse'} ...

ウォームプールを更新する

トレーニングジョブが完了し、ウォームプールのステータスが Available になったら、KeepAlivePeriodInSeconds 値を更新できます。

session.update_training_job(job_name, resource_config={"KeepAlivePeriodInSeconds":3600})

ウォームプールを終了する

ウォームプールを手動で終了するには、KeepAlivePeriodInSeconds 値を 0 に設定します。

session.update_training_job(job_name, resource_config={"KeepAlivePeriodInSeconds":0})

ウォームプールは、指定された KeepAlivePeriodInSeconds 値を超えたり、クラスターにパッチアップデートが行われたりすると自動的に終了します。

Amazon SageMaker AI コンソールを使用する

コンソールから、ウォームプールを作成したり、ウォームプールをリリースしたり、特定のトレーニングジョブのウォームプールのステータスや課金対象時間を確認したりできます。また、一致するどのトレーニングジョブがウォームプールを再利用したかを確認することもできます。

  1. Amazon SageMaker AI コンソールを開き、ナビゲーションペインから [トレーニングジョブ] を選択します。該当する場合、各トレーニングジョブのウォームプールのステータスは [ウォームプールのステータス] 列に表示され、アクティブなウォームプールの残り時間は [残り時間] 列に表示されます。

  2. ウォームプールを使用するトレーニングジョブをコンソールから作成するには、[トレーニングジョブの作成] を選択します。次に、トレーニングジョブリソースを設定するときに、必ず [キープアライブ期間] フィールドに値を指定してください。この値は、時間を秒単位で表す 1 から 3600 までの整数でなければなりません。

  3. ウォームプールをコンソールから解放するには、特定のトレーニングジョブを選択し、[アクション] ドロップダウンメニューから [クラスターをリリースする] を選択します。

  4. ウォームプールの詳細を確認するには、トレーニングジョブ名を選択します。ジョブの詳細ページで、[ウォームプールのステータス] セクションまでスクロールして、ウォームプールのステータス、ウォームプールのステータスが Available である場合は残り時間、ウォームプールの請求可能な秒数、ウォームプールのステータスが Reused である場合はウォームプールを再利用したトレーニングジョブの名前を確認します。

低レベルの SageMaker API を使用する

SageMaker API または CLI で SageMaker AI AWS マネージドウォームプールを使用します。

SageMaker AI API

以下のコマンドで SageMaker API を使用して SageMaker AI マネージドウォームプールをセットアップします。

AWS CLI

次のコマンドで CLI を使用して SageMaker AI AWS マネージドウォームプールを設定します。

IAM 条件キー

管理者はオプションで sagemaker:KeepAlivePeriod 条件キーを使用して、特定のユーザーまたはグループの KeepAlivePeriodInSeconds 制限をさらに制限できます。SageMaker AI マネージドウォームプールでは、KeepAlivePeriodInSeconds 値は 3600 秒 (60 分) に制限されていますが、管理者は必要に応じてこの制限を下げることができます。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "EnforceKeepAlivePeriodLimit", "Effect": "Allow", "Action": [ "sagemaker:CreateTrainingJob" ], "Resource": "*", "Condition": { "NumericLessThanIfExists": { "sagemaker:KeepAlivePeriod": "1800" } } } ] }

詳細については、サービス認可リファレンスの「Condition keys for Amazon SageMaker AI」を参照してください。