本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
調整您的訓練工作以存取私有 Docker 登錄檔中的映像
您可以使用私有 Docker 登錄
在私有 Docker 登錄檔中建立並儲存您的映像
建立一個私有的 Docker 登錄檔來儲存您的映像。您的登錄檔必須:
-
使用 Docker Registry HTTP API
協議 -
可從
CreateTrainingJob
API 中的 VpcConfig 參數內指定的相同 VPC 存取。在建立訓練工作時輸入VpcConfig
。 -
使用出自已知公用憑證授權機構的 TLS 憑證
加以保護。
如需建立 Docker 登錄檔的詳細資訊,請參閱設定登錄檔伺服器
設定您的 VPC 和 SageMaker 訓練工作
SageMaker AI 會在 VPC 中使用網路連線來存取 Docker 登錄檔中的映像。若要使用 Docker 登錄檔中的映像進行訓練,必須可以從您帳戶中的 Amazon VPC 存取該登錄檔。如需詳細資訊,請參閱使用需要驗證的 Docker 登錄檔進行訓練。
並且必須將訓練工作設定為連接到 Docker 登錄檔可以存取的同一個 VPC。如需詳細資訊,請參閱設定訓練工作以供 Amazon VPC 存取。
使用私有 Docker 登錄檔中的映像建立訓練工作
若要使用私有 Docker 登錄檔中的映像進行訓練,請使用下列指南來設定映像、設定並建立訓練工作。以下程式碼範例使用 AWS SDK for Python (Boto3) 用戶端。
-
建立訓練映像組態物件,並輸入
Vpc
的TrainingRepositoryAccessMode
欄位,如下所示。training_image_config = { 'TrainingRepositoryAccessMode': 'Vpc' }
注意
如果您的私有 Docker 登錄檔需要驗證,必須新增一個
TrainingRepositoryAuthConfig
物件至訓練映像組態物件。您也必須指定 函數的 Amazon Resource Name (ARN),該 AWS Lambda 函數會使用TrainingRepositoryAuthConfig
物件TrainingRepositoryCredentialsProviderArn
的欄位提供存取憑證給 SageMaker AI。如需詳細資訊,請參閱下方的程式碼架構範例。training_image_config = { 'TrainingRepositoryAccessMode': 'Vpc', 'TrainingRepositoryAuthConfig': { 'TrainingRepositoryCredentialsProviderArn': '
arn:aws:lambda:Region:Acct:function:FunctionName
' } }如需如何建立 Lambda 函式以提供驗證的資訊,請參閱使用需要驗證的 Docker 登錄檔進行訓練。
-
使用 Boto3 用戶端建立一個訓練工作,並將正確的組態傳送至 create_training_job API。下列指示說明如何設定元件及建立訓練工作。
-
建立要傳送給
create_training_job
的AlgorithmSpecification
物件。使用您在前一步驟中建立的訓練映像組態物件,如以下程式碼範例所示。algorithm_specification = { 'TrainingImage': '
myteam.myorg.com/docker-local/my-training-image:<IMAGE-TAG>
', 'TrainingImageConfig': training_image_config, 'TrainingInputMode': 'File
' }注意
若要使用固定版本而非更新版本的映像,請參照映像的摘要
,而不是依據名稱或標籤。 -
指定要傳送給
create_training_job
的訓練工作名稱和角色,如以下程式碼範例所示。training_job_name = '
private-registry-job
' execution_role_arn = 'arn:aws:iam::123456789012:role/SageMakerExecutionRole
' -
為訓練工作的 VPC 組態指定安全群組和子網路。您的私有 Docker 登錄檔必須允許來自指定的安全群組的傳入流量,如下列程式碼範例所示。
vpc_config = { 'SecurityGroupIds': ['
sg-0123456789abcdef0
'], 'Subnets': ['subnet-0123456789abcdef0
','subnet-0123456789abcdef1
'] }注意
如果您的子網路與私有 Docker 登錄檔不在相同的 VPC 中,您必須在兩個 VPC 之間設定網路連線。如需詳細資訊,請參閱使用 VPC 對等互連連接數個 VPC。
-
指定資源組態,包括用於訓練的機器學習運算執行個體和儲存磁碟區,如下列程式碼範例所示。
resource_config = { 'InstanceType': '
ml.m4.xlarge
', 'InstanceCount':1
, 'VolumeSizeInGB':10
, } -
指定輸入和輸出資料組態、訓練資料集的儲存位置,以及您要儲存模型成品的位置,如下列程式碼範例所示。
input_data_config = [ { "ChannelName": "training", "DataSource": { "S3DataSource": { "S3DataDistributionType": "
FullyReplicated
", "S3DataType": "S3Prefix
", "S3Uri": "s3://your-training-data-bucket/training-data-folder
" } } } ] output_data_config = { 'S3OutputPath': 's3://your-output-data-bucket/model-folder
' } -
指定模型訓練工作可以執行的秒數上限,如下列程式碼範例所示。
stopping_condition = { 'MaxRuntimeInSeconds':
1800
} -
最後,使用您在先前步驟所指定的參數來建立訓練工作,如下列程式碼範例所示。
import boto3 sm = boto3.client('sagemaker') try: resp = sm.create_training_job( TrainingJobName=training_job_name, AlgorithmSpecification=algorithm_specification, RoleArn=execution_role_arn, InputDataConfig=input_data_config, OutputDataConfig=output_data_config, ResourceConfig=resource_config, VpcConfig=vpc_config, StoppingCondition=stopping_condition ) except Exception as e: print(f'error calling CreateTrainingJob operation: {e}') else: print(resp)
-