

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.

# Vorbereiten Ihres Modells für die Bereitstellung
<a name="edge-getting-started-step2"></a>

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 für 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*"
   ```

1. **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](https://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works-training.html). 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](https://github.com/tensorflow/models/tree/master/research/slim/nets/mobilenet).

   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](neo-supported-devices-edge.md) 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 (\$1.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')
   ```

1. **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/
   ```

1. **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?](neo-compilation-preparing-model.md#neo-job-compilation-expected-inputs). Weitere Informationen zu Geräten und Frameworks, die von Neo unterstützt werden, finden Sie unter [Unterstützte Frameworks, Geräte, Systeme und Architekturen](neo-supported-devices-edge.md).

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

1. **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](edge-getting-started-step1.md)), 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
                           }
                       )
   ```