使用 SageMaker 受管暖集區 - Amazon SageMaker

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 SageMaker 受管暖集區

您可以透過 SageMaker Python SDK、Amazon SageMaker 主控台或透過低階 使用 SageMaker 受管暖集區APIs。管理員可以選擇性地使用 sagemaker:KeepAlivePeriod 條件索引鍵,進一步限制特定使用者或群組的 KeepAlivePeriodInSeconds 範圍。

使用 SageMaker Python SDK

使用 SageMaker Python 建立、更新或終止暖集區SDK。

注意

此功能可在 SageMaker Python v2SDK.110.0 及更新版本中使用。

建立暖集區

若要建立暖集區,請使用 SageMaker Python SDK 建立keep_alive_period_in_seconds值大於 0 的估算器,並呼叫 fit()。訓練工作完成時,會保留一個暖集區。如需訓練指令碼和估算器的詳細資訊,請參閱使用 SageMaker Python 訓練模型SDK。如果您的指令碼尚未建立暖集區,請參閱暖集區建立取得可能的問題說明。

import sagemaker from sagemaker import get_execution_role from sagemaker.tensorflow import TensorFlow # Creates a SageMaker session and gets execution role session = sagemaker.Session() role = get_execution_role() # Creates an example estimator estimator = TensorFlow( ... entry_point='my-training-script.py', source_dir='code', role=role, model_dir='model_dir', framework_version='2.2', py_version='py37', job_name='my-training-job-1', instance_type='ml.g4dn.xlarge', instance_count=1, volume_size=250, hyperparameters={ "batch-size": 512, "epochs": 1, "learning-rate": 1e-3, "beta_1": 0.9, "beta_2": 0.999, }, keep_alive_period_in_seconds=1800, ) # Starts a SageMaker training job and waits until completion estimator.fit('s3://my_bucket/my_training_data/')

接下來,建立第二個相符的訓練工作。在這個範例中,我們建立 my-training-job-2 以進行實驗,它具有與 my-training-job-1 符合的所有必要的屬性,但有一個不同的超參數。第二個訓練工作重複使用暖集區,並且比第一個訓練工作更快啟動。下列程式碼範例使用 Tensorflow 估算器。暖集區功能可與在 Amazon 上執行的任何訓練演算法搭配使用 SageMaker。如需哪些屬性必須符合的更多資訊,請參閱符合的訓練任務

# Creates an example estimator estimator = TensorFlow( ... entry_point='my-training-script.py', source_dir='code', role=role, model_dir='model_dir', framework_version='py37', py_version='pyxy', job_name='my-training-job-2', instance_type='ml.g4dn.xlarge', instance_count=1, volume_size=250, hyperparameters={ "batch-size": 512, "epochs": 2, "learning-rate": 1e-3, "beta_1": 0.9, "beta_2": 0.999, }, keep_alive_period_in_seconds=1800, ) # Starts a SageMaker training job and waits until completion estimator.fit('s3://my_bucket/my_training_data/')

檢查兩個訓練工作的暖集區狀態,以確認 my-training-job-1 的暖集區為 Reused,而 my-training-job-2 的為InUse

注意

訓練任務名稱有日期/時間尾碼。範例訓練任務名稱 my-training-job-1my-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 主控台

透過主控台,您可以建立暖集區、釋放暖集區,或檢查特定訓練工作的暖集區狀態和應計費時間。您還可以查看哪些相符的訓練任務重複使用了暖集區。

  1. 開啟 Amazon SageMaker 主控台,然後從導覽窗格中選擇訓練任務。如果適用,每個訓練工作的暖集區狀態會顯示在 暖集區狀態 欄內,而使用中暖集區的剩餘時間則會顯示在 剩餘時間 欄內。

  2. 若要從主控台建立使用暖集區的訓練工作,請選擇 建立訓練任務。接著,在設定訓練工作資源時,請務必指定 保持作用期間 欄位的值。此值必須是介於 1 到 3600 之間的整數,表示持續時間,以秒為單位。

  3. 若要從主控台釋放暖集區,請選取特定的訓練工作,然後從 動作 下拉式功能表選擇 發佈叢集

  4. 若要查看暖集區的更多資訊,請選擇一個訓練任務名稱。在工作詳細資料頁面中,向下捲動至 暖集區狀態 區段,尋找暖集區狀態、剩餘時間 (若暖集區狀態為 Available)、暖集區計費秒數,以及重複使用暖集區的訓練工作名稱 (若暖集區狀態為 Reused)。

使用低階 SageMaker APIs

將 SageMaker 受管暖集區與 SageMaker API或 搭配使用 AWS CLI。

SageMaker API

使用 SageMaker API搭配下列命令設定 SageMaker 受管暖集區:

AWS CLI

使用 AWS CLI搭配下列命令設定 SageMaker 受管暖集區:

IAM 條件索引鍵

管理員可以選擇性地使用sagemaker:KeepAlivePeriod條件索引鍵來進一步限制特定使用者或群組KeepAlivePeriodInSeconds的限制。受 SageMaker 管暖集區的值限制為 KeepAlivePeriodInSeconds 3600 秒 (60 分鐘),但管理員可以視需要降低此限制。

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

如需詳細資訊,請參閱服務授權參考 中的 Amazon 條件金鑰 SageMaker