本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
编译模型 (AWS Command Line Interface)
本节介绍如何使用 AWS Command Line Interface (CLI) 管理机器学习模型的 Amazon SageMaker Neo 编译任务。您可以创建、描述、停止和列出编译作业。
创建编译作业
通过该CreateCompilationJobAPI操作,您可以指定数据输入格式、用于存储模型的 S3 存储桶、用于写入已编译模型的 S3 存储桶以及目标硬件设备或平台。
下表演示了如何CreateCompilationJob
API根据目标设备还是平台进行配置。
- Device Example
-
{
"CompilationJobName": "neo-compilation-job-demo
",
"RoleArn": "arn:aws:iam::<your-account>
:role/service-role/AmazonSageMaker-ExecutionRole-yyyymmddThhmmss
",
"InputConfig": {
"S3Uri": "s3://<your-bucket>
/sagemaker/neo-compilation-job-demo-data/train
",
"DataInputConfig": "{'data': [1,3,1024,1024]}
",
"Framework": "MXNET
"
},
"OutputConfig": {
"S3OutputLocation": "s3://<your-bucket>
/sagemaker/neo-compilation-job-demo-data/compile
",
# A target device specification example for a ml_c5 instance family
"TargetDevice": "ml_c5
"
},
"StoppingCondition": {
"MaxRuntimeInSeconds": 300
}
}
如果您使用框架训练模型并且目标设备是目标,则可以选择指定用于该FrameworkVersion
字段的 PyTorch ml_*
框架版本。
{
"CompilationJobName": "neo-compilation-job-demo",
"RoleArn": "arn:aws:iam::<your-account>
:role/service-role/AmazonSageMaker-ExecutionRole-yyyymmddThhmmss",
"InputConfig": {
"S3Uri": "s3://<your-bucket>
/sagemaker/neo-compilation-job-demo-data/train",
"DataInputConfig": "{'data': [1,3,1024,1024]}",
"Framework": "PYTORCH",
"FrameworkVersion": "1.6"
},
"OutputConfig": {
"S3OutputLocation": "s3://<your-bucket>
/sagemaker/neo-compilation-job-demo-data/compile",
# A target device specification example for a ml_c5 instance family
"TargetDevice": "ml_c5",
# When compiling for ml_* instances using PyTorch framework, use the "CompilerOptions" field in
# OutputConfig to provide the correct data type ("dtype") of the model’s input. Default assumed is "float32"
"CompilerOptions": "{'dtype': 'long'}"
},
"StoppingCondition": {
"MaxRuntimeInSeconds": 300
}
}
- Platform Example
-
{
"CompilationJobName": "neo-test-compilation-job
",
"RoleArn": "arn:aws:iam::<your-account>:
role/service-role/AmazonSageMaker-ExecutionRole-yyyymmddThhmmss
",
"InputConfig": {
"S3Uri": "s3://<your-bucket>
/sagemaker/neo-compilation-job-demo-data/train
",
"DataInputConfig": "{'data': [1,3,1024,1024]}
",
"Framework": "MXNET
"
},
"OutputConfig": {
"S3OutputLocation": "s3://<your-bucket>
/sagemaker/neo-compilation-job-demo-data/compile
",
# A target platform configuration example for a p3.2xlarge instance
"TargetPlatform": {
"Os": "LINUX
",
"Arch": "X86_64
",
"Accelerator": "NVIDIA
"
},
"CompilerOptions": "{'cuda-ver': '10.0', 'trt-ver': '6.0.1', 'gpu-code': 'sm_70'
}"
},
"StoppingCondition": {
"MaxRuntimeInSeconds": 300
}
}
对于该OutputConfig
API操作,TargetDevice
和TargetPlatform
API运算是互斥的。您必须从两个选项中选择一个。
要查找DataInputConfig
依赖框架的JSON字符串示例,请参阅 Neo 期望的输入数据形状。
有关设置配置的更多信息,请参阅 SageMaker API参考资料中的InputConfigOutputConfig、和TargetPlatformAPI操作。
配置JSON文件后,运行以下命令来创建编译作业:
aws sagemaker create-compilation-job \
--cli-input-json file://job.json \
--region us-west-2
# You should get CompilationJobArn
通过运行以下命令描述编译作业:
aws sagemaker describe-compilation-job \
--compilation-job-name $JOB_NM \
--region us-west-2
通过运行以下命令停止编译作业:
aws sagemaker stop-compilation-job \
--compilation-job-name $JOB_NM \
--region us-west-2
# There is no output for compilation-job operation
通过运行以下命令列出编译作业:
aws sagemaker list-compilation-jobs \
--region us-west-2