本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
透過 存取訓練容器 AWS Systems Manager 以進行遠端偵錯
您可以透過 AWS Systems Manager () 安全地連線至 SageMaker 訓練容器SSM。這可讓您對容器內執行的訓練任務進行殼層除錯。您也可以記錄串流到 Amazon 的命令和回應 CloudWatch。如果您使用自己的 Amazon Virtual Private Cloud (VPC) 來訓練模型,您可以使用 AWS PrivateLink 來設定 的VPC端點SSM,並透過 私下連線至容器SSM。
您可以連線至 SageMaker AI Framework Containers
設定IAM許可
若要SSM在 SageMaker 訓練容器中啟用 ,您需要為容器設定 IAM角色。若要讓您或 AWS 帳戶中的使用者透過 存取訓練容器SSM,您需要設定具有使用 許可IAM的使用者SSM。
IAM 角色
若要讓 SageMaker 訓練容器從SSM代理程式開始,請將SSM許可提供給 IAM角色。
若要為您的訓練任務啟用遠端偵錯, SageMaker AI 需要在訓練任務開始時,在訓練容器中啟動SSM代理程式。若要允許SSM代理程式與服務通訊SSM,請將下列政策新增至您用來執行訓練任務IAM的角色。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssmmessages:CreateControlChannel", "ssmmessages:CreateDataChannel", "ssmmessages:OpenControlChannel", "ssmmessages:OpenDataChannel" ], "Resource": "*" } ] }
IAM 使用者
新增下列政策,為IAM使用者提供連線至SSM目標的SSM工作階段許可。在這種情況下,SSM目標為 SageMaker 訓練容器。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:StartSession", "ssm:TerminateSession" ], "Resource": "*" } ] }
您可以透過新增 Condition
金鑰來限制IAM使用者只連線到特定訓練任務的容器,如下列政策範例所示。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:StartSession", "ssm:TerminateSession" ], "Resource": [ "*" ], "Condition": { "StringLike": { "ssm:resourceTag/aws:ssmmessages:target-id": [ "sagemaker-training-job:*" ] } } } ] }
您也可以明確使用 sagemaker:EnableRemoteDebug
條件金鑰來限制遠端偵錯。以下是IAM使用者限制遠端偵錯的範例政策。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyRemoteDebugInTrainingJob", "Effect": "Allow", "Action": [ "sagemaker:CreateTrainingJob", "sagemaker:UpdateTrainingJob" ], "Resource": "*", "Condition": { "BoolIfExists": { "sagemaker:EnableRemoteDebug": false } } } ] }
如需詳細資訊,請參閱 AWS 服務授權參考中的 Amazon SageMaker AI 的條件金鑰。
如何啟用 SageMaker 訓練任務的遠端偵錯
在本節中,了解如何在 Amazon SageMaker AI 中啟動或更新訓練任務時啟用遠端偵錯。
存取您的訓練容器
當對應的訓練任務SecondaryStatus
的 為 時,您可以存取訓練容器Training
。下列程式碼範例示範如何使用 DescribeTrainingJob
檢查訓練任務的狀態API、如何檢查訓練任務登入 CloudWatch,以及如何登入訓練容器。
檢查訓練任務的狀態
尋找訓練容器的主機名稱
若要透過 連線至訓練容器SSM,請使用此格式做為目標 ID:sagemaker-training-job:<training-job-name>_algo-<n>
,其中 algo-<n>
是容器主機的名稱。如果您的任務在單一執行個體上執行,主機一律為 algo-1
。如果您在多個執行個體上執行分散式訓練任務, SageMaker AI 會建立相同數量的主機和日誌串流。例如,如果您使用 4 個執行個體, SageMaker AI 會建立 algo-1
、algo-2
、 algo-3
和 algo-4
。您必須決定要偵錯的日誌串流及其主機號碼。若要存取與訓練任務相關聯的日誌串流,請執行下列動作。
在 開啟 Amazon SageMaker AI 主控台https://console.aws.amazon.com/sagemaker/
。 -
在左側導覽窗格中,選擇訓練,然後選擇訓練任務。
-
從訓練任務清單中,選擇您要偵錯的訓練任務。訓練任務詳細資訊頁面隨即開啟。
-
在監控區段中,選擇檢視日誌。相關的訓練任務日誌串流清單會在 CloudWatch 主控台中開啟。
-
日誌串流名稱會以
<training-job-name>/algo-<n>-<time-stamp>
格式顯示,其中algo-<n>
代表主機名稱。
若要進一步了解 SageMaker AI 如何管理多執行個體分散式訓練的組態資訊,請參閱分散式訓練組態。
存取訓練容器
在終端機中使用下列命令來啟動SSM工作階段 (aws ssm start-session
) 並連線至訓練容器。
aws ssm start-session --target sagemaker-training-job:
<training-job-name>
_algo-<n>
例如,如果訓練任務名稱為 training-job-test-remote-debug
且主機名稱為 algo-1
,則目標 ID 會變成 sagemaker-training-job:training-job-test-remote-debug_algo-1
。如果此命令的輸出類似於 Starting session with SessionId:xxxxx
,表示連線成功。
SSM 使用 存取 AWS PrivateLink
如果您的訓練容器在未連線至公有網際網路的 Amazon Virtual Private Cloud 中執行,您可以使用 AWS PrivateLink 來啟用 SSM。 會將端點執行個體SSM、 和 Amazon 之間的所有網路流量 AWS PrivateLink 限制EC2在 Amazon 網路。如需如何使用 設定SSM存取權的詳細資訊 AWS PrivateLink,請參閱設定 Session Manager 的 Amazon VPC端點。
日誌SSM工作階段命令和結果
遵循建立工作階段管理員偏好設定文件 (命令列) 的指示之後,您可以建立定義SSM工作階段偏好設定SSM的文件。您可以使用SSM文件來設定工作階段選項,包括資料加密、工作階段持續時間和記錄。例如,您可以指定是否要將工作階段日誌資料存放在 Amazon Simple Storage Service (Amazon S3) 儲存貯體或 Amazon CloudWatch Logs 群組中。您可以建立定義 AWS 帳戶所有工作階段一般偏好設定的文件 AWS 區域,或定義個別工作階段偏好設定的文件。
透過從 檢查錯誤日誌來故障診斷問題 SSM
Amazon SageMaker AI 會將錯誤從SSM代理程式上傳至 CloudWatch 日誌群組中的/aws/sagemaker/TrainingJobs
日誌。 SSM 代理程式日誌串流會以此格式命名:<job-name>/algo-<n>-<timestamp>/ssm
。例如,如果您建立名為 的雙節點訓練任務training-job-test-remote-debug
,訓練任務日誌training-job-test-remote-debug/algo-<n>-<timestamp>
和多個SSM客服人員錯誤日誌training-job-test-remote-debug/algo-<n>-<timestamp>/ssm
會上傳至您的 CloudWatch 日誌。在此範例中,您可以檢閱*/ssm
日誌串流以疑難排解SSM問題。
training-job-test-remote-debug/algo-1-1680535238 training-job-test-remote-debug/algo-2-1680535238 training-job-test-remote-debug/algo-1-1680535238/ssm training-job-test-remote-debug/algo-2-1680535238/ssm
考量事項
使用 SageMaker AI 遠端偵錯時,請考慮下列事項。
-
AI SageMaker 演算法容器或 AI SageMaker 上的容器不支援遠端偵錯 AWS Marketplace。
-
您無法為已啟用網路隔離的容器啟動SSM工作階段,因為隔離可防止傳出網路呼叫。