编译模型 (AWS Command Line Interface) - Amazon SageMaker

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

编译模型 (AWS Command Line Interface)

本节介绍如何使用 AWS Command Line Interface (CLI) 管理机器学习模型的 Amazon SageMaker Neo 编译任务。您可以创建、描述、停止和列出编译作业。

  1. 创建编译作业

    通过该CreateCompilationJobAPI操作,您可以指定数据输入格式、用于存储模型的 S3 存储桶、用于写入已编译模型的 S3 存储桶以及目标硬件设备或平台。

    下表演示了如何CreateCompilationJobAPI根据目标设备还是平台进行配置。

    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 } }
    注意:
    • 如果您使用 2.0 或更高 PyTorch 版本保存模型,则该DataInputConfig字段为可选字段。 SageMakerNeo 从您创建的模型定义文件中获取输入配置 PyTorch。有关如何创建定义文件的更多信息,请参阅 “为 SageMaker Neo 保存模型 PyTorch” 下的部分。

    • 仅支持此API字段 PyTorch。

    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 } }
    注意

    对于该OutputConfigAPI操作,TargetDeviceTargetPlatformAPI运算是互斥的。您必须从两个选项中选择一个。

    要查找DataInputConfig依赖框架的JSON字符串示例,请参阅 Neo 期望的输入数据形状

    有关设置配置的更多信息,请参阅 SageMaker API参考资料中的InputConfigOutputConfig、和TargetPlatformAPI操作。

  2. 配置JSON文件后,运行以下命令来创建编译作业:

    aws sagemaker create-compilation-job \ --cli-input-json file://job.json \ --region us-west-2 # You should get CompilationJobArn
  3. 通过运行以下命令描述编译作业:

    aws sagemaker describe-compilation-job \ --compilation-job-name $JOB_NM \ --region us-west-2
  4. 通过运行以下命令停止编译作业:

    aws sagemaker stop-compilation-job \ --compilation-job-name $JOB_NM \ --region us-west-2 # There is no output for compilation-job operation
  5. 通过运行以下命令列出编译作业:

    aws sagemaker list-compilation-jobs \ --region us-west-2