本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
通過訪問培訓容器進 AWS Systems Manager 行遠程調試
您可以透過 AWS Systems Manager (SSM) 安全地連線至 SageMaker 訓練容器。這可讓您存取在容器內執行的偵錯訓練工作的殼層級存取權。您還可以記錄流式傳輸到 Amazon CloudWatch 的命令和響應。如果您使用自己的 Amazon Virtual Private Cloud (VPC) 來訓練模型,則可以使用 AWS PrivateLink 為 SSM 設定 VPC 端點,並透過 SSM 私有連接到容器。
您可以連接到SageMaker 框架容器
設定身分與存取權限
若要在 SageMaker 訓練容器中啟用 SSM,您需要為容器設定 IAM 角色。若要讓您或 AWS 帳戶中的使用者透過 SSM 存取訓練容器,您必須設定具有使用 SSM 權限的 IAM 使用者。
IAM 角色
若要讓 SageMaker 訓練容器開始使用 SSM 代理程式,請提供具有 SSM 權限的 IAM 角色。
若要為訓練工作啟用遠端偵錯, SageMaker 需要在訓練工作開始時啟動訓練容器中的 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 服務授權參考 SageMaker中的 Amazon 條件金鑰。
如何為 SageMaker 訓練工作啟用遠端除錯
在本節中,了解如何在 Amazon 中啟動或更新訓練任務時啟用遠端偵錯 SageMaker。
存取您的訓練容器
當對應的訓練工作為時,SecondaryStatus
您可以存取訓練容器Training
。下列程式碼範例示範如何使用 DescribeTrainingJob
API 檢查訓練工作的狀態、如何檢查訓練工作登入 CloudWatch,以及如何登入訓練容器。
若要檢查訓練工作的狀態
若要尋找訓練容器的主機名稱
若要透過 SSM 連線至訓練容器,請使用此格式做為目標 ID:sagemaker-training-job:<training-job-name>_algo-<n>
,其中algo-<n>
是容器主機的名稱。如果您的工作在單一執行個體上執行,則主機永遠都是algo-1
。如果您在多個執行個體上執行分散式訓練工作,則 SageMaker 會建立相同數量的主機和記錄串流。例如,如果您使用 4 個實例,則 SageMaker 會建立algo-1
algo-2
algo-3
、、和algo-4
。您必須決定要偵錯的記錄資料流及其主機號碼。若要存取與訓練工作相關聯的記錄資料流,請執行下列動作。
在以下位置打開 Amazon SageMaker 控制台 https://console.aws.amazon.com/sagemaker/
。 -
在左側導覽窗格中,選擇 [訓練],然後選擇 [訓練工作]。
-
從 [訓練工作] 清單中,選擇您要偵錯的訓練工作。訓練工作詳細資訊頁面隨即開啟。
-
在「監控」段落中,選擇「檢視記錄檔」。相關的訓練工作記錄資料流清單會在 CloudWatch 主控台中開啟。
-
記錄資料流名稱會以
<training-job-name>/algo-<n>-<time-stamp>
格式顯示,並algo-<n>
代表主機名稱。
若要深入了解如何 SageMaker 管理多執行個體分散式訓練的組態資訊,請參閱分散式訓練組態。
若要存取訓練容器
在終端機中使用下列命令來啟動 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。 AWS PrivateLink 將端點執行個體、SSM 和 Amazon EC2 之間的所有網路流量限制在 Amazon 網路。如需如何使用設定 SSM 存取的詳細資訊 AWS PrivateLink,請參閱為工作階段管理員設定 Amazon VPC 端點。
記錄 SSM 工作階段命令和結果
遵循建立工作階段管理員偏好設定文件 (命令列) 中的指示後,您可以建立 SSM 文件來定義 SSM 工作階段的偏好設定。您可以使用 SSM 文件來設定工作階段選項,包括資料加密、工作階段持續時間和記錄。例如,您可以指定是在 Amazon 簡單儲存服務 (Amazon S3) 儲存貯體或 Amazon CloudWatch 日誌群組中存放工作階段日誌資料。您可以建立定義 AWS 帳戶之所有工作階段之一般偏好設定的文件 AWS 區域,或建立定義個別工作階段偏好設定的文件。
從 SSM 檢查錯誤記錄檔來疑難排解問題
Amazon 會將錯誤從 SSM 代理程式 SageMaker 上傳到 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 遠端除錯時,請考慮下列事項。
-
從 SageMaker 上開始對SageMaker 演算法容器或容器不支援遠端偵錯 AWS Marketplace。
-
您無法為啟用網路隔離的容器啟動 SSM 工作階段,因為隔離會防止輸出網路呼叫。