Amazon SageMaker 調試器的最佳實踐 - Amazon SageMaker

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Amazon SageMaker 調試器的最佳實踐

當您使用 Debugger 執行訓練任務時,請遵循下列指南。

選擇一個機器學習架構

您可以選擇機器學習架構,並使用 SageMaker 預先建置的訓練容器或您自己的容器。使用偵錯工具偵測訓練和效能問題,並分析中訓練工作的訓練進度 SageMaker。 SageMaker 提供選項,讓您可以使用針對多種機器學習架構環境準備的預先建置容器,以在 Amazon EC2 上訓練模型。任何訓練工作都可以調整為在 AWS Deep Learning Containers、 SageMaker 訓練容器和自訂容器中執行。

使用 Studio Debugger 洞察儀表板

使用 Studio Debugger 洞察儀表板,您可以控制自己的訓練任務。使用 Studio Debugger 儀表板,讓 Amazon EC2 執行個體上的模型效能保持在控制和最佳化狀態。對於在 Amazon EC2 執行個體上執行的任何 SageMaker 訓練任務,除錯器會監控資源使用率和基本模型輸出資料 (遺失和準確性值)。透過 Studio Debugger 儀表板,深入了解您的訓練任務,並改善模型訓練效能。如需進一步了解,請參閱Amazon SageMaker 工作室經典實驗 Amazon SageMaker 調試器 UI

下載 Debugger 報告並取得更多洞察

您可以在 Debugger 報告中檢視彙總結果並取得洞察。Debugger 會將從內建規則分析收集的訓練和剖析結果彙總到每個訓練任務的報告中。您可以透過 Debugger 報告,找到有關訓練結果的更多詳細資訊。如需進一步了解,請參閱SageMaker 除錯器互動報表

從訓練任務擷取資料,並將資料儲存到 Amazon S3

您可以使用 Debugger 勾點來儲存輸出張量。選擇適合訓練指令碼的容器和架構後,請使用 Debugger 勾點來設定要儲存哪些張量及儲存到哪個目錄,例如 Amazon S3 儲存貯體。Debugger 勾點可協助您建置組態,並保存在帳戶中供後續分析時使用,讓您安心用於最私密的應用程式。如需進一步了解,請參閱設定 SageMaker 偵錯工具以儲存張量

使用 Debugger 機群內建規則來分析資料

您可以使用 Debugger 內建規則,檢查與訓練任務平行的張量。為了分析訓練效能資料,Debugger 會提供內建規則,以監控異常的訓練程序行為。例如,當訓練過程遭遇系統瓶頸問題,或者碰到漸層消失、爆炸張量、過度擬合或過度訓練等問題時,Debugger 規則會偵測到問題。如有必要,您也可以使用自己的條件建立規則定義來定義訓練問題,以建立自訂規則。若要進一步了解除錯程式規則,請參設定偵錯工具內建規則閱以取得使用 Amazon SageMaker Python 開發套件的詳細指示。如需 Debugger 內建規則的完整清單,請參閱偵錯工具內建規則清單。如要建立自訂規則,請參閱建立偵錯器自訂規則以訓練任務分析

根據內建規則狀態採取動作

您可以使用調試器與 Amazon CloudWatch 事件和 AWS Lambda. 您可以根據規則狀態自動執行動作,例如提前停止訓練任務,以及透過電子郵件或簡訊設定通知。當偵錯程式規則偵測到問題並觸發"IssuesFound"評估狀態時,E CloudWatch vents 會偵測規則狀態變更,並叫用 Lambda 函數以採取動作。若要針對訓練問題設定自動化動作,請參閱使用 Amazon CloudWatch 和在規則上創建操作 AWS Lambda

使用 SMDebug 用戶端程式庫深入了解資料

您可以使用 SMDebug 工具來存取和分析 Debugger 收集的訓練資料。TrainingJobcreate_trial 類別會載入 Debugger 所儲存的指標和張量。這些類別提供已延伸的類別方法,以即時或在訓練完成後分析資料。SMDebug 程式庫也提供了視覺化工具:合併架構指標的時間軸以彙總不同的剖析資料,折線圖和熱度圖以追蹤系統使用率,以及長條圖來尋找步驟持續時間的極端值。若要進一步了解 SMDebug 程式庫工具,請參閱使用偵錯工具 Python 用戶端程式庫分析資料

監控和分析訓練任務指標

