本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
先決條件
SageMaker Neo 是一項功能,讓您只要訓練機器學習模型一次,就能在雲端和邊緣的任何位置執行該模型。您必須先設定幾個先決條件,才能使用 Neo 編譯和最佳化模型。您必須安裝必要的 Python 程式庫、設定您的 AWS 登入資料、建立具有必要許可的 IAM 角色,以及設定用於儲存模型成品的 S3 儲存貯體。您還必須準備好經過訓練的機器學習模型。該精靈會引導您完成設定:
-
安裝 Boto3
如果您要在邊緣裝置上執行這些命令,則必須安裝 適用於 Python (Boto3) 的 AWS SDK。在 Python 環境 (最好是虛擬環境) 中,在邊緣裝置的終端或 Jupyter 筆記本執行個體中本機執行以下操作:
-
設定 AWS 登入資料
您必須在裝置上設定 Amazon Web Services 憑證,以執行 SDK for Python (Boto3)。根據預設, AWS 登入資料應存放在邊緣裝置上的
~/.aws/credentials檔案中。在憑證檔案中,您應該會看到兩個環境變數:aws_access_key_id和aws_secret_access_key。在您的終端機中執行:
$ more ~/.aws/credentials [default] aws_access_key_id =YOUR_ACCESS_KEYaws_secret_access_key =YOUR_SECRET_KEYAWS 一般參考指南提供有關如何獲得必要
aws_access_key_id和aws_secret_access_key的指示。如需如何在裝置上設定憑證的詳細資訊,請參閱 Boto3文件。 -
設定 IAM 角色並連接政策。
Neo 需要存取您的 S3 儲存貯體 URI。建立 IAM 角色以執行 SageMaker AI 且該 IAM 角色具有存取 S3 URI 的許可。您可以使用適用於 Python 的 SDK (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 CLI或透過 AWS API 建立 IAM 角色的詳細資訊,請參閱在 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 AI 和 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 AI 訓練機器學習模型的詳細資訊,請參閱使用 Amazon SageMaker AI 訓練模型。您可以選擇性地將本機訓練的模型直接上傳到 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 儲存貯體中。