Migrieren Sie den Inferenz-Workload von x86 auf AWS Graviton - Amazon SageMaker

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Migrieren Sie den Inferenz-Workload von x86 auf AWS Graviton

AWS Graviton ist eine Reihe von Prozessoren, ARM die von entwickelt wurden AWS. Sie sind energieeffizienter als x86-basierte Prozessoren und bieten ein überzeugendes Preis-Leistungs-Verhältnis. Amazon SageMaker bietet Graviton-basierte Instances an, sodass Sie diese fortschrittlichen Prozessoren für Ihre Inferenzanforderungen nutzen können.

Sie können Ihre vorhandenen Inferenz-Workloads von x86-basierten Instances auf Graviton-basierte Instances migrieren, indem Sie entweder kompatible Container-Images oder Container-Images mit mehreren Architekturen verwenden. ARM In diesem Handbuch wird davon ausgegangen, dass Sie entweder AWS Deep-Learning-Container-Images oder Ihre eigenen ARM kompatiblen Container-Images. Weitere Informationen dazu, wie Sie eigene Images erstellen können, finden Sie unter Image erstellen.

Im Großen und Ganzen besteht die Migration von Inference-Workloads von Instances auf x86-Basis zu Instances auf Graviton-Basis aus vier Schritten:

  1. Container-Images an Amazon Elastic Container Registry (AmazonECR) übertragen, ein AWS verwaltete Container-Registry.

  2. Erstellen Sie ein SageMaker Modell.

  3. Eine Endpunktkonfiguration erstellen.

  4. Endpunkt herstellen.

In den folgenden Abschnitten dieses Handbuchs finden Sie weitere Einzelheiten zu den o.g. Schritten. Ersetzen Sie das user placeholder text in den Codebeispielen durch Ihre eigenen Informationen.

Container-Bilder an Amazon senden ECR

Sie können Ihre Container-Images ECR mit dem zu Amazon übertragen AWS CLI. Wenn Sie ein ARM kompatibles Image verwenden, stellen Sie sicher, dass es die folgende ARM Architektur unterstützt:

docker inspect deep-learning-container-uri

Die Antwort "Architecture": "arm64" weist darauf hin, dass das Image ARM Architektur unterstützt. Sie können es ECR mit dem docker push Befehl an Amazon senden. Weitere Informationen finden Sie unter Ein Docker-Image verschieben.

Container-Images mit mehreren Architekturen sind im Grunde eine Reihe von Container-Images, die verschiedene Architekturen oder Betriebssysteme unterstützen und auf die Sie mit einem gemeinsamen Manifest-Namen verweisen können. Wenn Sie Container-Images mit mehreren Architekturen verwenden, müssen Sie nicht nur die Images an Amazon übertragenECR, sondern auch eine Manifestliste an Amazon ECR senden. Eine Manifest-Liste ermöglicht die verschachtelte Aufnahme anderer Image-Manifeste. Dabei wird jedes enthaltene Image nach Architektur, Betriebssystem und weiteren Plattformattributen angegeben. Das folgende Beispiel erstellt eine Manifestliste und überträgt sie an AmazonECR.

  1. Eine Manifest-Liste erstellen.

    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. Kommentieren Sie die Manifest-Liste so, dass sie korrekt angibt, welches Image für welche Architektur bestimmt ist.

    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. Verschieben Sie das Manifest.

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

Weitere Informationen zum Erstellen und Übertragen von Manifestlisten an Amazon ECR finden Sie unter Einführung von Multiarchitektur-Container-Images für Amazon ECR und Pushing eines Multiarchitektur-Images.

Erstellen Sie ein Modell SageMaker

Erstellen Sie ein SageMaker Modell, indem Sie die aufrufen 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 )

Endpunktkonfiguration erstellen

Erstellen Sie eine Endpunktkonfiguration, indem Sie die aufrufen CreateEndpointConfigAPI. Eine Liste von Instances auf Graviton-Basis finden Sie unter für Datenverarbeitung optimierte Instances.

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

Endpunkt herstellen

Erstellen Sie einen Endpunkt, indem Sie den aufrufen CreateEndpointAPI.

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