本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
定義訓練指標
SageMaker 會自動剖析訓練任務日誌,並將訓練指標傳送至 CloudWatch。根據預設, SageMaker 會傳送SageMaker 工作和端點指標 中列出的系統資源使用率指標。如果您想要 SageMaker 剖析日誌,並將自訂指標從自己的演算法訓練任務傳送至 CloudWatch,則需要在設定 SageMaker 訓練任務請求時傳遞指標和規則表達式的名稱來指定指標定義。
您可以使用 SageMaker 主控台、SageMaker Python SDK
如果您使用自己的演算法,請執行下列動作:
-
確保演算法將您想要擷取的指標撰寫到日誌。
-
定義規則運算式,以精確搜尋日誌,擷取您要傳送至 的指標值 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 Python 定義指標 SDK
定義您要傳送的指標, CloudWatch 方法是在初始化Estimator
物件時,將指標名稱和規則運算式的清單指定為metric_definitions
引數。例如,如果您想要同時監控 中的 train:error
和 validation: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 SDK
使用 SageMaker主控台定義指標
如果您在建立訓練任務時,在 SageMaker 主控台中選擇自己的演算法容器ECR選項作為演算法來源,請在指標區段中新增指標定義。下列螢幕擷取畫面顯示新增範例指標名稱和對應的規則表達式後應呈現的樣子。
使用低階定義指標 SageMaker API
在您要傳遞給 CreateTrainingJob
操作的AlgorithmSpecification
輸入參數MetricDefinitions
欄位中,指定指標名稱和規則運算式的清單, CloudWatch 以定義您要傳送至的指標。例如,如果您想要同時監控 中的 train:error
和 validation: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
。