エッジデバイスでの Neo のご利用開始にあたって - Amazon SageMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

エッジデバイスでの Neo のご利用開始にあたって

Amazon SageMaker Neo の開始方法に関するこのガイドでは、モデルをコンパイルし、デバイスをセットアップし、デバイスで推論を行う方法を示します。ほとんどのコード例では Boto3 が使われています。 AWS CLI 該当する場合は を使用してコマンドと、Neo の前提条件を満たす方法の手順を提供します。

注記

次のコードスニペットは、ローカルマシン、 SageMaker ノートブック内、 SageMaker Studio 内、またはエッジデバイス上の (エッジデバイスによって異なります) で実行できます。セットアップは似ていますが、 SageMaker ノートブックインスタンスまたは SageMaker Studio セッション内でこのガイドを実行する場合、主に 2 つの例外があります。

  • Boto3 をインストールする必要はありません。

  • ‘AmazonSageMakerFullAccess’ IAM ポリシーを追加する必要はありません。

このガイドでは、エッジデバイスで次の手順を実行することを前提としています。

前提条件

  1. Boto3 をインストールする

    エッジデバイスで以下のコマンドを実行する場合は、 AWS SDK for Python (Boto3)をインストールする必要があります。Python 環境 (できれば仮想環境) で、エッジデバイスのターミナルまたは Jupyter ノートブックインスタンス内で以下をローカルに実行します。

    Terminal
    pip install boto3
    Jupyter Notebook
    !pip install boto3
  2. AWS 認証情報の設定

    SDK for Python (Boto3) を実行するには、デバイスに Amazon Web Services の認証情報を設定する必要があります。デフォルトでは、 AWS 認証情報は~/.aws/credentialsエッジデバイスの ファイルに保存する必要があります。認証情報ファイル内には aws_access_key_idaws_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_idaws_secret_access_key を取得する手順があります。デバイスで認証情報を設定する方法の詳細については、Boto3 のドキュメントを参照してください。

  3. 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' );
  4. モデルアーティファクトを保存する Amazon S3 バケットを作成する

    SageMaker Neo が Amazon S3 からモデルアーティファクトにアクセスする

    Boto3
    # Create an S3 client s3_client = boto3.client('s3', region_name=AWS_REGION) # Name buckets bucket='name-of-your-bucket' # Check if bucket exists if boto3.resource('s3').Bucket(bucket) not in boto3.resource('s3').buckets.all(): s3_client.create_bucket( Bucket=bucket, CreateBucketConfiguration={ 'LocationConstraint': AWS_REGION } ) else: print(f'Bucket {bucket} already exists. No action needed.')
    CLI
    aws s3 mb s3://'name-of-your-bucket' --region specify-your-region # Check your bucket exists aws s3 ls s3://'name-of-your-bucket'/
  5. 機械学習モデルをトレーニングする

    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}
  6. トレーニング済みモデルを S3 バケットにアップロードする

    機械学習モデルをトレーニングしたら、それを S3 バケットに保存します。

    Boto3
    # Upload model s3_client.upload_file(Filename=model_filename, Bucket=bucket, Key=model_filename)
    CLI

    your-model-filenameyour-S3-bucket をお使いの S3 バケットの名前に置き換えます。

    aws s3 cp your-model-filename s3://your-S3-bucket