Migrieren Sie den Inferenz-Workload von x86 nach Graviton AWS - 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 nach Graviton AWS

AWS Graviton ist eine Reihe von ARM-basierten Prozessoren, die von entwickelt wurden. AWS Sie sind energieeffizienter als Prozessoren auf x86-Basis und haben 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 Inference-Workloads von Instances auf x86-Basis zu Instances auf Graviton-Basis migrieren, indem Sie entweder ARM-kompatible Container-Images oder Container-Images mit mehreren Architekturen verwenden. In diesem Handbuch wird davon ausgegangen, dass Sie entweder AWS Deep-Learning-Container-Images oder eigene ARM-kompatible Container-Images verwenden. 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. Übertragen Sie Container-Images an Amazon Elastic Container Registry (Amazon ECR), eine 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 den Platzhaltertext des Benutzers in den Code-Beispielen durch Ihre eigenen Informationen.

Container-Images nach Amazon ECR verschieben

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

docker inspect deep-learning-container-uri

Die Antwort "Architecture": "arm64" weist darauf hin, dass das Image die ARM-Architektur unterstützt. Sie können es mit dem docker push Befehl nach Amazon ECR verschieben. 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 sondern auch eine Manifest-Liste an Amazon ECR verschieben. Eine Manifest-Liste ermöglicht die verschachtelte Aufnahme anderer Image-Manifeste. Dabei wird jedes enthaltene Image nach Architektur, Betriebssystem und weiteren Plattformattributen angegeben. Im folgenden Beispiel wird eine Manifest-Liste erstellt und nach Amazon ECR verschoben.

  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 Manifest-Listen an Amazon ECR finden Sie unter Einführung in Multi-Architektur-Container-Images für Amazon ECR und Übertragen eines Multi-Architektur-Images.

Erstellen Sie ein Modell SageMaker

Erstellen Sie ein SageMaker Modell, indem Sie die CreateModelAPI aufrufen.

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 )

Erstellen Sie eine Endpunktkonfiguration

Erstellen Sie eine Endpunktkonfiguration, indem Sie die CreateEndpointConfig API aufrufen. 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

Stellen Sie einen Endpunkt her, indem Sie die CreateEndpoint API aufrufen.

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