推論ワークロードを x86 から に移行する AWS Graviton - Amazon SageMaker

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

推論ワークロードを x86 から に移行する AWS Graviton

AWS Graviton は、 によって設計された一連の ARMベースのプロセッサです。 AWS。 これらは x86 ベースのプロセッサよりも省エネ性が高く、魅力的な価格パフォーマンス比を提供します。Amazon SageMaker は Graviton ベースのインスタンスを提供しているため、これらの高度なプロセッサを推論のニーズに合わせて活用できます。

ARM 互換性のあるコンテナイメージまたはマルチアーキテクチャコンテナイメージを使用して、既存の推論ワークロードを x86 ベースのインスタンスから Graviton ベースのインスタンスに移行できます。このガイドでは、 を使用していることを前提としています。 AWS Deep Learning コンテナイメージ、または独自のARM互換性のあるコンテナイメージ。独自のイメージを構築する方法の詳細については、「イメージの構築」を参照してください。

大まかに説明すると、x86 ベースのインスタンスから Graviton ベースのインスタンスへの推論ワークロードの移行は、次の 4 つのステップから成ります。

  1. コンテナイメージを Amazon Elastic Container Registry (Amazon ECR) にプッシュする AWS マネージドコンテナレジストリ。

  2. SageMaker モデルを作成します。

  3. エンドポイント設定を作成する

  4. エンドポイントを作成します。

このガイドの以下のセクションでは、上記の手順に関する詳細について説明します。を置き換える user placeholder text 独自の情報を含むコード例の 。

コンテナイメージを Amazon にプッシュする ECR

コンテナイメージは、 ECRを使用して Amazon にプッシュできます。 AWS CLI。 ARM 互換性のあるイメージを使用する場合は、それがARMアーキテクチャをサポートしていることを確認します。

docker inspect deep-learning-container-uri

レスポンスは、イメージがARMアーキテクチャをサポート"Architecture": "arm64"していることを示します。docker push コマンドECRを使用して Amazon にプッシュできます。詳細については、「Docker イメージをプッシュする」を参照してください。

マルチアーキテクチャコンテナイメージは基本的に、異なるアーキテクチャやオペレーティングシステムをサポートするコンテナイメージのセットで、共通のマニフェスト名で参照できます。マルチアーキテクチャコンテナイメージを使用している場合は、イメージを Amazon にプッシュするだけでなくECR、マニフェストリストを Amazon にプッシュする必要がありますECR。マニフェストリストを使用すると、他のイメージマニフェストを入れ子構造で包含できます。マニフェストに含まれる各イメージは、アーキテクチャ、オペレーティングシステム、その他のプラットフォーム属性によって指定されます。次の例では、マニフェストリストを作成し、Amazon にプッシュしますECR。

  1. マニフェストファイルを作成します。

    docker manifest create aws-account-id.dkr.ecr.aws-region.amazonaws.com/my-repository \ aws-account-id.dkr.ecr.aws-account-id.amazonaws.com/my-repository:amd64 \ aws-account-id.dkr.ecr.aws-account-id.amazonaws.com/my-repository:arm64 \
  2. イメージとアーキテクチャの組み合わせを特定できるようにマニフェストリストに注釈を付けます。

    docker manifest annotate --arch arm64 aws-account-id.dkr.ecr.aws-region.amazonaws.com/my-repository \ aws-account-id.dkr.ecr.aws-region.amazonaws.com/my-repository:arm64
  3. マニフェストをプッシュします。

    docker manifest push aws-account-id.dkr.ecr.aws-region.amazonaws.com/my-repository

マニフェストリストの作成と Amazon へのプッシュの詳細についてはECR、「Amazon のマルチアーキテクチャコンテナイメージECRの紹介」および「マルチアーキテクチャイメージのプッシュ」を参照してください。

SageMaker モデルを作成する

を呼び出して SageMaker モデルを作成しますCreateModelAPI。

import boto3 from sagemaker import get_execution_role aws_region = "aws-region" sagemaker_client = boto3.client("sagemaker", region_name=aws_region) role = get_execution_role() sagemaker_client.create_model( ModelName = "model-name", PrimaryContainer = { "Image": "deep-learning-container-uri", "ModelDataUrl": "model-s3-location", "Environment": { "SAGEMAKER_PROGRAM": "inference.py", "SAGEMAKER_SUBMIT_DIRECTORY": "inference-script-s3-location", "SAGEMAKER_CONTAINER_LOG_LEVEL": "20", "SAGEMAKER_REGION": aws_region, } }, ExecutionRoleArn = role )

エンドポイント設定の作成

を呼び出してエンドポイント設定CreateEndpointConfigを作成しますAPI。Graviton ベースのインスタンスのリストについては、「コンピュート最適化インスタンス」をご覧ください。

sagemaker_client.create_endpoint_config( EndpointConfigName = "endpoint-config-name", ProductionVariants = [ { "VariantName": "variant-name", "ModelName": "model-name", "InitialInstanceCount": 1, "InstanceType": "ml.c7g.xlarge", # Graviton-based instance } ] )

エンドポイントの作成

を呼び出してエンドポイントを作成しますCreateEndpointAPI。

sagemaker_client.create_endpoint( EndpointName = "endpoint-name", EndpointConfigName = "endpoint-config-name" )