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

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

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

AWS Graviton は、 によって設計された一連の ARM ベースのプロセッサです AWS。このプロセッサは、x86 ベースのプロセッサよりもエネルギー効率に優れ、コスト対パフォーマンス比も向上しています。Amazon SageMaker AI には Graviton ベースのインスタンスが用意されているため、これらの高度なプロセッサを推論のニーズに合わせて活用できます。

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

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

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

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

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

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

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

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

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

docker inspect deep-learning-container-uri

応答 "Architecture": "arm64" は、そのイメージが ARM アーキテクチャをサポートしていることを示しています。docker push コマンドを使用してイメージを Amazon ECR にプッシュできます。詳細については、「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 AI モデルを作成する

CreateModel API を呼び出して SageMaker AI モデルを作成します。

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 } ] )

エンドポイントを作成する

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

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