

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.

# Voraussetzungen für die Verwendung von Amazon SageMaker Inference Recommender
<a name="inference-recommender-prerequisites"></a>

Bevor Sie Amazon SageMaker Inference Recommender verwenden können, müssen Sie die erforderlichen Schritte ausführen. Als Beispiel zeigen wir, wie Sie ein vortrainiertes Modell PyTorch (v1.7.1) ResNet -18 für beide Arten von Amazon SageMaker Inference Recommender-Empfehlungsjobs verwenden können. Die gezeigten Beispiele verwenden das AWS SDK für Python (Boto3).

**Anmerkung**  
Die folgenden Codebeispiele verwenden Python. Entfernen Sie das `!` Präfixzeichen, wenn Sie eines der folgenden Codebeispiele in Ihrem Terminal ausführen oder AWS CLI.
Sie können die folgenden Beispiele mit dem Python 3-Kernel (TensorFlow 2.6 Python 3.8 CPU-optimiert) in einem Amazon SageMaker Studio-Notebook ausführen. Weitere Informationen über Studio finden Sie unter [Amazon SageMaker Studio](studio-updated.md).

1. **Erstellen Sie eine IAM-Rolle für Amazon SageMaker AI.**

   Erstellen Sie eine IAM-Rolle für Amazon SageMaker AI, der die `AmazonSageMakerFullAccess` IAM-verwaltete Richtlinie angehängt ist.

1. **Einrichten Ihrer Umgebung**

   Importieren Sie Abhängigkeiten und erstellen Sie Variablen für Ihre AWS-Region, Ihre SageMaker KI-IAM-Rolle (aus Schritt 1) und den SageMaker AI-Client.

   ```
   !pip install --upgrade pip awscli botocore boto3  --quiet
   from sagemaker import get_execution_role, Session, image_uris
   import boto3
   
   region = boto3.Session().region_name
   role = get_execution_role()
   sagemaker_client = boto3.client("sagemaker", region_name=region)
   sagemaker_session = Session()
   ```

1. **(Optional) Überprüfen Sie bestehende Modelle, die von Inference Recommender bewertet wurden.**

   Inference Recommender vergleicht Modelle beliebter Modellzoos. Inference Recommender unterstützt Ihr Modell, auch wenn es noch nicht einem Benchmarking unterzogen wurde.

   `ListModelMetaData` wird verwendet, um ein Antwortobjekt abzurufen, das die Domain-, Framework-, Aufgaben- und Modellnamen von Modellen für Machine Learning auflistet, die in gängigen Modellzoos zu finden sind.

   In späteren Schritten verwenden Sie die Domain, das Framework, die Framework-Version, die Aufgabe und den Modellnamen, um sowohl ein Inferenz-Docker-Image auszuwählen als auch Ihr Modell bei SageMaker Model Registry zu registrieren. Im Folgenden wird veranschaulicht, wie Modellmetadaten mit SDK for Python (Boto3) aufgelistet werden: 

   ```
   list_model_metadata_response=sagemaker_client.list_model_metadata()
   ```

   Die Ausgabe umfasst Modellzusammenfassungen (`ModelMetadataSummaries`) und Antwortmetadaten (`ResponseMetadata`), die dem folgenden Beispiel ähneln:

   ```
   {
       'ModelMetadataSummaries': [{
               'Domain': 'NATURAL_LANGUAGE_PROCESSING',
               'Framework': 'PYTORCH:1.6.0',
                'Model': 'bert-base-cased',
                'Task': 'FILL_MASK'
                },
               {
                'Domain': 'NATURAL_LANGUAGE_PROCESSING',
                'Framework': 'PYTORCH:1.6.0',
                'Model': 'bert-base-uncased',
                'Task': 'FILL_MASK'
                },
               {
               'Domain': 'COMPUTER_VISION',
                'Framework': 'MXNET:1.8.0',
                'Model': 'resnet18v2-gluon',
                'Task': 'IMAGE_CLASSIFICATION'
                },
                {
                'Domain': 'COMPUTER_VISION',
                'Framework': 'PYTORCH:1.6.0',
                'Model': 'resnet152',
                'Task': 'IMAGE_CLASSIFICATION'
                }],
       'ResponseMetadata': {
                               'HTTPHeaders': {
                               'content-length': '2345',
                               'content-type': 'application/x-amz-json-1.1',
                               'date': 'Tue, 19 Oct 2021 20:52:03 GMT',
                               'x-amzn-requestid': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
                             },
       'HTTPStatusCode': 200,
       'RequestId': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
       'RetryAttempts': 0
       }
   }
   ```

   Für diese Demo verwenden wir ein PyTorch (v1.7.1) ResNet -18-Modell, um die Bildklassifizierung durchzuführen. Im folgenden Python-Codebeispiel werden das Framework, die Framework-Version, die Domain und die Aufgabe zur späteren Verwendung in Variablen gespeichert:

   ```
   # ML framework details
   framework = 'pytorch'
   framework_version = '1.7.1'
   
   # ML model details
   ml_domain = 'COMPUTER_VISION'
   ml_task = 'IMAGE_CLASSIFICATION'
   ```

