本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
疑難排解
如果您的訓練任務失敗或行為意外,以下各節可協助您識別並解決問題。檢查您的任務狀態有助於縮小問題是否位於您的組態或代理程式中,以下代理程式特定區段涵蓋每個部署路徑的日誌和常見問題。
任務層級偵錯
使用 DescribeJob API 檢查任務的目前狀態,並查看失敗的原因。回應包含任務的狀態、任務失敗時的失敗原因,以及顯示任務在問題發生之前進度的時間軸。
aws sagemaker describe-job \ --job-name "my-agent-rft-job" \ --job-category AgentRFT \ --region us-west-2
要檢查的關鍵欄位:
-
JobStatus:目前狀態 (
InProgress、Completed、Failed、Stopping、Stopped) -
SecondaryStatus:更精細的階段 (
Starting、Downloading、Training、Uploading) -
FailureReason:如果任務失敗,說明原因
-
SecondaryStatusTransitions:具有時間戳記的狀態變更完整時間軸
任務 CloudWatch 日誌
訓練進度和推展層級資訊會記錄到您帳戶中的下列日誌群組:
/aws/sagemaker/Job/AgentRFT
日誌串流名稱為 <job-name>/。
這些日誌會擷取訓練步驟進度、推展調用事件和高階錯誤。它們有助於了解您的任務進度,以及是否成功叫用推展。
如果您的任務失敗,請檢查 FailureReason 欄位以取得詳細資訊。如果在Training階段期間失敗,問題可能在您的代理程式中。在此情況下,請檢查您的客服人員日誌以取得更多資訊。
客服人員層級偵錯
Amazon Bedrock AgentCore 偵錯
如果您已將代理程式部署到 Amazon Bedrock AgentCore,則以下內容有助於調查代理程式端問題。
客服人員日誌
代理程式容器的 stdout 和 stderr 輸出會擷取在您帳戶中的 Amazon CloudWatch Logs 中。您可以在下列日誌群組中找到它們:
/aws/bedrock-agentcore/runtimes/<runtime-name>-<id>-<qualifier>
這些日誌會從代理程式程式碼擷取輸出,包括錯誤、堆疊追蹤和 SDK 訊息。這些日誌可用於調查與代理程式程式碼、相依性或 RFT 執行期連線相關的問題。
檢查客服人員運作狀態
驗證您的代理程式執行時間是否正常運作:
aws bedrock-agentcore-control list-agent-runtimes --region us-west-2
如需特定執行時間的詳細資訊:
aws bedrock-agentcore-control get-agent-runtime \ --agent-runtime-id <runtime-id> \ --region us-west-2
自訂代理程式偵錯
如果您使用 Lambda 轉送器路徑,問題可能發生在 Lambda 函數本身或外部代理程式中。以下內容有助於調查兩者。
Lambda 轉送器日誌
Lambda 函數的執行日誌會在 Amazon CloudWatch Logs 中擷取。您可以在下列日誌群組中找到它們:
/aws/lambda/<function-name>
這些日誌可用於調查與請求轉送、逾時或 Lambda 與您的代理程式之間的連線相關的問題。檢查:
-
調用錯誤 (Lambda 無法聯繫您的代理程式)
-
逾時錯誤 (代理程式回應時間過長)
-
驗證錯誤 (格式錯誤的推展請求)
驗證連線
如果您的 Lambda 日誌顯示調用錯誤或逾時,問題可能是 Lambda 無法聯絡到您的客服人員。下列檢查可協助確認 Lambda 和客服人員之間的連線是否正常運作。
運作狀態檢查 — 確認您的代理程式正在執行:
curl -s "http://$AGENT_ENDPOINT/health" # Expected: {"status": "ok"}
Lambda 測試調用 — 確認 Lambda 可以聯繫您的代理程式:
aws lambda invoke \ --function-name rft-agent-forwarder \ --cli-binary-format raw-in-base64-out \ --payload '{"prompt": "test", "metadata": {"jobArn": "test", "rolloutId": "test-1"}}' \ --region us-west-2 \ /tmp/response.json && cat /tmp/response.json # Note: This will return an InternalServerError because the jobArn "test" # does not correspond to an active training job. This is expected. # Success means the Lambda executed and reached your agent — check agent # logs to confirm the request was received.
如果您的 Lambda 執行成功,但任務仍然失敗,您的代理程式日誌可能具有更多詳細資訊。檢查您的客服人員日誌是否有與推論呼叫或獎勵報告相關的錯誤。
客服人員日誌
代理程式自己的日誌取決於部署的位置。這些日誌可用於調查與代理程式程式碼、對 RFT 執行期的推論呼叫或獎勵報告相關的問題。
例如,如果您將代理程式部署到 Amazon EKS,您可以使用下列方式檢查代理程式的日誌:
kubectl logs -l app=external-agent --tail=50
使用 CloudTrail 進行偵錯
CloudTrail 資料事件可協助確認代理程式對 RFT 執行期的呼叫是否成功。尋找具有下列項目的事件:
-
eventName:
Sample、SampleWithResponseStream、CompleteRollout、UpdateReward -
resources.type:
AWS::SageMaker::Job
如果您沒有看到這些事件,表示您的代理程式未成功呼叫 RFT 執行期。檢查客服人員日誌和許可。
使用 AWS CloudTrail 記錄 API 呼叫
Amazon SageMaker AI 已與 AWS CloudTrail 整合,CloudTrail 是一種服務,可提供使用者、角色或服務所採取動作的記錄 AWS 。CloudTrail 會將 Amazon SageMaker AI 的所有 API 呼叫當做事件來擷取。擷取的呼叫包括從 Amazon SageMaker AI 主控台進行的呼叫,以及針對 Amazon SageMaker AI API 作業的程式碼呼叫。您可以利用 CloudTrail 所收集的資訊來判斷向 Amazon SageMaker AI 發出的請求,以及發出請求的 IP 位址、時間和其他詳細資訊。
每一筆事件或日誌專案都會包含產生請求者的資訊。身分資訊可協助您判斷下列事項:
-
該請求是使用根使用者還是使用者憑證提出。
-
請求是否代表 IAM Identity Center 使用者提出。
-
提出該請求時,是否使用了特定角色或聯合身分使用者的暫時安全憑證。
-
請求是否由其他 AWS 服務提出。
當您建立帳戶時,您 AWS 帳戶中的 CloudTrail 處於作用中狀態,而且您會自動存取 CloudTrail 事件歷史記錄。CloudTrail 事件歷史記錄提供過去 90 天區域中記錄的管理事件的可檢視、可搜尋、可下載和不可變記錄 AWS 。如需詳細資訊,請參閱《CloudTrail 使用者指南》中的使用 CloudTrail 事件歷史記錄。 AWS CloudTrail 檢視事件歷史記錄不會產生 CloudTrail 費用。
若要持續記錄您 AWS 帳戶中超過 90 天的事件,請建立線索或 CloudTrail Lake 事件資料存放區。
CloudTrail 追蹤
線索能讓 CloudTrail 將日誌檔案交付至 Amazon S3 儲存貯體。使用 AWS 管理主控台建立的所有線索都是多區域。您可以使用 AWS CLI 建立單一區域或多區域追蹤。建議您建立多區域追蹤,因為您擷取帳戶中所有 AWS 區域中的活動。如果您建立單一區域追蹤,您只能檢視追蹤 AWS 區域中記錄的事件。如需追蹤的詳細資訊,請參閱《AWS CloudTrail 使用者指南》中的為 AWS 您的帳戶建立追蹤和為組織建立追蹤。
您可以透過建立追蹤,免費將持續管理事件的一個複本從 CloudTrail 傳遞至您的 Amazon S3 儲存貯體,但這樣做會產生 Amazon S3 儲存費用。如需 CloudTrail 定價的詳細資訊,請參閱 AWS CloudTrail 定價
CloudTrail Lake 事件資料存放區
CloudTrail Lake 讓您能夠對事件執行 SQL 型查詢。CloudTrail Lake 會將分列式 JSON 格式的現有事件轉換為 Apache ORC
CloudTrail Lake 事件資料存放區和查詢會產生費用。建立事件資料存放區時,您可以選擇要用於事件資料存放區的定價選項。此定價選項將決定擷取和儲存事件的成本,以及事件資料存放區的預設和最長保留期。如需 CloudTrail 定價的詳細資訊,請參閱 AWS CloudTrail 定價
CloudTrail 中的 SageMaker AI 資料事件
資料事件提供在資源上或在資源中執行的資源操作的相關資訊 (例如,讀取或寫入 Amazon S3 物件)。這些也稱為資料平面操作。資料事件通常是大量資料的活動。根據預設,CloudTrail 不會記錄資料事件。CloudTrail 事件歷史記錄不會記錄資料事件。
資料事件需支付額外的費用。如需 CloudTrail 定價的詳細資訊,請參閱 AWS CloudTrail 定價
您可以使用 CloudTrail 主控台、 AWS CLI 或 CloudTrail API 操作,記錄各種 Amazon SageMaker AI 資源類型的資料事件。如需如何記錄資料事件的詳細資訊,請參閱《AWS CloudTrail 使用者指南》中的使用 AWS 管理主控台記錄資料事件和使用 AWS 命令列界面記錄資料事件。
下表列出您可以記錄資料事件的 Amazon SageMaker AI 資源類型:
| 資源類型 (主控台) | resources.type 值 | 記錄到 CloudTrail 的資料 API | API 參考 |
|---|---|---|---|
| SageMaker 端點 | AWS::SageMaker::Endpoint |
InvokeEndpoint、InvokeEndpointAsync、InvokeEndpointWithResponseStream | InvokeEndpoint、InvokeEndpointAsync、InvokeEndpointWithResponseStream |
| SageMaker 任務 | AWS::SageMaker::Job |
CompleteRollout、Sample、SampleWithResponseStream | CompleteRollout、Sample、SampleWithResponseStream |
注意
InvokeEndpoint、Sample、 InvokeEndpointAsync和 SampleWithResponseStream API 呼叫不會記錄請求參數。
您可以設定進階事件選取器來篩選 eventName、readOnly 和 resources.ARN 欄位,以僅記錄對您重要的事件。如需這些欄位的詳細資訊,請參閱 AWS CloudTrail API 參考中的 AdvancedFieldSelector。
範例:SageMaker 端點和任務的日誌資料事件
下列範例示範如何使用 put-event-selectors AWS CLI 命令來新增進階事件選取器:
[ { "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.ARN", "Equals": ["arn:aws:sagemaker:us-east-1:111122223333:endpoint/your-inference-endpoint-arn"] }, { "Field": "resources.type", "Equals": ["AWS::SageMaker::Endpoint"] } ] }, { "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.ARN", "Equals": ["arn:aws:sagemaker:us-east-1:111122223333:job/your-job-arn"] }, { "Field": "resources.type", "Equals": ["AWS::SageMaker::Job"] } ] } ]
然後執行:
aws cloudtrail put-event-selectors \ --trail-name your-trail-name \ --advanced-event-selectors=file://advanced-event-selectors.json
CloudTrail 中的 SageMaker AI 管理事件
管理事件提供有關在 AWS 帳戶中資源上執行的管理操作的資訊。這些也稱為控制平面操作。根據預設,CloudTrail 記錄管理事件。
Amazon SageMaker AI 會將所有 Amazon SageMaker AI 控制平面操作記錄為管理事件。如需 Amazon SageMaker AI 記錄到 CloudTrail 的 Amazon SageMaker AI 控制平面操作清單,請參閱 Amazon SageMaker AI API 參考。
CloudTrail 事件範例
如需有關 CloudTrail 記錄內容的資訊,請參閱CloudTrail 使用者指南》中的 CloudTrail 記錄內容。 AWS CloudTrail
模型套件和檢查點
概觀
在多迴轉 RL 訓練期間,平台會定期將模型學習到的參數儲存為檢查點。這些檢查點會儲存為模型套件群組中的 SageMaker 模型套件,以啟用版本控制、歷程追蹤和跨工作連續性。
重要概念
模型套件
模型套件是 SageMaker AI 中具有版本控制的不可變成品,其中包含在特定時間點的訓練模型權重。訓練期間產生的每個檢查點都會儲存為模型套件。模型套件具有:
ARN (例如
arn:aws:sagemaker:us-west-2:123456789012:model-package/my-group/5)包含模型檔案的 S3 位置
有關建立時間以及訓練步驟的中繼資料
模型套件群組
模型套件群組是包含多個模型套件版本的容器。多迴轉 RL 使用兩個不同的群組:
| Group | 用途 | 目錄 |
|---|---|---|
| 輸出模型套件群組 | 最終訓練模型檢查點 | 適用於推論和持續訓練的 HuggingFace 相容 LoRA 轉接器權重 |
| 中繼檢查點模型套件群組 | 可繼續的訓練狀態 | 完整最佳化工具狀態 + 恢復中斷訓練的轉接器權重 |
您可以在建立任務時指定兩者:
{ "ModelPackageConfig": { "OutputModelPackageGroupArn": "arn:aws:sagemaker:us-west-2:123456789012:model-package-group/my-final-models", "IntermediateCheckpointModelPackageGroupArn": "arn:aws:sagemaker:us-west-2:123456789012:model-package-group/my-intermediate-checkpoints" } }
檢查點類型
可繼續檢查點 (完整狀態)
內容:LoRA 轉接器權重 + 最佳化工具狀態 + 訓練步驟中繼資料 (每個 GPU 排名)
存放於:中繼檢查點模型套件群組
目的:從中斷的確切時間點繼續訓練
格式:內部格式 (不可直接用於推論)
建立時:每個步驟
使用案例:自動恢復能力或明確持續訓練
模型檢查點 (僅限權重)
內容:SafeTensors 格式的 HuggingFace 相容 LoRA 轉接器權重
存放於:輸出模型套件群組
目的:推論、部署或持續訓練
格式:標準 HuggingFace 轉接器格式 (
adapter_config.json+adapter_model.safetensors)建立時:每個步驟、任務完成時,以及任務停止時
使用案例:部署微調模型以進行推論,或使用 做為新訓練任務的輸入
繼續中斷的訓練
如果訓練任務失敗或已在訓練中途停止,您可以從先前任務停止的確切時間點開始新的任務。平台會從可恢復的檢查點載入完整訓練狀態 (權重 + 最佳化工具 + 步驟計數器)。
若要繼續,請將可繼續檢查點 (從中繼檢查點模型套件群組) 指定為 InputModelPackageArn:
{ "ModelPackageConfig": { "OutputModelPackageGroupArn": "arn:aws:sagemaker:us-west-2:123456789012:model-package-group/my-final-models", "IntermediateCheckpointModelPackageGroupArn": "arn:aws:sagemaker:us-west-2:123456789012:model-package-group/my-intermediate-checkpoints", "InputModelPackageArn": "arn:aws:sagemaker:us-west-2:123456789012:model-package/my-intermediate-checkpoints/5" } }
使用要求:
必須
InputModelPackageArn指向可繼續的檢查點 (模型套件中繼資料IsCheckpoint=true中具有 的檢查點)新任務必須使用相同的基本模型
新任務必須使用相同的 LoRA 組態 (rank、alpha)
新任務必須使用相同的超參數 (學習率、批次大小等)
新任務必須使用相同的資料集
反覆訓練 (繼續訓練)
反覆訓練可讓您使用新的超參數、不同的資料集或不同的訓練組態,建置先前訓練過的模型。與繼續不同,這會從訓練過的 LoRA 權重開始新的訓練執行,但具有新的最佳化工具狀態。
若要執行反覆訓練,請將模型檢查點 (從輸出模型套件群組) 指定為 InputModelPackageArn:
{ "ModelPackageConfig": { "OutputModelPackageGroupArn": "arn:aws:sagemaker:us-west-2:123456789012:model-package-group/my-final-models", "IntermediateCheckpointModelPackageGroupArn": "arn:aws:sagemaker:us-west-2:123456789012:model-package-group/my-intermediate-checkpoints", "InputModelPackageArn": "arn:aws:sagemaker:us-west-2:123456789012:model-package/my-final-models/3" } }
您可以在反覆運算之間變更的內容:
超參數 (學習速率、批次大小、Max_steps、group_size 等)
資料集 (不同的提示、不同的資料分佈)
獎勵函數 (不同的獎勵 Lambda)
代理程式組態
哪些項目必須保持不變:
基礎模型 (LoRA 轉接器專屬於基礎模型架構)
典型使用案例:
先針對簡單的問題進行訓練,然後針對較硬的問題進行訓練 (課程學習)
使用簡單的獎勵函數進行訓練,然後使用更細微的獎勵函數進行精簡
在觀察初始訓練動態之後增加批次大小或調整學習率
檢查點生命週期
Training Step 1 → Intermediate Checkpoint (Resumable) Training Step 1 → Intermediate Checkpoint (HFCompatible) ... Training Step N-1 → Intermediate Checkpoint (Resumable) Training Step N-1 → Intermediate Checkpoint (HFCompatible) ... Training Step N (final) → Model Checkpoint (HuggingFace LoRA) → Output Model Package Group
當任務成功完成時:最終模型權重會儲存為輸出模型套件群組中的模型套件。任務記錄上的 OutputModelPackageArn 欄位包含最終模型的 ARN。
當任務失敗或停止時:最後一個中繼檢查點會提升為輸出模型套件群組 (最佳努力)。
檢查點的最佳實務
監控檢查點建立 —
DescribeJob用於在訓練期間追蹤ResumableCheckpoint和ModelCheckpoint欄位對於長任務,請使用反覆訓練 - 如果具有許多步驟的任務可能失敗,請計劃從檢查點繼續,而不是從頭重新開始