本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Edge 设备上的 Neo 入门
本指南介绍了 Amazon SageMaker Neo 入门,向您介绍如何编译模型、设置设备以及在设备上进行推理。大多数代码示例使用 Boto3。我们将AWS CLI使用 提供相关命令,并提供有关如何满足 Neo 的先决条件的说明。
您可以在本地计算机上SageMaker、笔记本中SageMaker 中或边缘设备(具体取决于边缘设备)上运行以下代码段。设置类似;但是,如果您在SageMaker笔记本实例或 SageMaker Studio 会话中运行本指南,则有两个主要异常:
-
您无需安装 Boto3。
-
您无需添加
‘AmazonSageMakerFullAccess’
IAM策略
本指南假定您在 边缘设备上运行以下说明。
Prerequisites
-
安装 Boto3
如果您在边缘设备上运行这些命令,则必须安装 适用于 Python (Boto3) 的 AWS 软件开发工具包。在 Python 环境(最好是虚拟环境)内,在边缘设备的终端上或在 Jupyter 笔记本实例中本地运行以下命令:
-
设置 AWS 凭证
您需要在设备上设置 Amazon Web Services 凭证才能运行 适用于 Python (Boto3) 的开发工具包。默认情况下,AWS 凭证应存储在
~/.aws/credentials
边缘设备上的 文件中。在凭证文件中,您应看到两个环境变量:aws_access_key_id
和aws_secret_access_key
。在您的终端中,运行:
$ more ~/.aws/credentials [default] aws_access_key_id =
YOUR_ACCESS_KEY
aws_secret_access_key =YOUR_SECRET_KEY
AWS 一般参考指南
提供了有关如何获取必要的 aws_access_key_id
和 的说明aws_secret_access_key
。有关如何在设备上设置凭证的更多信息,请参阅 Boto3文档。 -
设置 IAM 角色并附加策略。
Neo 需要访问您的 S3 存储桶 URI。创建一个 IAM 角色,该角色可以运行SageMaker并有权访问 S3 URI。您可以使用 IAM、 控制台或 创建 适用于 Python (Boto3) 的开发工具包 角色AWS CLI。以下示例说明如何使用 创建 IAM 角色适用于 Python (Boto3) 的开发工具包:
import boto3 AWS_REGION =
'aws-region'
# Create an IAM client to interact with IAM iam_client = boto3.client('iam', region_name=AWS_REGION) role_name ='role-name'
有关如何使用 控制台、 IAM或 AWS CLI API 创建 AWS 角色的更多信息,请参阅在您的 AWS 账户中创建 IAM 用户。
创建描述要附加的IAM策略的词典。此策略用于创建新IAM角色。
policy = { 'Statement': [ { 'Action': 'sts:AssumeRole', 'Effect': 'Allow', 'Principal': {'Service': 'sagemaker.amazonaws.com'}, }], 'Version': '2012-10-17' }
使用您在上面定义的策略创建新IAM角色:
import json new_role = iam_client.create_role( AssumeRolePolicyDocument=json.dumps(policy), Path='/', RoleName=role_name )
在后面的步骤中创建编译作业时,您需要知道 Amazon 资源名称 (ARN) 是什么,因此也请将其存储在变量中。
role_arn = new_role['Role']['Arn']
现在,您已创建新的 角色,请附加它与 Amazon SageMaker 和 交互所需的权限Amazon S3:
iam_client.attach_role_policy( RoleName=role_name, PolicyArn='arn:aws:iam::aws:policy/AmazonSageMakerFullAccess' ) iam_client.attach_role_policy( RoleName=role_name, PolicyArn='arn:aws:iam::aws:policy/AmazonS3FullAccess' );
-
创建 Amazon S3 存储桶以存储您的模型构件
SageMaker Neo 将从 中访问您的模型构件 Amazon S3
-
训练机器学习模型
有关如何使用 训练机器学习模型Amazon SageMaker的更多信息,请参阅使用 训练模型Amazon SageMaker。您可以选择将本地训练的模型直接上传到 Amazon S3 URI 存储桶中。
注意 确保根据您使用的框架正确格式化模型。请参阅 SageMaker Neo 所需的输入数据形状是什么?
如果您还没有模型,请使用
curl
命令从 TensorFlow 的网站获取coco_ssd_mobilenet
模型的本地副本。您刚刚复制的模型是从 COCO 数据集训练的对象检测模型。在 Jupyter 笔记本中键入以下内容: model_zip_filename = './coco_ssd_mobilenet_v1_1.0.zip' !curl http://storage.googleapis.com/download.tensorflow.org/models/tflite/coco_ssd_mobilenet_v1_1.0_quant_2018_06_29.zip \ --output {model_zip_filename}
请注意,此特定示例打包在 .zip 文件中。解压缩此文件并将其重新打包为压缩的 tarfile (
.tar.gz
),然后再在后续步骤中使用。在 Jupyter 笔记本中键入以下内容:# Extract model from zip file !unzip -u {model_zip_filename} model_filename = 'detect.tflite' model_name = model_filename.split('.')[0] # Compress model into .tar.gz so SageMaker Neo can use it model_tar = model_name + '.tar.gz' !tar -czf {model_tar} {model_filename}
-
将训练后的模型上传到 S3 存储桶
在训练机器学习模式后,将其存储在 S3 存储桶中。