1. **Laden Sie Ihr Modell für Machine Learning auf Amazon S3 hoch.**

   Verwenden Sie dieses PyTorch (v1.7.1) ResNet -18-Modell, wenn Sie kein vortrainiertes Modell für maschinelles Lernen haben:

   ```
   # Optional: Download a sample PyTorch model
   import torch
   from torchvision import models, transforms, datasets
   
   # Create an example input for tracing
   image = torch.zeros([1, 3, 256, 256], dtype=torch.float32)
   
   # Load a pretrained resnet18 model from TorchHub
   model = models.resnet18(pretrained=True)
   
   # Tell the model we are using it for evaluation (not training). Note this is required for Inferentia compilation.
   model.eval()
   model_trace = torch.jit.trace(model, image)
   
   # Save your traced model
   model_trace.save('model.pth')
   ```

   Laden Sie ein Beispiel für ein Inferenzskript `inference.py` herunter. Erstellen Sie ein `code` Verzeichnis und verschieben Sie das Inferenzskript in das `code` Verzeichnis.

   ```
   # Download the inference script
   !wget https://aws-ml-blog-artifacts.s3.us-east-2.amazonaws.com/inference.py
   
   # move it into a code/ directory
   !mkdir code
   !mv inference.py code/
   ```

   Amazon SageMaker AI erfordert, dass vortrainierte Modelle für maschinelles Lernen als komprimierte TAR-Datei (`*.tar.gz`) verpackt werden. Komprimieren Sie Ihr Modell und Ihr Inferenzskript, um diese Anforderung zu erfüllen:

   ```
   !tar -czf test.tar.gz model.pth code/inference.py
   ```

   Wenn Ihr Endpunkt bereitgestellt wird, werden die Dateien im Archiv `/opt/ml/model/` auf den Endpunkt extrahiert.

   Nachdem Sie Ihr Modell und die Modellartefakte als `.tar.gz` Datei komprimiert haben, laden Sie sie in Ihren Amazon S3-Bucket hoch. Das folgende Beispiel veranschaulicht, wie Sie Ihr Modell mit der AWS CLI auf Amazon S3 hochladen können:

   ```
   !aws s3 cp test.tar.gz s3://{{{your-bucket}}}/models/
   ```