Amazon CloudWatch 支援高解析度自訂指標,其最佳解析度為 1 秒。但是,分辨率越細,指標的壽命就越短。 CloudWatch對於 1 秒頻率解析度,指 CloudWatch 標可使用 3 小時。如需有關 CloudWatch 指標解析度和壽命的詳細資訊,請參閱 Amazon CloudWatch API 參考中的GetMetric統計資料。

如果您想要以更精細的解析度 (最小到 100 毫秒) (0.1 秒) 的精細度來分析訓練任務,並隨時將訓練指標無限期存放在 Amazon S3 中進行自訂分析,請考慮使用 Amazon Debug。 SageMaker SageMaker 偵錯工具提供內建規則,可自動偵測常見的訓練問題;它可偵測硬體資源使用率問題 (例如 CPU、GPU 和 I/O 瓶頸) 和非融合模型問題 (例如過度適應、消失漸層和爆炸的張量)。

SageMaker 調試器還通過工作室經典及其分析報告提供可視化。與累積 CPU 和 GPU 核心的資源使用率,並平均多個執行個體的資源使用率的 CloudWatch 指標不同,除錯工具會追蹤每個核心的使用率。這可讓您在縱向擴展至較大的運算叢集時,識別硬體資源不平衡的使用情況。若要探索偵錯工具視覺效果,請參閱SageMaker 偵錯工具見解儀表板逐步解說、偵錯工具分析報告逐步解說和使用 SMDebug 用戶端程式庫

監控系統使用率並偵測瓶頸

透過 Amazon SageMaker 偵錯工具監控,您可以測量 Amazon EC2 執行個體的硬體系統資源使用率。監控適用於使用 SageMaker 架構估算器 (TensorFlow、 PyTorch和 MXNet) 和一般 SageMaker估算器 (SageMaker 內建演算法和您自己的自訂容器) 建構的任何 SageMaker 訓練工作。Debugger 內建監控規則可偵測系統瓶頸問題,並在偵測到瓶頸問題時通知您。

如要了解如何啟用 Debugger 系統監控,請先參閱 使用 Amazon SageMaker 偵錯工具 Python 模組設定具有基本效能分析參數的估算器,接著參考 為系統資源使用率的基本分析進行設定

要查看可用內建規則的完整清單,請參閱適用於分析硬體系統資源使用率 (系統指標) 的偵錯工具內建規則

分析架構操作

使用 Amazon SageMaker 偵錯工具分析,您可以剖析深度學習架構操作。您可以使用訓練容器、 SageMaker PyTorch 架構容器和您自己的 SageMaker TensorFlow 訓練容器來描述模型訓練。使用 Debugger 的分析功能,您可以深入到執行訓練任務所執行的 Python 運算子和函式。Debugger 支援詳細的分析、Python 分析、資料載入器分析和 Horovod 分散式訓練分析。您可以合併已分析的時間軸,以便與系統瓶頸相互關聯。Debugger 內建規則用於分析監控架構操作相關問題,包括由於訓練開始之前的資料下載而導致的過度訓練初始化時間和訓練迴路中的步驟持續時間極端值。

要了解如何為架構分析配置 Debugger,請先參閱 使用 Amazon SageMaker 偵錯工具 Python 模組設定具有基本效能分析參數的估算器,然後參考 配置架構分析

如需可用的分析內建規則之完整清單,請參閱分析架構指標的偵錯工具內建規則

偵錯模型輸出張量

使用 Deep Learning Containers 和 SageMaker 訓練容器,可針對 AWS 深度學習架構進行偵錯。如需完全支援的架構版本 (版本請參閱支援的架構和演算法),Debugger 會自動註冊勾點以收集輸出張量,而您可以直接執行訓練指令碼。對於帶有一個星號的版本,您需要手動註冊勾點以收集張量。Debugger 提供預先設定的張量集合與廣義的名稱,方便您在不同的架構之間利用。如果您想要自訂輸出張量組態,也可以使用 CollectionConfig 和 DebuggerHookConfig API 操作和 Amazon SageMaker Python 開發套件來設定您自己的張量集合。Debugger 內建用於偵錯的規則會分析輸出張量,並識別模型最佳化問題,該類問題會阻止模型最小化損失函式。例如,規則會識別過度擬合、過度訓練、損失不減少、爆炸張量和消失的漸層等問題。

若要了解如何配置 Debugger 以偵錯輸出張量,請先參閱 步驟 2:使用 SageMaker Python SDK 啟動和偵錯訓練任務,接著參考 設定 SageMaker 偵錯工具以儲存張量

如需可用的內建偵錯規則之完整清單,請參閱適用於偵錯模型訓練資料 (輸出張量) 的偵錯工具內建規則