本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
JSON (AWS CLI)
Amazon SageMaker Debugger 內建規則可透過 API操作,使用 DebugHookConfig、ProfilerConfig、 DebugRuleConfiguration和 ProfilerRuleConfiguration 物件 SageMaker CreateTrainingJob來設定訓練任務。您需要在 RuleEvaluatorImage
參數URI中指定正確的映像,下列範例會逐步說明如何設定JSON字串來請求 CreateTrainingJob。
下列程式碼顯示完整JSON範本,以使用必要設定和偵錯工具組態執行訓練任務。將範本儲存為工作目錄中JSON的檔案,並使用 執行訓練任務 AWS CLI。例如,將以下程式碼儲存為 debugger-training-job-cli.json
。
注意
請確定您使用正確的 Docker 容器映像。若要尋找 AWS 深度學習容器映像,請參閱可用的深度學習容器映像
{ "TrainingJobName": "
debugger-aws-cli-test
", "RoleArn": "arn:aws:iam::111122223333:role/service-role/AmazonSageMaker-ExecutionRole-YYYYMMDDT123456
", "AlgorithmSpecification": { // Specify a training Docker container image URI (Deep Learning Container or your own training container) to TrainingImage. "TrainingImage": "763104351884.dkr.ecr.us-west-2.amazonaws.com/tensorflow-training:2.4.1-gpu-py37-cu110-ubuntu18.04
", "TrainingInputMode": "File
", "EnableSageMakerMetricsTimeSeries": false }, "HyperParameters": { "sagemaker_program": "entry_point/tf-hvd-train.py
", "sagemaker_submit_directory": "s3://sagemaker-us-west-2-111122223333/debugger-boto3-profiling-test/source.tar.gz
" }, "OutputDataConfig": { "S3OutputPath": "s3://sagemaker-us-west-2-111122223333/debugger-aws-cli-test
/output" }, "DebugHookConfig": { "S3OutputPath": "s3://sagemaker-us-west-2-111122223333/debugger-aws-cli-test
/debug-output", "CollectionConfigurations": [ { "CollectionName": "losses
", "CollectionParameters" : { "train.save_interval": "50
" } } ] }, "DebugRuleConfigurations": [ { "RuleConfigurationName": "LossNotDecreasing
", "RuleEvaluatorImage": "895741380848.dkr.ecr.us-west-2.amazonaws.com/sagemaker-debugger-rules:latest
", "RuleParameters": {"rule_to_invoke": "LossNotDecreasing
"} } ], "ProfilerConfig": { "S3OutputPath": "s3://sagemaker-us-west-2-111122223333/debugger-aws-cli-test
/profiler-output", "ProfilingIntervalInMilliseconds":500
, "ProfilingParameters": { "DataloaderProfilingConfig": "{\"StartStep\":5
, \"NumSteps\":3
, \"MetricsRegex\": \".*\", }", "DetailedProfilingConfig": "{\"StartStep\":5
, \"NumSteps\":3
, }", "PythonProfilingConfig": "{\"StartStep\":5
, \"NumSteps\":3
, \"ProfilerName\": \"cprofile
\", \"cProfileTimer\": \"total_time
\"}", "LocalPath": "/opt/ml/output/profiler/" } }, "ProfilerRuleConfigurations": [ { "RuleConfigurationName": "ProfilerReport", "RuleEvaluatorImage": "895741380848.dkr.ecr.us-west-2.amazonaws.com/sagemaker-debugger-rules:latest
", "RuleParameters": {"rule_to_invoke": "ProfilerReport"} } ], "ResourceConfig": { "InstanceType": "ml.p3.8xlarge
", "InstanceCount":1
, "VolumeSizeInGB": 30 }, "StoppingCondition": { "MaxRuntimeInSeconds":86400
} }
儲存JSON檔案後,請在終端機中執行下列命令。(如果您使用 Jupyter 筆記本,請在該行的開頭使用 !
。)
aws sagemaker create-training-job --cli-input-json file://debugger-training-job-cli.json
若要設定偵錯模型參數的 Debugger 規則
下列程式碼範例示範如何使用此 設定內建VanishingGradient
規則 SageMaker API。
若要啟用 Debugger 收集輸出張量
請指定 Debugger 勾點組態,如下所示:
"DebugHookConfig": { "S3OutputPath": "
s3://<default-bucket>/<training-job-name>/debug-output
", "CollectionConfigurations": [ { "CollectionName": "gradients
", "CollectionParameters" : { "save_interval": "500
" } } ] }
這將讓訓練任務儲存張量集合(gradients
、每 500 個步驟就 save_interval
一次)。若要尋找可用的CollectionName
值,請參閱SMDebug用戶端程式庫文件中的偵錯工具內建集合CollectionParameters
參數索引鍵和值,請參閱 SageMaker Python SDK 文件 中的sagemaker.debugger.CollectionConfig
若要啟用適用於偵錯輸出張量的 Debugger 規則
下列DebugRuleConfigurations
API範例顯示如何在儲存的gradients
集合上執行內建VanishingGradient
規則。
"DebugRuleConfigurations": [ { "RuleConfigurationName": "
VanishingGradient
", "RuleEvaluatorImage": "503895931360.dkr.ecr.us-east-1.amazonaws.com/sagemaker-debugger-rules:latest
", "RuleParameters": { "rule_to_invoke": "VanishingGradient
", "threshold": "20.0
" } } ]
就此範例中的組態來說,Debugger 會使用 gradients
張量集合上的 VanishingGradient
規則,對訓練任務啟動規則評估任務。要查找使用 Debugger 規則的可用 Docker 映像的完整清單,請參閱Debugger 規則的 Docker 映像。若要查找 RuleParameters
的鍵值對,請參閱Debugger 內建規則清單。
若要設定適用於分析系統和架構指標的 Debugger 內建規則
下列範例程式碼說明如何指定 ProfilerConfig API操作,以啟用收集系統和架構指標。
若要啟用 Debugger 分析收集系統和架構指標
若要啟用 Debugger 規則分析指標
下列範例程式碼示範如何設定 ProfilerReport
規則。
"ProfilerRuleConfigurations": [ { "RuleConfigurationName": "ProfilerReport", "RuleEvaluatorImage": "
895741380848.dkr.ecr.us-west-2.amazonaws.com/sagemaker-debugger-rules:latest
", "RuleParameters": { "rule_to_invoke": "ProfilerReport", "CPUBottleneck_cpu_threshold": "90
", "IOBottleneck_threshold": "90
" } } ]
要查找使用 Debugger 規則的可用 Docker 映像的完整清單,請參閱Debugger 規則的 Docker 映像。若要查找 RuleParameters
的鍵值對,請參閱Debugger 內建規則清單。
使用 更新偵錯工具分析組態 UpdateTrainingJob
API
偵錯工具分析組態可在訓練任務執行時,使用 UpdateTrainingJobAPI操作更新。設定新的 ProfilerConfig和 ProfilerRuleConfiguration 物件,並將訓練任務名稱指定至 TrainingJobName
參數。
{ "ProfilerConfig": { "DisableProfiler":
boolean
, "ProfilingIntervalInMilliseconds":number
, "ProfilingParameters": { "string
" : "string
" } }, "ProfilerRuleConfigurations": [ { "RuleConfigurationName": "string
", "RuleEvaluatorImage": "string
", "RuleParameters": { "string" : "string
" } } ], "TrainingJobName": "your-training-job-name-YYYY-MM-DD-HH-MM-SS-SSS
" }
將偵錯器自訂規則組態新增至 CreateTrainingJob
API
您可以使用 DebugHookConfig和 CreateTrainingJob API 操作中的 DebugRuleConfiguration物件,為訓練任務設定自訂規則。下列程式碼範例示範如何使用此操作 SageMaker API設定以 smdebug 程式庫編寫的自訂ImproperActivation
規則。此範例假設您已在 custom_rules.py 檔案中撰寫自訂規則,並上傳到 Amazon S3 儲存貯體。下列範例提供預先建置的 Docker 映像,可用來執行您的自訂規則。這些都列在 自訂規則評估器URIs的 Amazon SageMaker Debugger 映像。您可以在 RuleEvaluatorImage
參數中指定預先建置的 Docker 映像的URL登錄檔地址。
"DebugHookConfig": { "S3OutputPath": "
s3://<default-bucket>/<training-job-name>/debug-output
", "CollectionConfigurations": [ { "CollectionName": "relu_activations
", "CollectionParameters": { "include_regex": "relu
", "save_interval": "500
", "end_step": "5000
" } } ] }, "DebugRulesConfigurations": [ { "RuleConfigurationName": "improper_activation_job
", "RuleEvaluatorImage": "552407032007.dkr.ecr.ap-south-1.amazonaws.com/sagemaker-debugger-rule-evaluator:latest
", "InstanceType": "ml.c4.xlarge
", "VolumeSizeInGB":400
, "RuleParameters": { "source_s3_uri": "s3://bucket/custom_rules.py
", "rule_to_invoke": "ImproperActivation
", "collection_names": "relu_activations
" } } ]
要查找使用 Debugger 規則的可用 Docker 映像的完整清單,請參閱Debugger 規則的 Docker 映像。若要查找 RuleParameters
的鍵值對,請參閱Debugger 內建規則清單。