Bereiten Sie Ihr Modell für die Bereitstellung vor - Amazon SageMaker KI

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.

Bereiten Sie Ihr Modell für die Bereitstellung vor

In diesem Abschnitt erstellen Sie SageMaker KI- und AWS IoT Client-Objekte, laden ein vortrainiertes Modell für maschinelles Lernen herunter, laden Ihr Modell in Ihren Amazon S3 S3-Bucket hoch, kompilieren Ihr Modell für Ihr Zielgerät mit SageMaker Neo und verpacken Ihr Modell, sodass es mit dem Edge Manager-Agenten bereitgestellt werden kann.

  1. Bibliotheken importieren und Client-Objekte erstellen.

    In diesem Tutorial werden Clients AWS SDK for Python (Boto3) für die Interaktion mit SageMaker KI, Amazon S3 und erstellt AWS IoT.

    Importieren Sie Boto3, geben Sie Ihre Region an und initialisieren Sie die benötigten Client-Objekte, wie im folgenden Beispiel gezeigt:

    import boto3 import json import time AWS_REGION = 'us-west-2'# Specify your Region bucket = 'bucket-name' sagemaker_client = boto3.client('sagemaker', region_name=AWS_REGION) iot_client = boto3.client('iot', region_name=AWS_REGION)

    Definieren Sie Variablen und weisen Sie ihnen die Rolle ARN zu, die Sie für SageMaker KI erstellt haben, und zwar AWS IoT als Zeichenketten:

    # Replace with the role ARN you created for SageMaker sagemaker_role_arn = "arn:aws:iam::<account>:role/*" # Replace with the role ARN you created for AWS IoT. # Note: The name must start with 'SageMaker' iot_role_arn = "arn:aws:iam::<account>:role/SageMaker*"
  2. Ein Machine-Learning-Modell trainieren.

    Weitere Informationen zum Trainieren eines Modells SageMaker für maschinelles Lernen mithilfe von SageMaker KI finden Sie unter Train a Model with Amazon. Sie können Ihr lokal trainiertes Modell optional direkt in einen Amazon-S3-URI-Bucket hochladen.

    Wenn Sie noch kein Modell haben, können Sie für die nächsten Schritte in diesem Tutorial ein vortrainiertes Modell verwenden. Sie können beispielsweise die MobileNet V2-Modelle aus dem TensorFlow Framework speichern. MobileNet V2 ist ein für mobile Anwendungen optimiertes Bildklassifizierungsmodell. Weitere Informationen zu MobileNet V2 finden Sie in der MobileNet GitHub README-Datei.

    Geben Sie Folgendes in Ihr Jupyter Notebook ein, um das vortrainierte V2-Modell zu speichern: MobileNet

    # Save the MobileNet V2 model to local storage import tensorflow as tf model = tf.keras.applications.MobileNetV2() model.save(“mobilenet_v2.h5”)
    Anmerkung
    • Wenn Sie es noch nicht TensorFlow installiert haben, können Sie dies tun, indem Sie Folgendes ausführen pip install tensorflow=2.4

    • Verwenden Sie TensorFlow Version 2.4 oder niedriger für dieses Tutorial.

    Das Modell wird in der Datei mobilenet_v2.h5 gespeichert. Bevor Sie das Modell verpacken, müssen Sie Ihr Modell zunächst mit SageMaker Neo kompilieren. Prüfen Unterstützte Frameworks, Geräte, Systeme und Architekturen Sie, ob Ihre Version von TensorFlow (oder ein anderes Framework Ihrer Wahl) derzeit von SageMaker Neo unterstützt wird.

    SageMaker Neo erfordert, dass Modelle als komprimierte TAR-Datei gespeichert werden. Erstellen Sie ein neues Paket dafür als komprimierte TAR-Datei (*.tar.gz):

    # Package MobileNet V2 model into a TAR file import tarfile tarfile_name='mobilenet-v2.tar.gz' with tarfile.open(tarfile_name, mode='w:gz') as archive: archive.add('mobilenet-v2.h5')
  3. Laden Sie Ihr Modell auf Amazon S3 hoch.

    Sobald Sie ein Machine-Learning-Modell haben, speichern Sie es in einem Amazon-S3-Bucket. Im folgenden Beispiel wird ein AWS CLI Befehl verwendet, um das Modell in den Amazon S3 S3-Bucket hochzuladen, den Sie zuvor in einem Verzeichnis namens models erstellt haben. Geben Sie Folgendes in Ihr Jupyter Notebook ein:

    !aws s3 cp mobilenet-v2.tar.gz s3://{bucket}/models/
  4. Kompilieren Sie Ihr Modell mit SageMaker Neo.

    Kompilieren Sie Ihr Modell für maschinelles Lernen mit SageMaker Neo für ein Edge-Gerät. Sie müssen Ihren Amazon-S3-Bucket-URI, unter dem Sie das trainierte Modell gespeichert haben, das Machine-Learning-Framework, mit dem Sie Ihr Modell trainiert haben, die Form der Eingabe Ihres Modells und Ihr Zielgerät kennen.

    Verwenden Sie für das MobileNet V2-Modell Folgendes:

    framework = 'tensorflow' target_device = 'jetson_nano' data_shape = '{"data":[1,3,224,224]}'

    SageMaker Neo benötigt eine bestimmte Modelleingabeform und ein bestimmtes Modellformat, die auf dem von Ihnen verwendeten Deep-Learning-Framework basieren. Weitere Informationen dazu, wie Sie Ihr Modell speichern können, finden Sie unter Welche Formen der Eingabedaten erwartet SageMaker Neo?. Weitere Informationen zu Geräten und Frameworks, die von Neo unterstützt werden, finden Sie unter Unterstützte Frameworks, Geräte, Systeme und Architekturen.

    Verwenden Sie die CreateCompilationJob API, um einen Kompilierungsjob mit SageMaker Neo zu erstellen. Geben Sie einen Namen für den Kompilierungsauftrag, den SageMaker AI-Rollen-ARN, die Amazon S3 S3-URI, in der Ihr Modell gespeichert ist, die Eingabeform des Modells, den Namen des Frameworks, die Amazon S3 S3-URI, in der SageMaker AI Ihr kompiliertes Modell speichern soll, und Ihr Edge-Geräteziel an.

    # Specify the path where your model is stored model_directory = 'models' s3_model_uri = 's3://{}/{}/{}'.format(bucket, model_directory, tarfile_name) # Store compiled model in S3 within the 'compiled-models' directory compilation_output_dir = 'compiled-models' s3_output_location = 's3://{}/{}/'.format(bucket, compilation_output_dir) # Give your compilation job a name compilation_job_name = 'getting-started-demo' sagemaker_client.create_compilation_job(CompilationJobName=compilation_job_name, RoleArn=sagemaker_role_arn, InputConfig={ 'S3Uri': s3_model_uri, 'DataInputConfig': data_shape, 'Framework' : framework.upper()}, OutputConfig={ 'S3OutputLocation': s3_output_location, 'TargetDevice': target_device}, StoppingCondition={'MaxRuntimeInSeconds': 900})
  5. Erstellen Sie ein Paket für Ihr kompiliertes Modell.

    Bei Paketierungsaufträgen werden SageMaker NEO-kompilierte Modelle verwendet und alle Änderungen vorgenommen, die für die Bereitstellung des Modells mit der Inferenz-Engine, dem Edge Manager-Agent, erforderlich sind. Um Ihr Modell zu verpacken, erstellen Sie einen Edge-Paketierungsauftrag mit der create_edge_packaging API oder der SageMaker KI-Konsole.

    Sie müssen den Namen angeben, den Sie für Ihren Neo-Kompilierungsauftrag verwendet haben, einen Namen für den Paketerstellungsauftrag, eine Rollen-ARN (siehe den Abschnitt Einrichten), einen Namen für das Modell, eine Modellversion und den Amazon-S3-Bucket-URI für die Ausgabe des Paketerstellungsauftrags. Beachten Sie, dass bei den Namen von Edge-Manager-Paketerstellungsaufträgen die Groß- und Kleinschreibung wichtig ist. Im Folgenden finden Sie ein Beispiel dafür, wie Sie mit der API erstellen einen Paketerstellungsauftrag.

    edge_packaging_name='edge-packaging-demo' model_name="sample-model" model_version="1.1"

    Definieren Sie den Amazon-S3-URI, in dem Sie das verpackte Modell speichern möchten.

    # Output directory where you want to store the output of the packaging job packaging_output_dir = 'packaged_models' packaging_s3_output = 's3://{}/{}'.format(bucket, packaging_output_dir)

    Verwenden Sie CreateEdgePackagingJob zur Paketerstellung für Ihr mit NEO kompiliertes Modell. Geben Sie einen Namen für Ihren Edge-Paketerstellungsauftrag und den Namen an, den Sie für Ihren Kompilierungsauftrag angegeben haben (in diesem Beispiel wurde dieser in der compilation_job_name Variablen gespeichert). Geben Sie außerdem einen Namen für Ihr Modell, eine Version für Ihr Modell (damit Sie den Überblick darüber behalten, welche Modellversion Sie verwenden) und die S3-URI an, unter der SageMaker KI das verpackte Modell speichern soll.

    sagemaker_client.create_edge_packaging_job( EdgePackagingJobName=edge_packaging_name, CompilationJobName=compilation_job_name, RoleArn=sagemaker_role_arn, ModelName=model_name, ModelVersion=model_version, OutputConfig={ "S3OutputLocation": packaging_s3_output } )