使用 Amazon CloudWatch 指標監控和分析訓練任務 - Amazon SageMaker

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

使用 Amazon CloudWatch 指標監控和分析訓練任務

Amazon SageMaker 訓練任務是一種反覆過程,透過提供訓練資料集中的範例來教導模型進行預測。一般來說,訓練演算法會計算訓練錯誤和預測準確度等多個指標。這些指標有助於診斷模型是否順利學習,並足夠普遍化,可對未知資料進行預測。訓練演算法會將這些指標的值寫入日誌,以便即時 SageMaker 監控並傳送至 Amazon CloudWatch 。若要分析訓練工作的成效,您可以在中檢視這些指標的圖形 CloudWatch。當訓練任務完成之後,您也可以呼叫 DescribeTrainingJob 操作,以獲得訓練任務在其最終反覆運算中計算的指標值清單。

注意

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

提示

如果您想要以更精細的解析度 (最小到 100 毫秒) (0.1 秒) 的精細度來分析訓練任務,並隨時將訓練指標無限期存放在 Amazon S3 中進行自訂分析,請考慮使用 Amazon Debug。 SageMaker SageMaker 偵錯工具提供內建規則,可自動偵測常見的訓練問題;它可偵測硬體資源使用率問題 (例如 CPU、GPU 和 I/O 瓶頸) 和非融合模型問題 (例如過度適應、消失漸層和爆炸的張量)。 SageMaker 調試器還通過工作室經典及其分析報告提供可視化。若要探索偵錯工具視覺效果,請參閱SageMaker 偵錯工具見解儀表板逐步解說、偵錯工具分析報告逐步解說和使用 SMDebug 用戶端程式庫

定義訓練指標

SageMaker 會自動剖析訓練工作記錄,並將訓練指標傳送至 CloudWatch。依預設, SageMaker 會傳送「SageMaker 工作」和「端點指標」中列出的系統資源使用率度量 如果您想 SageMaker 要剖析記錄檔,並將自訂指標從您自己演算法的訓練工作傳送至 CloudWatch,則需要在設定 SageMaker 訓練工作要求時傳送量度和規則運算式的名稱,以指定量度定義。

您可以使用 SageMaker 主控台、SageMaker Python SDK 或低階 SageMaker API 來指定要追蹤的指標。

如果您使用自己的演算法,請執行下列動作:

  • 確保演算法將您想要擷取的指標撰寫到日誌。

  • 定義一般表示式,以準確搜尋記錄檔,以擷取您要傳送的指標值 CloudWatch。

例如,假設您的演算法發出下列訓練錯誤和驗證錯誤的指標:

Train_error=0.138318; Valid_error=0.324557;

如果您要在中監督這兩個測量結果 CloudWatch,測量結果定義的字典應如下列範例所示:

[ { "Name": "train:error", "Regex": "Train_error=(.*?);" }, { "Name": "validation:error", "Regex": "Valid_error=(.*?);" } ]

在上述範例定義的 train:error 指標 regex 中,regex 的第一部分會尋找確切文字 "Train_error=",而表達式 (.*?); 會擷取第一個分號字元前顯示的任何字元。在這個表達式中,括號告知 regex 擷取其內部內容、. 代表任何字元、* 代表零個或多個,而 ? 代表僅擷取第一個 ; 字元執行個體之前的內容。

使用開發套件定義指標 SageMaker

在初始化Estimator物件時,將測量結果名稱和規則運算式清單指定為metric_definitions引數,以定義要傳送的目標量度。 CloudWatch 例如,如果您要同時監視中的train:errorvalidation:error指標 CloudWatch,則Estimator初始化看起來如下範例所示:

import sagemaker from sagemaker.estimator import Estimator estimator = Estimator( image_uri="your-own-image-uri", role=sagemaker.get_execution_role(), sagemaker_session=sagemaker.Session(), instance_count=1, instance_type='ml.c4.xlarge', metric_definitions=[ {'Name': 'train:error', 'Regex': 'Train_error=(.*?);'}, {'Name': 'validation:error', 'Regex': 'Valid_error=(.*?);'} ] )

如需有關使用 Amazon SageMaker Python 開發套件估算器進行訓練的詳細資訊,請參閱上的。 GitHub

使用 SageMaker主控台定義測量結果

如果您在建立訓練工作時,在 ECR 中選擇 [您自己的演算法容器] 選項做為 SageMaker 主控台中的演算法來源,請在 [度量] 區段中新增量度定義。下列螢幕擷取畫面顯示新增範例指標名稱和對應的規則表達式後應呈現的樣子。

