翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
エッジデバイスでの Neo のご利用開始にあたって
Amazon SageMaker Neo の開始方法に関するこのガイドでは、モデルをコンパイルし、デバイスをセットアップし、デバイスで推論を行う方法を示します。ほとんどのコード例では Boto3 が使われています。 AWS CLI 該当する場合は を使用してコマンドと、Neo の前提条件を満たす方法の手順を提供します。
注記
次のコードスニペットは、ローカルマシン、 SageMaker ノートブック内、 SageMaker Studio 内、またはエッジデバイス上の (エッジデバイスによって異なります) で実行できます。セットアップは似ていますが、 SageMaker ノートブックインスタンスまたは SageMaker Studio セッション内でこのガイドを実行する場合、主に 2 つの例外があります。
-
Boto3 をインストールする必要はありません。
-
‘AmazonSageMakerFullAccess’
IAM ポリシーを追加する必要はありません。
このガイドでは、エッジデバイスで次の手順を実行することを前提としています。
前提条件
-
Boto3 をインストールする
エッジデバイスで以下のコマンドを実行する場合は、 AWS SDK for Python (Boto3)をインストールする必要があります。Python 環境 (できれば仮想環境) で、エッジデバイスのターミナルまたは Jupyter ノートブックインスタンス内で以下をローカルに実行します。
-
AWS 認証情報の設定
SDK for Python (Boto3) を実行するには、デバイスに Amazon Web Services の認証情報を設定する必要があります。デフォルトでは、 AWS 認証情報は
~/.aws/credentials
エッジデバイスの ファイルに保存する必要があります。認証情報ファイル内にはaws_access_key_id
とaws_secret_access_key
の 2 つの環境変数があります。ターミナルで以下を実行します。
$ 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 へのアクセスが必要です。S3 URI へのアクセス許可を持つ を実行できる SageMaker IAM ロールを作成します。IAM ロールは、SDK for Python (Boto3)、コンソールまたは AWS CLIを使って作成できます。次の例は、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 リソースネーム (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 ファイルにパッケージ化されていることに注意してください。このファイルを解凍し、圧縮された tar ファイル (
.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 バケットに保存します。