本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon 中的檢查點 SageMaker
在 Amazon 中使用檢查點 SageMaker ,在訓練期間儲存機器學習 (ML) 模型的狀態。檢查點是模型的快照,並且可以透過機器學習 (ML) 架構的回呼函式進行設定。您可以使用儲存的檢查點,從上次儲存的檢查點重新啟動訓練任務。
使用檢查點,您可以執行下列操作:
-
由於訓練任務或執行個體非預期中斷,會將模型快照儲存在訓練之下。
-
從檢查點恢復訓練未來的模型。
-
在訓練的中間階段分析模型。
-
搭配 S3 Express One Zone 使用檢查點以提高存取速度。
-
使用檢查點搭配 SageMaker 受管現場訓練,節省訓練成本。
SageMaker 訓練機制在 Amazon EC2執行個體上使用訓練容器,檢查點檔案會儲存在容器的本機目錄 (預設值為 /opt/ml/checkpoints
) 下。 SageMaker 提供將檢查點從本機路徑複製到 Amazon S3 的功能,並自動將該目錄中的檢查點與 S3 同步。S3 中的現有檢查點會在任務開始時寫入 SageMaker容器,讓任務能夠從檢查點繼續。任務開始後新增至 S3 資料夾的檢查點不會複製到訓練容器。 SageMaker 也會在訓練期間將新的檢查點從容器寫入 S3。如果在 SageMaker 容器中刪除檢查點,也會在 S3 資料夾中將其刪除。
您可以在 Amazon 中使用檢查點 SageMaker 與 Amazon S3 Express One Zone 儲存類別 (S3 Express One Zone),以更快地存取檢查點。當您啟用檢查點並指定檢查點儲存目的地URI的 S3 時,您可以URI為 S3 一般用途儲存貯體或 S3 目錄儲存貯體中的資料夾提供 S3。與 整合的 S3 目錄儲存貯體 SageMaker 只能使用 Amazon S3 受管金鑰 (SSE-S3) 進行伺服器端加密。目前不支援具有 AWS KMS 金鑰 (SSE-KMS) 的伺服器端加密。如需 S3 Express One Zone 和 S3 目錄儲存貯體的詳細資訊,請參閱什麼是 S3 Express One Zone 。
如果您使用檢查點搭配 SageMaker 受管現場訓練, 會在現場執行個體上 SageMaker 管理模型訓練,並在下一個現場執行個體上繼續訓練任務。透過 SageMaker 受管現場訓練,您可以大幅縮短訓練 ML 模型的計費時間。如需詳細資訊,請參閱Amazon 中的受管 Spot 訓練 SageMaker。
中的架構和演算法檢查點 SageMaker
使用檢查點來儲存建置在 中偏好架構上的 ML 模型快照 SageMaker。
SageMaker 支援檢查點的架構和演算法
SageMaker 支援 AWS 深度學習容器的檢查點和內建演算法子集,而不需要訓練指令碼變更。 會將檢查點 SageMaker 儲存到預設本機路徑'/opt/ml/checkpoints'
,並將其複製到 Amazon S3。
-
深度學習容器:TensorFlow
、MXNet 、 PyTorch 和 HuggingFace 注意
如果您使用 HuggingFace 架構估算器,則需要透過超參數指定檢查點輸出路徑。如需詳細資訊,請參閱 HuggingFace 文件 中的在 Amazon 上執行訓練 SageMaker
。 -
內建演算法:映像分類、物件偵測、語意分割 和 XGBoost(0.90-1 或更新版本)
注意
如果您是在架構模式 (指令碼模式) 中使用XGBoost演算法,則需要攜帶XGBoost訓練指令碼,並手動設定檢查點。如需有關儲存模型快照XGBoost的訓練方法的詳細資訊,請參閱 Python 文件中的訓練 XGBoost
。 XGBoost SDK
如果在受管現場訓練任務中使用不支援檢查點的預先建置演算法, SageMaker 不會允許超過一小時的任務等待時間上限,以限制中斷造成的訓練時間浪費。
針對自訂訓練容器和其他架構
如果您使用自己的訓練容器、訓練指令碼或其他未在上一節中列出的架構,則必須使用回呼或訓練正確設定訓練指令碼APIs,將檢查點儲存到本機路徑 ('/opt/ml/checkpoints'
),並從訓練指令碼中的本機路徑載入。 SageMaker 估算器可以與本機路徑同步,並將檢查點儲存到 Amazon S3。
檢查點的考量事項
在 中使用檢查點時,請考慮下列事項 SageMaker。
-
若要在具有多個執行個體的分散式訓練中避免覆寫,您必須在訓練指令碼中手動設定檢查點檔案名稱和路徑。高階 SageMaker 檢查點組態會指定單一 Amazon S3 位置,沒有額外的字尾或字首來標記來自多個執行個體的檢查點。
-
SageMaker Python SDK不支援檢查點頻率的高階組態。若要控制檢查點頻率,請使用架構的模型儲存函式或檢查點回呼來修改訓練指令碼。
-
如果您搭配 SageMaker Debugger 使用 SageMaker 檢查點並 SageMaker 已分發,且面臨問題,請參閱下列頁面,了解疑難排解和考量事項。