使用低階 SageMaker API 定義量度

在您傳送至 CloudWatch CreateTrainingJob作業的AlgorithmSpecification輸入參數MetricDefinitions欄位中,指定量度名稱和規則運算式清單,以定義您要傳送的量度。例如,如果您想要同時監視中的train:errorvalidation:error量度 CloudWatch,則看起來AlgorithmSpecification會像下列範例所示:

"AlgorithmSpecification": { "TrainingImage": your-own-image-uri, "TrainingInputMode": "File", "MetricDefinitions" : [ { "Name": "train:error", "Regex": "Train_error=(.*?);" }, { "Name": "validation:error", "Regex": "Valid_error=(.*?);" } ] }

如需使用低階 SageMaker API 定義和執行訓練工作的詳細資訊,請參閱CreateTrainingJob

監視訓練 Job 測量結果 (CloudWatch 主控台)

您可以在主控台中即時監 CloudWatch控訓練工作發出的指標。

監視訓練工作指標 (CloudWatch 主控台)
  1. 請在以下位置開啟 CloudWatch 主控台。 https://console.aws.amazon.com/cloudwatch

  2. 選擇「量度」,然後選擇 /aws/Satter/TrainingJobs

  3. 選擇TrainingJobName

  4. 所有指標標籤上,選擇您要監控的訓練指標名稱。

  5. 圖表化指標標籤上,設定圖形選項。如需有關使用 CloudWatch 圖形的詳細資訊,請參閱 Amazon 使用 CloudWatch 者指南中的圖形指

監控訓練任務指標 (SageMaker 主控台)

您可以使用主控台即時監 SageMaker控訓練工作發出的指標。

監視訓練工作指標 (SageMaker 主控台)
  1. 請在以下位置開啟 SageMaker 主控台。 https://console.aws.amazon.com/sagemaker

  2. 選擇訓練工作,然後選擇您要查看的訓練工作的指標。

  3. 選擇TrainingJobName

  4. 監控部分,您可以檢閱執行個體使用率和演算法指標的圖表。

範例:檢視訓練和驗證曲線

一般而言,您會將訓練模型的資料分割成訓練和驗證資料集。您可以使用訓練組來訓練模型參數,以用來依據訓練資料集進行預測。然後,您可以計算驗證組的預測結果,以測試模型預測的準確度。若要分析訓練任務的效能,通常是繪製訓練曲線和驗證曲線。

檢視訓練組和驗證組隨著時間的準確度圖表,有助您改進模型的效能。好比說,如果訓練準確度隨著時間持續增加,但某個時間點的驗證準確度開始降低,您可能過度擬合模型。若要解決此問題,您可以調整模型,例如提高正規化

在此範例中,您可以使用筆記本執行個體 [範例 SageMaker 筆記本] 區段中的 I mage-classification-full-training 範例。如果您沒有 SageMaker 記事本執行個體,請依照中的指示建立一個步驟 1:建立 Amazon SageMaker 筆記本執行個體。如果您願意,您可以按照上 GitHub的範例筆記本中的「端對端多類別影像分類範例」進行操作。您也需要 Amazon S3 儲存貯體來存放訓練資料及用於模型輸出。

檢視訓練和驗證錯誤曲線
  1. 請在以下位置開啟 SageMaker 主控台。 https://console.aws.amazon.com/sagemaker

  2. 選擇筆記本,然後選擇筆記本執行個體

  3. 選擇您想要使用的筆記本執行個體,然後選擇開啟

  4. 在筆記本執行個體的儀表板上,選擇 [SageMaker範例]。

  5. 展開 [Amazon 演算法簡介] 區段,然後選擇 [I mage-classification-fulltraining .ip ynb] 旁邊的 [使用]。

  6. 選擇「建立副本」。 SageMaker 在筆記本實例中創建 I mage-classification-fulltraining .ipynb 筆記本的可編輯副本。

  7. 執行筆記本中的所有儲存格,直到推論區段。您不需要部署端點或取得此範例的推論。

  8. 訓練工作開始後,請在 https://console.aws.amazon.com/cloudwatch 開啟 CloudWatch 主控台。

  9. 選擇「量度」,然後選擇 /aws/Satter/TrainingJobs

  10. 選擇TrainingJobName

  11. 所有指標標籤上,選擇您在筆記本中所建立之訓練任務的 train:accuracyvalidation:accuracy 指標。

  12. 在圖形上,選擇要放大指標值的區域。您應該會看到類似下列範例的內容。