本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Neo on Edge 裝置入門
本 Amazon SageMaker Neo 入門指南說明如何編譯模型、設定裝置以及如何在裝置上進行推論。大多數程式碼範例使用 Boto3。我們提供在適用情 AWS CLI 況下使用的命令,以及如何滿足 Neo 先決條件的說明。
注意
您可以在本機電腦、 SageMaker 筆記本內、 SageMaker Studio 或邊緣裝置上執行下列程式碼片段 (視您的邊緣裝置而定)。設定類似;不過,如果您在 SageMaker 筆記本執行個體或 SageMaker Studio 工作階段中執行本指南,則有兩個主要例外:
-
您不需要安裝 Boto3。
-
您不需要新增
‘AmazonSageMakerFullAccess’
IAM 政策
本指南假設您正在邊緣裝置上執行下列指示。
必要條件
-
安裝 Boto3
如果您要在邊緣裝置上執行這些命令,則必須安裝 AWS SDK for Python (Boto3)。在 Python 環境 (最好是虛擬環境) 中,在邊緣裝置的終端或 Jupyter 筆記本執行個體中本機執行以下操作:
-
設定 AWS 身份證明
您必須在裝置上設定 Amazon Web Services 憑證,以執行 SDK for Python (Boto3)。根據預設,認 AWS 證應儲存在 Edge 裝置
~/.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。建立可執行 SageMaker且具有存取 S3 URI 權限的 IAM 角色。您可以使用適用 SDK for Python (Boto3)、主控台或 AWS CLI來建立 IAM 角色。下列範例使用了 SDK for Python (Boto3) 來說明如何建立 IAM 角色:
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'
如需如何使用主控台或透過 AWS API 建立 IAM 角色的詳細資訊 AWS CLI,請參閱在您的 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 Resource Name (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 訪問您的模型成品
-
訓練機器學習模型
如 SageMaker需有關如何使用 Amazon 訓練機器學習模型的詳細資訊,請參閱使用 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 儲存貯體中。