1. **Wählen Sie ein vorgefertigtes Docker-Inferenz-Image aus oder erstellen Sie Ihr eigenes Inference-Docker-Image.**

   SageMaker AI stellt Container für seine integrierten Algorithmen und vorgefertigte Docker-Images für einige der gängigsten Frameworks für maschinelles Lernen wie Apache,, und MXNet TensorFlow Chainer bereit. PyTorch Eine vollständige Liste der verfügbaren SageMaker KI-Images finden Sie unter [Verfügbare Deep Learning Containers Learning-Container-Images](https://github.com/aws/deep-learning-containers/blob/master/available_images.md).

   Wenn keiner der vorhandenen SageMaker KI-Container Ihren Anforderungen entspricht und Sie keinen eigenen Container haben, erstellen Sie ein neues Docker-Image. Weitere Informationen zum Erstellen eines Docker-Image finden Sie unter [Container mit benutzerdefiniertem Inferenzcode](your-algorithms-inference-main.md).

   Im Folgenden wird gezeigt, wie Sie mit dem SageMaker Python-SDK ein Inferenzbild der PyTorch Version 1.7.1 abrufen:

   ```
   from sagemaker import image_uris
   
   ## Uncomment and replace with your own values if you did not define  
   ## these variables a previous step.
   #framework = 'pytorch'
   #framework_version = '1.7.1'
   
   # Note: you can use any CPU-based instance here, 
   # this is just to set the arch as CPU for the Docker image
   instance_type = 'ml.m5.2xlarge' 
   
   image_uri = image_uris.retrieve(framework, 
                                   region, 
                                   version=framework_version, 
                                   py_version='py3', 
                                   instance_type=instance_type, 
                                   image_scope='inference')
   ```

   Eine Liste der verfügbaren SageMaker AI-Instances finden Sie unter [Amazon SageMaker AI-Preise](https://aws.amazon.com/sagemaker/pricing/).

1. **Erstellen Sie ein Beispiel-Payload-Archiv.**

   Erstellen Sie ein Archiv, das einzelne Dateien enthält, die das Lasttest-Tool an Ihre SageMaker KI-Endpunkte senden kann. Ihr Inferenzcode muss in der Lage sein, die Dateiformate aus der Beispiel-Payload zu lesen.

   Im Folgenden wird ein JPG-Bild heruntergeladen, das in diesem Beispiel in einem späteren Schritt für das Modell ResNet -18 verwendet wird.

   ```
   !wget https://cdn.pixabay.com/photo/2020/12/18/05/56/flowers-5841251_1280.jpg
   ```

   Komprimieren Sie die Beispiel-Payload als Tarball:

   ```
   !tar -cvzf payload.tar.gz flowers-5841251_1280.jpg
   ```

   Laden Sie die Beispielnutzlast auf Amazon S3 hoch und notieren Sie sich die Amazon-S3-URI:

   ```
   !aws s3 cp payload.tar.gz s3://{bucket}/models/
   ```

   Sie benötigen den Amazon-S3-URI in einem späteren Schritt. Speichern Sie ihn daher in einer Variablen:

   ```
   bucket_prefix='models'
   bucket = {{'<your-bucket-name>'}} # Provide the name of your S3 bucket
   payload_s3_key = f"{bucket_prefix}/payload.tar.gz"
   sample_payload_url= f"s3://{bucket}/{payload_s3_key}"
   ```

1. **Bereiten Sie Ihre Modelleingaben für den Job mit den Empfehlungen vor**

   Für die letzte Voraussetzung haben Sie zwei Möglichkeiten, Ihre Modelleingabe vorzubereiten. Sie können Ihr Modell entweder bei SageMaker Model Registry registrieren, das Sie zum Katalogisieren von Modellen für die Produktion verwenden können, oder Sie können ein SageMaker KI-Modell erstellen und es vor `ContainerConfig` Ort angeben, wenn Sie einen Empfehlungsauftrag erstellen. Die erste Option eignet sich am besten, wenn Sie die Funktionen von [Model Registry](https://docs.aws.amazon.com/sagemaker/latest/dg/model-registry.html) nutzen möchten, z. B. die Verwaltung von Modellversionen und die Automatisierung der Modellbereitstellung. Die zweite Option ist ideal, wenn Sie schnell loslegen möchten. Für die erste Option fahren Sie mit Schritt 7 fort. Für die zweite Option überspringen Sie Schritt 7 und fahren Sie mit Schritt 8 fort.

1. **Option 1: Registrieren Sie Ihr Modell in der Modellregistrierung**

   Mit SageMaker Model Registry können Sie Modelle für die Produktion katalogisieren, Modellversionen verwalten, Metadaten (wie Trainingsmetriken) mit einem Modell verknüpfen, den Genehmigungsstatus eines Modells verwalten, Modelle für die Produktion bereitstellen und die Modellbereitstellung mit CI/CD automatisieren.

   Wenn Sie SageMaker Model Registry verwenden, um Ihre Modelle nachzuverfolgen und zu verwalten, werden sie als versioniertes Modellpaket innerhalb von Modellpaketgruppen dargestellt. Modellpakete ohne Version sind nicht Teil einer Modellgruppe. Modellpaketgruppen enthalten mehrere Versionen oder Iterationen eines Modells. Sie müssen zwar nicht für jedes Modell in der Registrierung erstellt werden, sie helfen jedoch dabei, verschiedene Modelle zu organisieren, die alle demselben Zweck dienen, und ermöglichen eine automatische Versionsverwaltung.

   Um Amazon SageMaker Inference Recommender verwenden zu können, benötigen Sie ein versioniertes Modellpaket. Sie können ein versioniertes Modellpaket programmgesteuert mit AWS SDK für Python (Boto3) oder mit Amazon SageMaker Studio Classic erstellen. Um ein versioniertes Modellpaket programmgesteuert zu erstellen, erstellen Sie zunächst eine Modellpaketgruppe mit der `CreateModelPackageGroup` API. Erstellen Sie als Nächstes mithilfe der `CreateModelPackage` API ein Modellpaket. Durch den Aufruf dieser Methode wird ein versioniertes Modellpaket erstellt.

   Unter [Erstellen einer Modellgruppe](model-registry-model-group.md) und [Registrieren Sie eine Modellversion](model-registry-version.md) finden Sie detaillierte Anweisungen zum programmgesteuerten und interaktiven Erstellen einer Modellpaketgruppe bzw. zum Erstellen eines versionierten Modellpakets mit dem AWS SDK für Python (Boto3) und Amazon Studio Classic. SageMaker 

   Das folgende Codebeispiel zeigt, wie Sie ein versioniertes Modellpaket mit dem AWS SDK für Python (Boto3) erstellen.
**Anmerkung**  
Sie müssen das Modellpaket nicht genehmigen, um einen Inference Recommender-Job zu erstellen.

   1. **Erstellen einer Modellpaketgruppe**

      Erstellen Sie eine Modellpaketgruppe mit der `CreateModelPackageGroup` API. Geben Sie einen Namen für die Modellpaketgruppe für `ModelPackageGroupName` und optional eine Beschreibung des Modellpakets in das `ModelPackageGroupDescription` Feld ein.

      ```
      model_package_group_name = {{'<INSERT>'}}
      model_package_group_description = {{'<INSERT>'}} 
      
      model_package_group_input_dict = {
       "ModelPackageGroupName" : model_package_group_name,
       "ModelPackageGroupDescription" : model_package_group_description,
      }
      
      model_package_group_response = sagemaker_client.create_model_package_group(**model_package_group_input_dict)
      ```

      Eine vollständige Liste der optionalen und erforderlichen Argumente, an die Sie übergeben können, finden Sie im [Amazon SageMaker API-Referenzhandbuch [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelPackageGroup.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelPackageGroup.html)](https://docs.aws.amazon.com/sagemaker/latest/APIReference/Welcome.html).

      Erstellen Sie ein Modellpaket, indem Sie ein Docker-Image angeben, das Ihren Inferenzcode und den Amazon S3-Speicherort Ihrer Modellartefakte ausführt und Werte für `InferenceSpecification` bereitstellt. `InferenceSpecification` sollte Informationen zu Inferenzaufträgen enthalten, die mit Modellen ausgeführt werden können, die auf diesem Modellpaket basieren, einschließlich der folgenden Informationen:
      + Die Amazon ECR-Pfade der Bilder, auf denen Ihr Inferenzcode ausgeführt wird.
      + (Optional) Die Instance-Typen, die das Modellpaket für Transformationsjobs unterstützt, und Echtzeit-Endpunkte, die für Inferenzen verwendet werden.
      + Die Eingabe- und Ausgabeinhaltsformate, die das Modellpaket für Inferenzen unterstützt.

      Darüber hinaus müssen Sie beim Erstellen eines Modellpakets die folgenden Parameter angeben:
      + [Domain](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelPackage.html#sagemaker-CreateModelPackage-request-Domain): Der Bereich des Machine Learning für Ihr Modellpaket und seine Komponenten. Zu den gängigen Bereichen des Machine Learnings gehören Computer Vision und die natürliche Sprachverarbeitung.
      + [Aufgabe](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelPackage.html#sagemaker-CreateModelPackage-request-Task): Die Aufgabe des maschinellen Lernens, die Ihr Modellpaket erfüllt. Zu den gängigen Machine-Learning-Aufgaben gehören die Objekterkennung und die Image-Klassifizierung. Geben Sie „OTHER“ an, wenn keine der im [API-Referenzhandbuch](https://docs.aws.amazon.com/sagemaker/latest/APIReference/Welcome.html) aufgeführten Aufgaben Ihrem Anwendungsfall entspricht. Eine Liste der unterstützten [Aufgaben](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelPackage.html#sagemaker-CreateModelPackage-request-Task) für Machine Learning finden Sie in den Feldbeschreibungen der Task-API.
      + [SamplePayloadUrl](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelPackage.html#sagemaker-CreateModelPackage-request-SamplePayloadUrl): Der Amazon Simple Storage Service (Amazon S3) -Pfad, in dem die Beispielnutzdaten gespeichert werden. Dieser Pfad muss auf ein einzelnes, mit GZIP komprimiertes TAR-Archiv zeigen (.tar.gz-Suffix).
      + [Framework](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelPackageContainerDefinition.html#sagemaker-Type-ModelPackageContainerDefinition-Framework): Das Framework für Machine Learning des Modellpakets Container Image.
      + [FrameworkVersion](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelPackageContainerDefinition.html#sagemaker-Type-ModelPackageContainerDefinition-FrameworkVersion): Die Framework-Version des Container-Images des Modellpakets.

      Wenn Sie eine Zulassungsliste mit Instance-Typen angeben, anhand derer in Echtzeit Inferenzen für die generiert werden können [SupportedRealtimeInferenceInstanceTypes](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_InferenceSpecification.html#sagemaker-Type-InferenceSpecification-SupportedRealtimeInferenceInstanceTypes), schränkt Inference Recommender den Suchraum für Instance-Typen während eines Jobs ein. `Default` Verwenden Sie diesen Parameter, wenn Sie Budgetbeschränkungen haben oder wissen, dass es bestimmte Instance-Typen gibt, die Ihr Modell und Ihr Container-Image unterstützen können.

      In einem vorherigen Schritt haben wir ein vortrainiertes ResNet 18-Modell heruntergeladen und es in einem Amazon S3 S3-Bucket in einem Verzeichnis namens `models` gespeichert. Wir haben ein Deep-Learning-Container-Inferenzbild PyTorch (v1.7.1) abgerufen und den URI in einer Variablen namens gespeichert. `image_uri` Verwenden Sie diese Variablen im folgenden Codebeispiel, um ein Wörterbuch zu definieren, das als Eingabe für die [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelPackage.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelPackage.html)-API verwendet wird.

      ```
      # Provide the Amazon S3 URI of your compressed tarfile
      # so that Model Registry knows where to find your model artifacts
      bucket_prefix='models'
      bucket = {{'<your-bucket-name>'}} # Provide the name of your S3 bucket
      model_s3_key = f"{bucket_prefix}/test.tar.gz"
      model_url= f"s3://{bucket}/{model_s3_key}"
      
      # Similar open source model to the packaged model
      # The name of the ML model as standardized by common model zoos
      nearest_model_name = 'resnet18'
      
      # The supported MIME types for input and output data. In this example, 
      # we are using images as input.
      input_content_type='image/jpeg'
      
      
      # Optional - provide a description of your model.
      model_package_description = {{'<INSERT>'}}
      
      ## Uncomment if you did not store the domain and task in an earlier
      ## step 
      #ml_domain = 'COMPUTER_VISION'
      #ml_task = 'IMAGE_CLASSIFICATION'
      
      ## Uncomment if you did not store the framework and framework version
      ## in a previous step.
      #framework = 'PYTORCH'
      #framework_version = '1.7.1'
      
      # Optional: Used for optimizing your model using SageMaker Neo
      # PyTorch uses NCHW format for images
      data_input_configuration = "[[1,3,256,256]]"
      
      # Create a dictionary to use as input for creating a model pacakge group
      model_package_input_dict = {
              "ModelPackageGroupName" : model_package_group_name,
              "ModelPackageDescription" : model_package_description,
              "Domain": ml_domain,
              "Task": ml_task,
              "SamplePayloadUrl": sample_payload_url,
              "InferenceSpecification": {
                      "Containers": [
                          {
                              "Image": image_uri,
                              "ModelDataUrl": model_url,
                              "Framework": framework.upper(), 
                              "FrameworkVersion": framework_version,
                              "NearestModelName": nearest_model_name,
                              "ModelInput": {"DataInputConfig": data_input_configuration}
                          }
                          ],
                      "SupportedContentTypes": [input_content_type]
              }
          }
      ```

   1. **Erstellen eines Modellpakets**

      Verwenden Sie die `CreateModelPackage`-API, um ein Modellpaket zu erstellen. Übergeben Sie das im vorherigen Schritt definierte Eingabewörterbuch:

      ```
      model_package_response = sagemaker_client.create_model_package(**model_package_input_dict)
      ```

      Sie benötigen das Modellpaket ARN, um Amazon SageMaker Inference Recommender verwenden zu können. Notieren Sie sich den ARN des Modellpakets oder speichern Sie ihn in einer Variablen:

      ```
      model_package_arn = model_package_response["ModelPackageArn"]
      
      print('ModelPackage Version ARN : {}'.format(model_package_arn))
      ```

1. **Option 2: Erstellen Sie ein Modell und konfigurieren Sie das `ContainerConfig` Feld**

   Verwenden Sie diese Option, wenn Sie einen Job mit Inferenzempfehlungen starten möchten und Ihr Modell nicht in der Modellregistrierung registrieren müssen. In den folgenden Schritten erstellen Sie ein Modell in SageMaker AI und konfigurieren das `ContainerConfig` Feld als Eingabe für den Empfehlungsjob.

   1. **Erstellen eines Modells**

      Erstellen eines Modells mit der `CreateModel`-API Ein Beispiel, das diese Methode aufruft, wenn ein Modell für SageMaker AI Hosting bereitgestellt wird, finden Sie unter [Create a Model (AWS SDK für Python (Boto3))](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-deployment.html#realtime-endpoints-deployment-create-model).

      In einem vorherigen Schritt haben wir ein vortrainiertes ResNet 18-Modell heruntergeladen und es in einem Amazon S3 S3-Bucket in einem Verzeichnis namens `models` gespeichert. Wir haben ein Deep-Learning-Container-Inferenzbild PyTorch (v1.7.1) abgerufen und den URI in einer Variablen namens gespeichert. `image_uri` Wir verwenden diese Variablen im folgenden Codebeispiel, in dem wir ein Wörterbuch definieren, das als Eingabe für die `[CreateModel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html#sagemaker-CreateModel-request-ModelName)` API verwendet wird.

      ```
      model_name = '{{<name_of_the_model>}}'
      # Role to give SageMaker permission to access AWS services.
      sagemaker_role= "arn:aws:iam::{{<region>}}:{{<account>}}:role/*"
      
      # Provide the Amazon S3 URI of your compressed tarfile
      # so that Model Registry knows where to find your model artifacts
      bucket_prefix='models'
      bucket = '{{<your-bucket-name>}}' # Provide the name of your S3 bucket
      model_s3_key = f"{bucket_prefix}/test.tar.gz"
      model_url= f"s3://{bucket}/{model_s3_key}"
      
      #Create model
      create_model_response = sagemaker_client.create_model(
          ModelName = model_name,
          ExecutionRoleArn = sagemaker_role, 
          PrimaryContainer = {
              'Image': image_uri,
              'ModelDataUrl': model_url,
          })
      ```

   1. **Konfigurieren Sie das `ContainerConfig` Feld**

      Als Nächstes müssen Sie das [ContainerConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_RecommendationJobInputConfig.html#sagemaker-Type-RecommendationJobInputConfig-ContainerConfig)Feld mit dem Modell konfigurieren, das Sie gerade erstellt haben, und darin die folgenden Parameter angeben:
      + `Domain`: Die Domain des Modells für Machine Learning und seine Komponenten, z. B. Computer Vision oder Verarbeitung natürlicher Sprache.
      + `Task`: Die Aufgabe des maschinellen Lernens, die das Modell erfüllt, z. B. Bildklassifizierung oder Objekterkennung.
      + `PayloadConfig`: Die Konfiguration für die Nutzlast für einen Empfehlungsjob. Weitere Informationen zu den Teilbereichen finden Sie unter `[RecommendationJobPayloadConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_RecommendationJobPayloadConfig.html#sagemaker-Type-RecommendationJobPayloadConfig-SamplePayloadUrl)`.
      + `Framework`: Das Framework für maschinelles Lernen des Container-Images, z. PyTorch B.
      + `FrameworkVersion`: Die Framework-Version des Container-Images.
      + (Optional) `SupportedInstanceTypes`: Eine Liste der Instance-Typen, die zur Erzeugung von Schlussfolgerungen in Echtzeit verwendet werden.

      Wenn Sie den `SupportedInstanceTypes` Parameter verwenden, schränkt Inference Recommender den Suchraum für Instance-Typen während eines Jobs `Default` ein. Verwenden Sie diesen Parameter, wenn Sie Budgetbeschränkungen haben oder wissen, dass es bestimmte Instance-Typen gibt, die Ihr Modell und Ihr Container-Image unterstützen können.

      Im folgenden Codebeispiel verwenden wir die zuvor definierten Parameter zusammen mit `NearestModelName`, um ein Wörterbuch zu definieren, das als Eingabe für die `[CreateInferenceRecommendationsJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateInferenceRecommendationsJob.html)` API verwendet wird.

      ```
      ## Uncomment if you did not store the domain and task in a previous step
      #ml_domain = 'COMPUTER_VISION'
      #ml_task = 'IMAGE_CLASSIFICATION'
      
      ## Uncomment if you did not store the framework and framework version in a previous step
      #framework = 'PYTORCH'
      #framework_version = '1.7.1'
      
      # The name of the ML model as standardized by common model zoos
      nearest_model_name = 'resnet18'
      
      # The supported MIME types for input and output data. In this example, 
      # we are using images as input
      input_content_type='image/jpeg'
      
      # Optional: Used for optimizing your model using SageMaker Neo
      # PyTorch uses NCHW format for images
      data_input_configuration = "[[1,3,256,256]]"
      
      # Create a dictionary to use as input for creating an inference recommendation job
      container_config = {
              "Domain": ml_domain,
              "Framework": framework.upper(), 
              "FrameworkVersion": framework_version,
              "NearestModelName": nearest_model_name,
              "PayloadConfig": { 
                  "SamplePayloadUrl": sample_payload_url,
                  "SupportedContentTypes": [ input_content_type ]
               },
              "DataInputConfig": data_input_configuration
              "Task": ml_task,
              }
      ```