

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 Produkt in SageMaker KI vor
<a name="ml-prepare-your-product-in-sagemaker"></a>

Bevor Sie Ihr Produkt in veröffentlichen können AWS Marketplace, müssen Sie es in Amazon SageMaker AI vorbereiten. Es gibt zwei Arten von SageMaker KI-Produkten, die unter aufgeführt sind AWS Marketplace: Modellpakete und Algorithmen. Weitere Informationen finden Sie unter [Produkte für maschinelles Lernen in AWS Marketplace](machine-learning-products.md). Dieses Thema bietet einen Überblick über die drei Schritte, die zur Vorbereitung Ihres Produkts erforderlich sind:

1. [Verpacken Sie Ihren Code in Bilder für maschinelles Lernen in AWS Marketplace](ml-packaging-your-code-into-images.md)— Um ein Modellpaket oder ein Algorithmusprodukt vorzubereiten, müssen Sie die Docker-Container-Images für Ihr Produkt erstellen. 

1. [Ihre Bilder in die Amazon Elastic Container Registry hochladen](ml-uploading-your-images.md)— Nachdem Sie Ihren Code in Container-Images verpackt und lokal getestet haben, laden Sie die Images hoch und scannen Sie sie auf bekannte Sicherheitslücken. Beheben Sie alle Sicherheitslücken, bevor Sie fortfahren. 

1.  [Erstellen Sie Ihre Amazon SageMaker AI-Ressource](ml-creating-your-amazon-sagemaker-resource.md)— Nachdem Ihre Bilder erfolgreich gescannt wurden, können Sie sie verwenden, um ein Modellpaket oder eine Algorithmusressource in SageMaker KI zu erstellen.

# Verpacken Sie Ihren Code in Bilder für maschinelles Lernen in AWS Marketplace
<a name="ml-packaging-your-code-into-images"></a>

Produkte für maschinelles Lernen AWS Marketplace verwenden Amazon SageMaker AI, um die maschinelle Lernlogik zu erstellen und auszuführen, die Sie Käufern zur Verfügung stellen. SageMaker KI führt Docker-Container-Images aus, die Ihre Logik enthalten. SageMaker KI betreibt diese Container in einer sicheren und skalierbaren Infrastruktur. Weitere Informationen finden Sie unter [Sicherheit und geistiges Eigentum mit Amazon SageMaker AI](ml-security-and-intellectual-property.md). Die folgenden Abschnitte enthalten Informationen darüber, wie Sie Ihren Code in Docker-Container-Images für SageMaker KI packen.

**Topics**
+ [Welche Art von Container-Image erstelle ich?](#ml-which-type-of-container-image-do-i-create)
+ [Erstellen von Modellpaket-Images](ml-model-package-images.md)
+ [Algorithmus-Images erstellen](ml-algorithm-images.md)

## Welche Art von Container-Image erstelle ich?
<a name="ml-which-type-of-container-image-do-i-create"></a>

 Die beiden Arten von Container-Images sind ein Inferenzbild und ein Trainings-Image. 

 Um ein Modellpaketprodukt zu erstellen, benötigen Sie nur ein Inferenzbild. Detaillierte Anweisungen finden Sie unter [Erstellen von Modellpaket-Images](ml-model-package-images.md). 

 Um ein Algorithmusprodukt zu erstellen, benötigen Sie sowohl Trainings- als auch Inferenzbilder. Detaillierte Anweisungen finden Sie unter [Algorithmus-Images erstellen](ml-algorithm-images.md). 

 Um Code ordnungsgemäß in ein Container-Image zu packen, muss der Container der SageMaker AI-Dateistruktur entsprechen. Der Container muss die richtigen Endpunkte verfügbar machen, um sicherzustellen, dass der Service Daten an Ihren Container und von Ihrem Container weitergeben kann. In den folgenden Abschnitten werden die Einzelheiten dieses Prozesses erläutert. 

**Wichtig**  
 Wenn ein Käufer Ihr containerisiertes Produkt abonniert, werden die Docker-Container aus Sicherheitsgründen in einer isolierten Umgebung ohne Internetverbindung ausgeführt. Verlassen Sie sich bei der Erstellung Ihrer Container nicht auf ausgehende Anrufe über das Internet, da diese sonst fehlschlagen. Aufrufe an AWS-Services werden ebenfalls fehlschlagen. Weitere Informationen finden Sie im Abschnitt [Sicherheit und geistiges Eigentum mit Amazon SageMaker AI](ml-security-and-intellectual-property.md). 

 Verwenden Sie bei der Erstellung Ihrer Inferenz- und Trainingsbilder optional einen Container aus [Available Deep Learning Containers Images](https://aws.amazon.com/releasenotes/available-deep-learning-containers-images/) als Ausgangspunkt. Die Bilder sind bereits ordnungsgemäß mit verschiedenen Frameworks für maschinelles Lernen gepackt. 

# Erstellen von Modellpaket-Images
<a name="ml-model-package-images"></a>

Ein Amazon SageMaker AI-Modellpaket ist ein vortrainiertes Modell, das Vorhersagen trifft und keine weitere Schulung durch den Käufer erfordert. Sie können ein Modellpaket in SageMaker KI erstellen und Ihr Produkt für maschinelles Lernen darauf AWS Marketplace veröffentlichen. In den folgenden Abschnitten erfahren Sie, wie Sie ein Modellpaket für erstellen AWS Marketplace. Dazu gehören das Erstellen des Container-Images sowie das lokale Erstellen und Testen des Images.

**Topics**
+ [-Übersicht](#ml-model-package-images-overview)
+ [Erstellen Sie ein Inferenzbild für Modellpakete](#ml-creating-an-inference-image-for-model-packages)

## -Übersicht
<a name="ml-model-package-images-overview"></a>

 Ein Modellpaket umfasst die folgenden Komponenten: 
+  Ein in [Amazon Elastic Container Registry (Amazon](https://aws.amazon.com/ecr/) ECR) gespeichertes Inferenzbild 
+  (Optional) Modellartefakte, separat in [Amazon S3](https://aws.amazon.com/s3/) gespeichert 

**Anmerkung**  
Modellartefakte sind Dateien, die Ihr Modell verwendet, um Vorhersagen zu treffen. Sie sind in der Regel das Ergebnis Ihrer eigenen Trainingsprozesse. Bei Artefakten kann es sich um jeden Dateityp handeln, der für Ihr Modell benötigt wird, wobei jedoch die Komprimierung von use.tar.gz erforderlich ist. Modellpakete können entweder in Ihrem Inferenzbild gebündelt oder separat in Amazon SageMaker AI gespeichert werden. Die in Amazon S3 gespeicherten Modellartefakte werden zur Laufzeit in den Inferenzcontainer geladen. Bei der Veröffentlichung Ihres Modellpakets werden diese Artefakte veröffentlicht und in AWS Marketplace eigenen Amazon S3 S3-Buckets gespeichert, auf die der Käufer nicht direkt zugreifen kann. 

**Tipp**  
Wenn Ihr Inferenzmodell mit einem Deep-Learning-Framework wie Gluon, Keras,,,, TensorFlow -Lite oder ONNX erstellt wurde MXNet PyTorch TensorFlow, sollten Sie Amazon AI Neo in Betracht ziehen. SageMaker Neo kann automatisch Inferenzmodelle optimieren, die für eine bestimmte Familie von Cloud-Instanztypen wie, und andere eingesetzt werden. `ml.c4` `ml.p2` Weitere Informationen finden Sie unter [Optimieren der Modellleistung mithilfe von Neo](https://docs.aws.amazon.com/sagemaker/latest/dg/neo.html) im *Amazon SageMaker AI Developer Guide*.

Das folgende Diagramm zeigt den Arbeitsablauf für die Veröffentlichung und Verwendung von Modellpaketprodukten. 

![\[Diagramm, das zeigt, wie ein Verkäufer ein Bild eines Modellpakets erstellt und wie ein Käufer es verwendet.\]](http://docs.aws.amazon.com/de_de/marketplace/latest/userguide/images/ml-model-package-images.png)


Der Arbeitsablauf zur Erstellung eines SageMaker KI-Modellpakets für AWS Marketplace umfasst die folgenden Schritte:

1. Der Verkäufer erstellt ein Inferenz-Image (kein Netzwerkzugriff bei der Bereitstellung) und überträgt es in das Amazon ECR-Register. 

   Die Modellartefakte können entweder im Inferenz-Image gebündelt oder separat in S3 gespeichert werden.

1. Der Verkäufer erstellt dann eine Modellpaketressource in Amazon SageMaker AI und veröffentlicht sein ML-Produkt auf AWS Marketplace.

1. Der Käufer abonniert das ML-Produkt und stellt das Modell bereit. 
**Anmerkung**  
 Das Modell kann als Endpunkt für Echtzeit-Inferenzen oder als Batch-Job eingesetzt werden, um Vorhersagen für einen gesamten Datensatz auf einmal zu erhalten. Weitere Informationen finden Sie unter [Bereitstellen von Modellen für Inferenz](https://docs.aws.amazon.com/sagemaker/latest/dg/deploy-model.html). 

1. SageMaker KI führt das Inferenzbild aus. Alle vom Verkäufer bereitgestellten Modellartefakte, die nicht im Inferenzbild gebündelt sind, werden zur Laufzeit dynamisch geladen. 

1.  SageMaker KI leitet die Inferenzdaten des Käufers mithilfe der HTTP-Endpunkte des Containers an den Container weiter und gibt die Prognoseergebnisse zurück. 

## Erstellen Sie ein Inferenzbild für Modellpakete
<a name="ml-creating-an-inference-image-for-model-packages"></a>

Dieser Abschnitt enthält eine exemplarische Vorgehensweise zum Verpacken Ihres Inferenzcodes in ein Inferenzbild für Ihr Modellpaketprodukt. Der Prozess besteht aus den folgenden Schritten:

**Topics**
+ [Schritt 1: Erstellen Sie das Container-Image](#ml-step-1-creating-the-container-image)
+ [Schritt 2: Erstellen und testen Sie das Image lokal](#ml-step-2-building-and-testing-the-image-locally)

Das Inferenz-Image ist ein Docker-Image, das Ihre Inferenzlogik enthält. Der Container stellt zur Laufzeit HTTP-Endpunkte zur Verfügung, damit SageMaker KI Daten zu und von Ihrem Container weiterleiten kann. 

**Anmerkung**  
 Das Folgende ist nur ein Beispiel für einen Verpackungscode für ein Inferenzbild. Weitere Informationen finden Sie unter [Docker-Container mit SageMaker KI verwenden und die [AWS Marketplace SageMaker KI-Beispiele](https://github.com/aws/amazon-sagemaker-examples/tree/master/aws_marketplace)](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms.html) unter. GitHub  
Das folgende Beispiel verwendet der Einfachheit halber einen Webdienst, [Flask](https://pypi.org/project/Flask/), und gilt nicht als produktionsbereit.

### Schritt 1: Erstellen Sie das Container-Image
<a name="ml-step-1-creating-the-container-image"></a>

 Damit das Inferenz-Image mit SageMaker KI kompatibel ist, muss das Docker-Image HTTP-Endpunkte verfügbar machen. Während Ihr Container läuft, leitet SageMaker KI Käufereingaben zur Inferenz an den HTTP-Endpunkt des Containers weiter. Die Inferenzergebnisse werden im Hauptteil der HTTP-Antwort zurückgegeben. 

 In der folgenden exemplarischen Vorgehensweise wird die Docker-CLI in einer Entwicklungsumgebung verwendet, die eine Linux-Ubuntu-Distribution verwendet. 
+ [Erstellen Sie das Webserver-Skript](#ml-create-the-web-server-script)
+ [Erstellen Sie das Skript für den Containerlauf](#ml-create-the-script-for-the-container-run)
+ [Erstellen der `Dockerfile`](#ml-create-the-dockerfile)
+ [Package oder laden Sie die Modellartefakte hoch](#ml-package-or-upload-the-model-artifacts)

#### Erstellen Sie das Webserver-Skript
<a name="ml-create-the-web-server-script"></a>

 In diesem Beispiel wird ein Python-Server namens [Flask](https://pypi.org/project/Flask/) verwendet, aber Sie können jeden Webserver verwenden, der für Ihr Framework funktioniert. 

**Anmerkung**  
[Flask](https://pypi.org/project/Flask/) wird hier der Einfachheit halber verwendet. Er gilt nicht als produktionsreifer Webserver.

 Erstellen Sie ein Flask-Webserver-Skript, das die beiden HTTP-Endpunkte auf dem von AI verwendeten TCP-Port 8080 bedient. SageMaker Im Folgenden sind die beiden erwarteten Endpunkte aufgeführt: 
+  `/ping`— SageMaker KI sendet HTTP-GET-Anfragen an diesen Endpunkt, um zu überprüfen, ob Ihr Container bereit ist. Wenn Ihr Container bereit ist, reagiert er auf HTTP-GET-Anfragen an diesem Endpunkt mit einem HTTP 200-Antwortcode. 
+  `/invocations`— SageMaker KI sendet HTTP-POST-Anfragen zur Inferenz an diesen Endpunkt. Die Eingabedaten für die Inferenz werden im Hauptteil der Anfrage gesendet. Der vom Benutzer angegebene Inhaltstyp wird im HTTP-Header übergeben. Der Hauptteil der Antwort ist die Inferenzausgabe. Einzelheiten zu Timeouts finden Sie unter. [Anforderungen und bewährte Verfahren für die Entwicklung von Produkten für maschinelles Lernen](ml-listing-requirements-and-best-practices.md) 

 **`./web_app_serve.py`** 

```
# Import modules
import json
import re
from flask import Flask
from flask import request
app = Flask(__name__)

# Create a path for health checks
@app.route("/ping")
def endpoint_ping():
  return ""
 
# Create a path for inference
@app.route("/invocations", methods=["POST"])
def endpoint_invocations():
  
  # Read the input
  input_str = request.get_data().decode("utf8")
  
  # Add your inference code between these comments.
  #
  #
  #
  #
  #
  # Add your inference code above this comment.
  
  # Return a response with a prediction
  response = {"prediction":"a","text":input_str}
  return json.dumps(response)
```

Im vorherigen Beispiel gibt es keine tatsächliche Inferenzlogik. Fügen Sie für Ihr eigentliches Inferenzbild die Inferenzlogik zur Web-App hinzu, sodass sie die Eingabe verarbeitet und die tatsächliche Vorhersage zurückgibt.

Ihr Inferenzbild muss alle erforderlichen Abhängigkeiten enthalten, da es keinen Internetzugang haben wird und auch keine davon aufrufen kann. AWS-Services

**Anmerkung**  
Derselbe Code wird sowohl für Echtzeit- als auch für Batch-Inferenzen aufgerufen

#### Erstellen Sie das Skript für den Containerlauf
<a name="ml-create-the-script-for-the-container-run"></a>

 Erstellen Sie ein Skript mit dem Namen`serve`, dass SageMaker AI ausgeführt wird, wenn es das Docker-Container-Image ausführt. Das folgende Skript startet den HTTP-Webserver. 

 **`./serve`** 

```
#!/bin/bash

# Run flask server on port 8080 for SageMaker
flask run --host 0.0.0.0 --port 8080
```

#### Erstellen der `Dockerfile`
<a name="ml-create-the-dockerfile"></a>

 Erstellen Sie `Dockerfile` in Ihrem Build-Kontext eine. In diesem Beispiel wird Ubuntu 18.04 verwendet, aber Sie können mit jedem Basis-Image beginnen, das für Ihr Framework funktioniert. 

 `./Dockerfile` 

```
FROM ubuntu:18.04

# Specify encoding
ENV LC_ALL=C.UTF-8
ENV LANG=C.UTF-8

# Install python-pip
RUN apt-get update \
&& apt-get install -y python3.6 python3-pip \
&& ln -s /usr/bin/python3.6 /usr/bin/python \
&& ln -s /usr/bin/pip3 /usr/bin/pip;

# Install flask server
RUN pip install -U Flask;

# Add a web server script to the image
# Set an environment to tell flask the script to run
COPY /web_app_serve.py /web_app_serve.py
ENV FLASK_APP=/web_app_serve.py

# Add a script that Amazon SageMaker AI will run
# Set run permissions
# Prepend program directory to $PATH
COPY /serve /opt/program/serve
RUN chmod 755 /opt/program/serve
ENV PATH=/opt/program:${PATH}
```

 Das `Dockerfile` fügt die beiden zuvor erstellten Skripte zum Image hinzu. Das Verzeichnis des `serve` Skripts wird dem PATH hinzugefügt, sodass es ausgeführt werden kann, wenn der Container ausgeführt wird. 

#### Package oder laden Sie die Modellartefakte hoch
<a name="ml-package-or-upload-the-model-artifacts"></a>

 Es gibt zwei Möglichkeiten, die Modellartefakte vom Trainieren des Modells bis zum Inferenzbild bereitzustellen: 
+  Statisch zusammen mit dem Inferenzbild verpackt. 
+  Wird zur Laufzeit dynamisch geladen. Da es dynamisch geladen wird, können Sie dasselbe Image für die Paketierung verschiedener Machine-Learning-Modelle verwenden.

 Wenn Sie Ihre Modellartefakte zusammen mit dem Inferenzbild verpacken möchten, schließen Sie die Artefakte in das `Dockerfile` ein. 

 Wenn Sie Ihre Modellartefakte dynamisch laden möchten, speichern Sie diese Artefakte separat in einer komprimierten Datei (.tar.gz) in Amazon S3. Geben Sie bei der Erstellung des Modellpakets den Speicherort der komprimierten Datei an. SageMaker AI extrahiert und kopiert den Inhalt in das Container-Verzeichnis, `/opt/ml/model/` wenn Ihr Container ausgeführt wird. Bei der Veröffentlichung Ihres Modellpakets werden diese Artefakte veröffentlicht und in AWS Marketplace eigenen Amazon S3 S3-Buckets gespeichert, auf die der Käufer nicht direkt zugreifen kann. 

### Schritt 2: Erstellen und testen Sie das Image lokal
<a name="ml-step-2-building-and-testing-the-image-locally"></a>

 Im Build-Kontext sind jetzt die folgenden Dateien vorhanden: 
+  `./Dockerfile` 
+  `./web_app_serve.py` 
+  `./serve` 
+  Ihre Inferenzlogik und (optionale) Abhängigkeiten 

 Erstellen Sie als Nächstes das Container-Image, führen Sie es aus und testen Sie es. 

#### Erstellen Sie das Image
<a name="ml-build-the-image"></a>

 Führen Sie den Docker-Befehl im Build-Kontext aus, um das Image zu erstellen und zu taggen. In diesem Beispiel wird das Tag `my-inference-image` verwendet. 

```
sudo docker build --tag my-inference-image ./
```

 Nachdem Sie diesen Docker-Befehl ausgeführt haben, um das Image zu erstellen, sollten Sie die Ausgabe sehen, während Docker das Image auf der Grundlage jeder Zeile in Ihrem erstellt. `Dockerfile` Wenn der Vorgang abgeschlossen ist, sollten Sie etwas Ähnliches wie das Folgende sehen. 

```
Successfully built abcdef123456
Successfully tagged my-inference-image:latest
```

#### Lokales Ausführen von
<a name="ml-run-locally"></a>

 Nachdem Ihr Build abgeschlossen ist, können Sie das Image lokal testen. 

```
sudo docker run \
  --rm \
  --publish 8080:8080/tcp \
  --detach \
  --name my-inference-container \
  my-inference-image \
  serve
```

 Im Folgenden finden Sie Einzelheiten zum Befehl: 
+ `--rm`— Entfernt den Container automatisch, nachdem er gestoppt wurde.
+ `--publish 8080:8080/tcp`— Machen Sie Port 8080 verfügbar, um den Port zu simulieren, an den SageMaker KI HTTP-Anfragen sendet.
+ `--detach`— Führt den Container im Hintergrund aus.
+ `--name my-inference-container`— Geben Sie diesem laufenden Container einen Namen.
+ `my-inference-image`— Führt das erstellte Image aus.
+ `serve`— Führen Sie dasselbe Skript aus, das SageMaker AI beim Ausführen des Containers ausführt.

 Nachdem Sie diesen Befehl ausgeführt haben, erstellt Docker einen Container aus dem von Ihnen erstellten Inferenz-Image und führt ihn im Hintergrund aus. Der Container führt das `serve` Skript aus, das Ihren Webserver zu Testzwecken startet. 

#### Testen Sie den Ping-HTTP-Endpunkt
<a name="ml-test-the-ping-http-endpoint"></a>

 Wenn SageMaker KI Ihren Container ausführt, pingt sie den Endpunkt regelmäßig an. Wenn der Endpunkt eine HTTP-Antwort mit dem Statuscode 200 zurückgibt, signalisiert er der SageMaker KI, dass der Container für die Inferenz bereit ist. Sie können dies testen, indem Sie den folgenden Befehl ausführen, der den Endpunkt testet und den Antwortheader enthält. 

```
curl --include http://127.0.0.1:8080/ping
```

Die Beispielausgabe sieht wie folgt aus.

```
HTTP/1.0 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 0
Server: MyServer/0.16.0 Python/3.6.8
Date: Mon, 21 Oct 2019 06:58:54 GMT
```

#### Testen Sie den HTTP-Endpunkt der Inferenz
<a name="ml-test-the-inference-http-endpoint"></a>

 Wenn der Container anzeigt, dass er bereit ist, indem er einen Statuscode 200 an Ihren Ping zurückgibt, leitet SageMaker AI die Inferenzdaten über eine `POST` Anfrage an den `/invocations` HTTP-Endpunkt weiter. Testen Sie den Inferenzpunkt, indem Sie den folgenden Befehl ausführen. 

```
curl \
  --request POST \
  --data "hello world" \
  http://127.0.0.1:8080/invocations
```

 Die Beispielausgabe sieht wie folgt aus. 

 `{"prediction": "a", "text": "hello world"}` 

 Da diese beiden HTTP-Endpunkte funktionieren, ist das Inferenzbild jetzt mit SageMaker KI kompatibel. 

**Anmerkung**  
 Das Modell Ihres Modellpaketprodukts kann auf zwei Arten bereitgestellt werden: in Echtzeit und im Batch-Modus. In beiden Bereitstellungen verwendet SageMaker KI beim Ausführen des Docker-Containers dieselben HTTP-Endpunkte. 

 Führen Sie den folgenden Befehl aus, um den Container zu beenden.

```
sudo docker container stop my-inference-container
```

 Wenn Ihr Inferenz-Image fertig und getestet ist, können Sie damit [Ihre Bilder in die Amazon Elastic Container Registry hochladen](ml-uploading-your-images.md) fortfahren. 

# Algorithmus-Images erstellen
<a name="ml-algorithm-images"></a>

Ein SageMaker Amazon-KI-Algorithmus erfordert, dass der Käufer seine eigenen Daten zum Training mitbringt, bevor er Vorhersagen trifft. Als AWS Marketplace Verkäufer können Sie SageMaker KI verwenden, um Algorithmen und Modelle für maschinelles Lernen (ML) zu erstellen, die Ihre Käufer einsetzen können AWS. In den folgenden Abschnitten erfahren Sie, wie Sie Algorithmus-Images erstellen AWS Marketplace. Dazu gehört die Erstellung des Docker-Training-Images für das Training Ihres Algorithmus und des Inferenz-Images, das Ihre Inferenzlogik enthält. Sowohl das Trainings- als auch das Inferenzbild sind für die Veröffentlichung eines Algorithmusprodukts erforderlich.

**Topics**
+ [-Übersicht](#ml-algorithm-images-overview)
+ [Ein Trainingsbild für Algorithmen erstellen](#ml-creating-a-training-image-for-algorithms)
+ [Erstellen eines Inferenzbilds für Algorithmen](#ml-creating-an-inference-image-for-algorithms)

## -Übersicht
<a name="ml-algorithm-images-overview"></a>

Ein Algorithmus umfasst die folgenden Komponenten: 
+  Ein in [Amazon ECR](https://aws.amazon.com/ecr/) gespeichertes Trainingsbild 
+  Ein in Amazon Elastic Container Registry (Amazon ECR) gespeichertes Inferenzbild 

**Anmerkung**  
 Bei Algorithmusprodukten generiert der Trainingscontainer Modellartefakte, die bei der Modellbereitstellung in den Inferenzcontainer geladen werden. 

Das folgende Diagramm zeigt den Arbeitsablauf für die Veröffentlichung und Verwendung von Algorithmusprodukten.

![\[Diagramm, wie ein Verkäufer ein algorithmisches Paketbild erstellt und wie ein Käufer es verwendet.\]](http://docs.aws.amazon.com/de_de/marketplace/latest/userguide/images/ml-algorithm-package-images.png)


Der Arbeitsablauf zur Erstellung eines SageMaker KI-Algorithmus für AWS Marketplace umfasst die folgenden Schritte:

1. Der Verkäufer erstellt ein Schulungs-Image und ein Inferenz-Image (kein Netzwerkzugriff bei der Bereitstellung) und lädt es in das Amazon ECR-Register hoch. 

1. Der Verkäufer erstellt dann eine Algorithmusressource in Amazon SageMaker AI und veröffentlicht sein ML-Produkt auf AWS Marketplace.

1. Der Käufer abonniert das ML-Produkt. 

1. Der Käufer erstellt einen Trainingsjob mit einem kompatiblen Datensatz und entsprechenden Hyperparameterwerten. SageMaker KI führt das Trainingsimage aus und lädt die Trainingsdaten und Hyperparameter in den Trainingscontainer. Wenn der Schulungsjob abgeschlossen ist, werden die Modellartefakte, die sich darin `/opt/ml/model/` befinden, komprimiert und in den [Amazon S3 S3-Bucket](https://aws.amazon.com/s3/) des Käufers kopiert. 

1. Der Käufer erstellt ein Modellpaket mit den in Amazon S3 gespeicherten Modellartefakten aus dem Training und stellt das Modell bereit. 

1. SageMaker AI führt das Inferenz-Image aus, extrahiert die komprimierten Modellartefakte und lädt die Dateien in den Verzeichnispfad des Inferenz-Containers, `/opt/ml/model/` wo sie von dem Code verwendet werden, der die Inferenz bereitstellt. 

1.  Unabhängig davon, ob das Modell als Endpunkt oder als Batch-Transformationsjob bereitgestellt wird, leitet SageMaker KI die Daten zur Inferenz im Namen des Käufers über den HTTP-Endpunkt des Containers an den Container weiter und gibt die Prognoseergebnisse zurück. 

**Anmerkung**  
 Weitere Informationen finden Sie unter [Train](https://docs.aws.amazon.com/sagemaker/latest/dg/train-model.html) Models. 

## Ein Trainingsbild für Algorithmen erstellen
<a name="ml-creating-a-training-image-for-algorithms"></a>

 Dieser Abschnitt enthält eine exemplarische Vorgehensweise zum Verpacken Ihres Trainingscodes in ein Trainingsbild. Ein Trainingsimage ist erforderlich, um ein Algorithmusprodukt zu erstellen. 

 Ein *Trainings-Image* ist ein Docker-Image, das Ihren Trainingsalgorithmus enthält. Der Container hält sich an eine bestimmte Dateistruktur, sodass SageMaker KI Daten in Ihren Container und aus Ihrem Container kopieren kann. 

 Bei der Veröffentlichung eines Algorithmusprodukts sind sowohl die Trainings- als auch die Inferenzbilder erforderlich. Nachdem Sie Ihr Trainingsbild erstellt haben, müssen Sie ein Inferenzbild erstellen. Die beiden Bilder können zu einem Bild kombiniert werden oder als separate Bilder verbleiben. Ob Sie die Bilder kombinieren oder trennen, liegt bei Ihnen. In der Regel ist Inferenz einfacher als Training, und Sie möchten möglicherweise separate Bilder verwenden, um die Leistung der Inferenz zu verbessern.

**Anmerkung**  
 Im Folgenden finden Sie nur ein Beispiel für einen Verpackungscode für ein Trainingsbild. Weitere Informationen finden Sie unter [Verwenden Sie Ihre eigenen Algorithmen und Modelle mit den AWS Marketplace](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-marketplace.html) und den [AWS Marketplace SageMaker KI-Beispielen](https://github.com/aws/amazon-sagemaker-examples/tree/master/aws_marketplace) auf GitHub.

**Topics**
+ [Schritt 1: Erstellen des Container-Images](#ml-step-1-creating-the-container-image-1)
+ [Schritt 2: Das Image lokal erstellen und testen](#ml-step-2-building-and-testing-the-image-locally-1)

### Schritt 1: Erstellen des Container-Images
<a name="ml-step-1-creating-the-container-image-1"></a>

 Damit das Trainings-Image mit Amazon SageMaker AI kompatibel ist, muss es einer bestimmten Dateistruktur entsprechen, damit SageMaker KI die Trainingsdaten und Konfigurationseingaben in bestimmte Pfade in Ihrem Container kopieren kann. Wenn das Training abgeschlossen ist, werden die generierten Modellartefakte in einem bestimmten Verzeichnispfad in dem Container gespeichert, aus dem SageMaker AI kopiert. 

 Im Folgenden wird Docker CLI verwendet, das in einer Entwicklungsumgebung auf einer Ubuntu-Distribution von Linux installiert ist. 
+ [Bereiten Sie Ihr Programm darauf vor, Konfigurationseingaben zu lesen](#ml-prepare-your-program-to-read-configuration-inputs)
+ [Bereiten Sie Ihr Programm für das Lesen von Dateneingaben vor](#ml-prepare-your-program-to-read-data-inputs)
+ [Bereiten Sie Ihr Programm darauf vor, Trainingsergebnisse zu verfassen](#ml-prepare-your-program-to-write-training-outputs)
+ [Erstellen Sie das Skript für den Containerlauf](#ml-create-the-script-for-the-container-run-1)
+ [Erstellen der `Dockerfile`](#ml-create-the-dockerfile-1)

#### Bereiten Sie Ihr Programm darauf vor, Konfigurationseingaben zu lesen
<a name="ml-prepare-your-program-to-read-configuration-inputs"></a>

 Wenn Ihr Schulungsprogramm vom Käufer bereitgestellte Konfigurationseingaben erfordert, werden diese bei der Ausführung im Folgenden in Ihren Container kopiert. Falls erforderlich, muss Ihr Programm aus diesen spezifischen Dateipfaden lesen. 
+  `/opt/ml/input/config`ist das Verzeichnis, das Informationen enthält, die steuern, wie Ihr Programm ausgeführt wird. 
  +  `hyperparameters.json`ist ein Wörterbuch im JSON-Format mit Hyperparameternamen und -werten. Die Werte sind Zeichenketten, daher müssen Sie sie möglicherweise konvertieren. 
  +  `resourceConfig.json`[ist eine Datei im JSON-Format, die das Netzwerklayout beschreibt, das für verteilte Schulungen verwendet wird.](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-training-algo-running-container.html#your-algorithms-training-algo-running-container-dist-training) Wenn Ihr Trainingsimage verteiltes Training nicht unterstützt, können Sie diese Datei ignorieren. 

**Anmerkung**  
 Weitere Informationen zu Konfigurationseingaben finden Sie unter [So stellt Amazon SageMaker AI Schulungsinformationen](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-training-algo-running-container.html) bereit. 

#### Bereiten Sie Ihr Programm für das Lesen von Dateneingaben vor
<a name="ml-prepare-your-program-to-read-data-inputs"></a>

 Trainingsdaten können in einem der folgenden beiden Modi an den Container übergeben werden. Ihr Trainingsprogramm, das im Container ausgeführt wird, verarbeitet die Trainingsdaten in einem dieser beiden Modi. 

 **Dateimodus** 
+  `/opt/ml/input/data/<channel_name>/`enthält die Eingabedaten für diesen Kanal. Die Kanäle werden auf der Grundlage des Aufrufs der `CreateTrainingJob` Operation erstellt, aber es ist generell wichtig, dass die Kanäle den Erwartungen des Algorithmus entsprechen. Die Dateien für jeden Kanal werden von [Amazon S3](https://aws.amazon.com/s3/) in dieses Verzeichnis kopiert, wobei die durch die Amazon S3 S3-Schlüsselstruktur angegebene Baumstruktur beibehalten wird. 

 **Pipe-Modus** 
+  `/opt/ml/input/data/<channel_name>_<epoch_number>`ist die Pfeife für eine bestimmte Epoche. Epochen beginnen bei Null und nehmen jedes Mal, wenn Sie sie lesen, um eins zu. Die Anzahl der Epochen, die Sie ausführen können, ist unbegrenzt, aber Sie müssen jede Pipe schließen, bevor Sie die nächste Epoche lesen können. 

#### Bereiten Sie Ihr Programm darauf vor, Trainingsergebnisse zu verfassen
<a name="ml-prepare-your-program-to-write-training-outputs"></a>

 Die Ausgabe des Trainings wird in die folgenden Containerverzeichnisse geschrieben: 
+  `/opt/ml/model/`ist das Verzeichnis, in das Sie das Modell oder die Modellartefakte schreiben, die Ihr Trainingsalgorithmus generiert. Ihr Modell kann jedes beliebige Format haben. Es kann sich um eine einzelne Datei oder einen ganzen Verzeichnisbaum handeln. SageMaker AI packt alle Dateien in diesem Verzeichnis in eine komprimierte Datei (.tar.gz). Diese Datei ist an dem Amazon S3 S3-Speicherort verfügbar, der durch den `DescribeTrainingJob` API-Vorgang zurückgegeben wurde. 
+  `/opt/ml/output/`ist ein Verzeichnis, in das der Algorithmus eine `failure` Datei schreiben kann, die beschreibt, warum der Job fehlgeschlagen ist. Der Inhalt dieser Datei wird im `FailureReason` Feld des `DescribeTrainingJob` Ergebnisses zurückgegeben. Bei erfolgreichen Aufträgen gibt es keinen Grund, diese Datei zu schreiben, da sie ignoriert wird. 

#### Erstellen Sie das Skript für den Containerlauf
<a name="ml-create-the-script-for-the-container-run-1"></a>

 Erstellen Sie ein `train` Shell-Skript, das SageMaker AI ausführt, wenn es das Docker-Container-Image ausführt. Wenn das Training abgeschlossen ist und die Modellartefakte in ihre jeweiligen Verzeichnisse geschrieben wurden, beenden Sie das Skript. 

 **`./train`** 

```
#!/bin/bash

# Run your training program here
#
#
#
#
```

#### Erstellen der `Dockerfile`
<a name="ml-create-the-dockerfile-1"></a>

 Erstellen Sie `Dockerfile` in Ihrem Build-Kontext eine. In diesem Beispiel wird Ubuntu 18.04 als Basis-Image verwendet, aber Sie können mit jedem Basis-Image beginnen, das für Ihr Framework funktioniert. 

 **`./Dockerfile`** 

```
FROM ubuntu:18.04

# Add training dependencies and programs
#
#
#
#
#
# Add a script that SageMaker AI will run
# Set run permissions
# Prepend program directory to $PATH
COPY /train /opt/program/train
RUN chmod 755 /opt/program/train
ENV PATH=/opt/program:${PATH}
```

 Das `Dockerfile` fügt das zuvor erstellte `train` Skript zum Image hinzu. Das Verzeichnis des Skripts wird dem PATH hinzugefügt, sodass es ausgeführt werden kann, wenn der Container ausgeführt wird. 

 Im vorherigen Beispiel gibt es keine tatsächliche Trainingslogik. Fügen Sie für Ihr aktuelles Trainingsimage die Trainingsabhängigkeiten zu und fügen Sie die Logik hinzu`Dockerfile`, um die Trainingseingaben zu lesen, um die Modellartefakte zu trainieren und zu generieren. 

 Ihr Trainingsimage muss alle erforderlichen Abhängigkeiten enthalten, da es keinen Internetzugang haben wird. 

 Weitere Informationen finden Sie unter [Verwenden Sie Ihre eigenen Algorithmen und Modelle mit den AWS Marketplace](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-marketplace.html) und den [AWS Marketplace SageMaker KI-Beispielen](https://github.com/aws/amazon-sagemaker-examples/tree/master/aws_marketplace) auf GitHub.

### Schritt 2: Das Image lokal erstellen und testen
<a name="ml-step-2-building-and-testing-the-image-locally-1"></a>

 Im Build-Kontext existieren jetzt die folgenden Dateien: 
+ `./Dockerfile`
+ `./train`
+ Ihre Trainingsabhängigkeiten und -logik

 Als Nächstes können Sie dieses Container-Image erstellen, ausführen und testen. 

#### Erstellen Sie das Image
<a name="ml-build-the-image-1"></a>

 Führen Sie den Docker-Befehl im Build-Kontext aus, um das Image zu erstellen und zu taggen. In diesem Beispiel wird das Tag `my-training-image` verwendet. 

```
sudo docker build --tag my-training-image ./
```

 Nachdem Sie diesen Docker-Befehl ausgeführt haben, um das Image zu erstellen, sollten Sie die Ausgabe sehen, während Docker das Image auf der Grundlage jeder Zeile in Ihrem erstellt. `Dockerfile` Wenn der Vorgang abgeschlossen ist, sollten Sie etwas Ähnliches wie das Folgende sehen. 

```
Successfully built abcdef123456
Successfully tagged my-training-image:latest
```

#### Lokales Ausführen von
<a name="ml-run-locally-1"></a>

 Nachdem dieser Vorgang abgeschlossen ist, testen Sie das Image lokal, wie im folgenden Beispiel gezeigt. 

```
sudo docker run \
  --rm \
  --volume '<path_to_input>:/opt/ml/input:ro' \
  --volume '<path_to_model>:/opt/ml/model' \
  --volume '<path_to_output>:/opt/ml/output' \
  --name my-training-container \
  my-training-image \
  train
```

 Im Folgenden finden Sie Befehlsdetails: 
+  `--rm`— Entfernt den Container automatisch, nachdem er gestoppt wurde. 
+  `--volume '<path_to_input>:/opt/ml/input:ro'`— Stellen Sie das Testeingabeverzeichnis für den Container schreibgeschützt zur Verfügung. 
+  `--volume '<path_to_model>:/opt/ml/model'`— Binden Sie den Pfad ein, in dem die Modellartefakte auf dem Host-Computer gespeichert sind, wenn der Trainingstest abgeschlossen ist. 
+  `--volume '<path_to_output>:/opt/ml/output'`— Binden Sie den Pfad, in den die Fehlerursache in einer `failure` Datei auf dem Host-Computer geschrieben wird. 
+  `--name my-training-container`— Geben Sie diesem laufenden Container einen Namen. 
+  `my-training-image`— Führt das erstellte Image aus. 
+  `train`— Führen Sie dasselbe Skript aus, das SageMaker AI beim Ausführen des Containers ausführt. 

 Nachdem Sie diesen Befehl ausgeführt haben, erstellt Docker einen Container aus dem von Ihnen erstellten Trainings-Image und führt ihn aus. Der Container führt das `train` Skript aus, das Ihr Trainingsprogramm startet. 

 Nachdem Ihr Trainingsprogramm abgeschlossen und der Container beendet wurde, überprüfen Sie, ob die Artefakte des Ausgabemodells korrekt sind. Überprüfen Sie außerdem die Protokollausgaben, um sicherzustellen, dass sie keine Protokolle erzeugen, die Sie nicht benötigen, und stellen Sie gleichzeitig sicher, dass genügend Informationen über den Trainingsjob bereitgestellt werden. 

 Damit ist das Packen Ihres Trainingscodes für ein Algorithmusprodukt abgeschlossen. Da ein Algorithmusprodukt auch ein Inferenzbild enthält, fahren Sie mit dem nächsten Abschnitt fort. [Erstellen eines Inferenzbilds für Algorithmen](#ml-creating-an-inference-image-for-algorithms) 

## Erstellen eines Inferenzbilds für Algorithmen
<a name="ml-creating-an-inference-image-for-algorithms"></a>

 Dieser Abschnitt bietet eine exemplarische Vorgehensweise zum Verpacken Ihres Inferenzcodes in ein Inferenzbild für Ihr Algorithmusprodukt. 

 Das Inferenz-Image ist ein Docker-Image, das Ihre Inferenzlogik enthält. Der Container stellt zur Laufzeit HTTP-Endpunkte zur Verfügung, damit SageMaker KI Daten zu und von Ihrem Container weiterleiten kann. 

 Bei der Veröffentlichung eines Algorithmusprodukts sind sowohl die Trainings- als auch die Inferenzbilder erforderlich. Falls Sie dies noch nicht getan haben, lesen Sie den vorherigen Abschnitt über[Ein Trainingsbild für Algorithmen erstellen](#ml-creating-a-training-image-for-algorithms). Die beiden Bilder können zu einem Bild kombiniert werden oder als separate Bilder verbleiben. Ob Sie die Bilder kombinieren oder trennen, liegt bei Ihnen. In der Regel ist Inferenz einfacher als Training, und Sie möchten möglicherweise separate Bilder verwenden, um die Leistung der Inferenz zu verbessern.

**Anmerkung**  
 Im Folgenden finden Sie nur ein Beispiel für einen Verpackungscode für ein Inferenzbild. Weitere Informationen finden Sie unter [Verwenden Sie Ihre eigenen Algorithmen und Modelle mit den AWS Marketplace](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-marketplace.html) und den [AWS Marketplace SageMaker KI-Beispielen](https://github.com/aws/amazon-sagemaker-examples/tree/master/aws_marketplace) auf GitHub.  
Das folgende Beispiel verwendet der Einfachheit halber einen Webdienst, [Flask](https://pypi.org/project/Flask/), und gilt nicht als produktionsbereit.

**Topics**
+ [Schritt 1: Erstellen des Inferenzbilds](#ml-step-1-creating-the-inference-image)
+ [Schritt 2: Lokales Erstellen und Testen des Images](#ml-step-2-building-and-testing-the-image-locally-2)

### Schritt 1: Erstellen des Inferenzbilds
<a name="ml-step-1-creating-the-inference-image"></a>

 Damit das Inferenz-Image mit SageMaker KI kompatibel ist, muss das Docker-Image HTTP-Endpunkte verfügbar machen. Während Ihr Container läuft, leitet SageMaker KI vom Käufer bereitgestellte Eingaben zur Inferenz an den HTTP-Endpunkt Ihres Containers weiter. Das Ergebnis der Inferenz wird im Hauptteil der HTTP-Antwort zurückgegeben. 

 Im Folgenden wird Docker CLI verwendet, das in einer Entwicklungsumgebung auf einer Ubuntu-Distribution von Linux installiert ist. 
+ [Erstellen Sie das Webserver-Skript](#ml-create-the-web-server-script-1) 
+ [Erstellen Sie das Skript für den Containerlauf](#ml-create-the-script-for-the-container-run-2)
+ [Erstellen der `Dockerfile`](#ml-create-the-dockerfile-2)
+ [Ihr Programm wird für das dynamische Laden von Modellartefakten vorbereitet](#ml-preparing-your-program-to-dynamically-load-model-artifacts)

#### Erstellen Sie das Webserver-Skript
<a name="ml-create-the-web-server-script-1"></a>

 In diesem Beispiel wird ein Python-Server namens [Flask](https://pypi.org/project/Flask/) verwendet, aber Sie können jeden Webserver verwenden, der für Ihr Framework funktioniert. 

**Anmerkung**  
[Flask](https://pypi.org/project/Flask/) wird hier der Einfachheit halber verwendet. Er gilt nicht als produktionsreifer Webserver.

 Erstellen Sie das Flask-Webserver-Skript, das die beiden HTTP-Endpunkte auf dem von AI verwendeten TCP-Port 8080 bedient. SageMaker Im Folgenden sind die beiden erwarteten Endpunkte aufgeführt: 
+  `/ping`— SageMaker KI sendet HTTP-GET-Anfragen an diesen Endpunkt, um zu überprüfen, ob Ihr Container bereit ist. Wenn Ihr Container bereit ist, reagiert er auf HTTP-GET-Anfragen an diesem Endpunkt mit einem HTTP 200-Antwortcode. 
+  `/invocations`— SageMaker KI sendet HTTP-POST-Anfragen zur Inferenz an diesen Endpunkt. Die Eingabedaten für die Inferenz werden im Hauptteil der Anfrage gesendet. Der vom Benutzer angegebene Inhaltstyp wird im HTTP-Header übergeben. Der Hauptteil der Antwort ist die Inferenzausgabe. 

 **`./web_app_serve.py`** 

```
# Import modules
import json
import re
from flask import Flask
from flask import request
app = Flask(__name__)

# Create a path for health checks
@app.route("/ping")
def endpoint_ping():
  return ""
 
# Create a path for inference
@app.route("/invocations", methods=["POST"])
def endpoint_invocations():
  
  # Read the input
  input_str = request.get_data().decode("utf8")
  
  # Add your inference code here.
  #
  #
  #
  #
  #
  # Add your inference code here.
  
  # Return a response with a prediction
  response = {"prediction":"a","text":input_str}
  return json.dumps(response)
```

 Im vorherigen Beispiel gibt es keine tatsächliche Inferenzlogik. Fügen Sie für Ihr eigentliches Inferenzbild die Inferenzlogik zur Web-App hinzu, sodass sie die Eingabe verarbeitet und die Vorhersage zurückgibt. 

 Ihr Inferenzbild muss alle erforderlichen Abhängigkeiten enthalten, da es keinen Internetzugang haben wird. 

#### Erstellen Sie das Skript für den Containerlauf
<a name="ml-create-the-script-for-the-container-run-2"></a>

 Erstellen Sie ein Skript mit dem Namen`serve`, dass SageMaker AI ausgeführt wird, wenn es das Docker-Container-Image ausführt. Starten Sie in diesem Skript den HTTP-Webserver. 

 **`./serve`** 

```
#!/bin/bash

# Run flask server on port 8080 for SageMaker AI
flask run --host 0.0.0.0 --port 8080
```

#### Erstellen der `Dockerfile`
<a name="ml-create-the-dockerfile-2"></a>

 Erstellen Sie `Dockerfile` in Ihrem Build-Kontext eine. In diesem Beispiel wird Ubuntu 18.04 verwendet, aber Sie können mit jedem Basis-Image beginnen, das für Ihr Framework funktioniert. 

 **`./Dockerfile`** 

```
FROM ubuntu:18.04

# Specify encoding
ENV LC_ALL=C.UTF-8
ENV LANG=C.UTF-8

# Install python-pip
RUN apt-get update \
&& apt-get install -y python3.6 python3-pip \
&& ln -s /usr/bin/python3.6 /usr/bin/python \
&& ln -s /usr/bin/pip3 /usr/bin/pip;

# Install flask server
RUN pip install -U Flask;

# Add a web server script to the image
# Set an environment to tell flask the script to run
COPY /web_app_serve.py /web_app_serve.py
ENV FLASK_APP=/web_app_serve.py

# Add a script that Amazon SageMaker AI will run
# Set run permissions
# Prepend program directory to $PATH
COPY /serve /opt/program/serve
RUN chmod 755 /opt/program/serve
ENV PATH=/opt/program:${PATH}
```

 Das `Dockerfile` fügt die beiden zuvor erstellten Skripte zum Image hinzu. Das Verzeichnis des `serve` Skripts wird dem PATH hinzugefügt, sodass es ausgeführt werden kann, wenn der Container ausgeführt wird. 

#### Ihr Programm wird für das dynamische Laden von Modellartefakten vorbereitet
<a name="ml-preparing-your-program-to-dynamically-load-model-artifacts"></a>

 Bei Algorithmusprodukten verwendet der Käufer seine eigenen Datensätze mit Ihrem Trainingsbild, um einzigartige Modellartefakte zu generieren. Wenn der Trainingsprozess abgeschlossen ist, gibt Ihr Trainingscontainer Modellartefakte in das Container-Verzeichnis ` /opt/ml/model/` aus. SageMaker AI komprimiert den Inhalt in diesem Verzeichnis in eine .tar.gz-Datei und speichert sie in Amazon S3 in der Datei des Käufers. AWS-Konto 

 Wenn das Modell bereitgestellt wird, führt SageMaker KI Ihr Inferenzbild aus, extrahiert die Modellartefakte aus der .tar.gz-Datei, die im Konto des Käufers in Amazon S3 gespeichert ist, und lädt sie in den Inferenzcontainer im Verzeichnis. `/opt/ml/model/` Zur Laufzeit verwendet Ihr Inferenzcontainer-Code die Modelldaten. 

**Anmerkung**  
 Um jegliches geistiges Eigentum zu schützen, das möglicherweise in den Modellartefaktdateien enthalten ist, können Sie die Dateien vor der Ausgabe verschlüsseln. Weitere Informationen finden Sie unter [Sicherheit und geistiges Eigentum mit Amazon SageMaker AI](ml-security-and-intellectual-property.md). 

### Schritt 2: Lokales Erstellen und Testen des Images
<a name="ml-step-2-building-and-testing-the-image-locally-2"></a>

 Im Build-Kontext existieren jetzt die folgenden Dateien: 
+ `./Dockerfile`
+ `./web_app_serve.py`
+ `./serve`

 Als Nächstes können Sie dieses Container-Image erstellen, ausführen und testen. 

#### Erstellen Sie das Image
<a name="ml-build-the-image-2"></a>

 Führen Sie den Docker-Befehl aus, um das Image zu erstellen und zu taggen. In diesem Beispiel wird das Tag `my-inference-image` verwendet. 

```
sudo docker build --tag my-inference-image ./
```

 Nachdem Sie diesen Docker-Befehl ausgeführt haben, um das Image zu erstellen, sollten Sie die Ausgabe sehen, während Docker das Image auf der Grundlage jeder Zeile in Ihrem erstellt. `Dockerfile` Wenn der Vorgang abgeschlossen ist, sollten Sie etwas Ähnliches wie das Folgende sehen. 

```
Successfully built abcdef123456
Successfully tagged my-inference-image:latest
```

#### Lokales Ausführen von
<a name="ml-run-locally-2"></a>

 Nachdem Ihr Build abgeschlossen ist, können Sie das Image lokal testen. 

```
sudo docker run \
  --rm \
  --publish 8080:8080/tcp \
  --volume '<path_to_model>:/opt/ml/model:ro' \
  --detach \
  --name my-inference-container \
  my-inference-image \
  serve
```

 Im Folgenden finden Sie Befehlsdetails: 
+  `--rm`— Entfernt den Container automatisch, nachdem er gestoppt wurde. 
+  `--publish 8080:8080/tcp`— Machen Sie Port 8080 verfügbar, um den Port zu simulieren, an den SageMaker KI HTTP-Anfragen sendet. 
+  `--volume '<path_to_model>:/opt/ml/model:ro'`— Binden Sie den Pfad an den Ort, an dem die Testmodellartefakte auf dem Host-Computer schreibgeschützt gespeichert sind, um sie Ihrem Inferenzcode im Container zur Verfügung zu stellen. 
+  `--detach`— Führt den Container im Hintergrund aus. 
+  `--name my-inference-container`— Geben Sie diesem laufenden Container einen Namen. 
+  `my-inference-image`— Führt das erstellte Image aus. 
+  `serve`— Führen Sie dasselbe Skript aus, das SageMaker AI beim Ausführen des Containers ausführt. 

 Nach dem Ausführen dieses Befehls erstellt Docker einen Container aus dem Inferenz-Image und führt ihn im Hintergrund aus. Der Container führt das `serve` Skript aus, das Ihren Webserver zu Testzwecken startet. 

#### Testen Sie den Ping-HTTP-Endpunkt
<a name="ml-test-the-ping-http-endpoint-1"></a>

 Wenn SageMaker KI Ihren Container ausführt, pingt sie den Endpunkt regelmäßig an. Wenn der Endpunkt eine HTTP-Antwort mit dem Statuscode 200 zurückgibt, signalisiert er der SageMaker KI, dass der Container für die Inferenz bereit ist. 

 Führen Sie den folgenden Befehl aus, um den Endpunkt zu testen und den Antwortheader einzubeziehen. 

```
curl --include http://127.0.0.1:8080/ping
```

 Das folgende Beispiel zeigt eine Beispielausgabe. 

```
HTTP/1.0 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 0
Server: MyServer/0.16.0 Python/3.6.8
Date: Mon, 21 Oct 2019 06:58:54 GMT
```

#### Testen Sie den HTTP-Endpunkt der Inferenz
<a name="ml-test-the-inference-http-endpoint-1"></a>

 Wenn der Container anzeigt, dass er bereit ist, indem er einen Statuscode 200 zurückgibt, leitet SageMaker AI die Inferenzdaten über eine `POST` Anfrage an den `/invocations` HTTP-Endpunkt weiter. 

 Führen Sie den folgenden Befehl aus, um den Inferenzendpunkt zu testen. 

```
curl \
  --request POST \
  --data "hello world" \
  http://127.0.0.1:8080/invocations
```

 Eine Beispielausgabe wird im folgenden Beispiel gezeigt.. 

```
{"prediction": "a", "text": "hello world"}
```

 Da diese beiden HTTP-Endpunkte funktionieren, ist das Inferenzbild jetzt mit SageMaker KI kompatibel. 

**Anmerkung**  
 Das Modell Ihres Algorithmusprodukts kann auf zwei Arten bereitgestellt werden: in Echtzeit und im Batch-Modus. Für beide Bereitstellungen verwendet SageMaker KI beim Ausführen des Docker-Containers dieselben HTTP-Endpunkte. 

 Führen Sie den folgenden Befehl aus, um den Container zu beenden. 

```
sudo docker container stop my-inference-container
```

 Nachdem sowohl Ihre Trainings- als auch die Inferenzbilder für Ihr Algorithmusprodukt fertig und getestet sind, fahren Sie fort[Ihre Bilder in die Amazon Elastic Container Registry hochladen](ml-uploading-your-images.md). 

# Ihre Bilder in die Amazon Elastic Container Registry hochladen
<a name="ml-uploading-your-images"></a>

Nachdem Sie Ihre Inferenz- und Trainingsbilder erstellt haben, können Sie sie in die Amazon Elastic Container Registry hochladen. [Amazon ECR](https://aws.amazon.com/ecr/) ist eine vollständig verwaltete Docker-Registrierung. Amazon SageMaker AI ruft Bilder aus Amazon ECR ab, um ein Modellpaket für Inferenz oder einen Algorithmus für Trainingsaufgaben zu erstellen. AWS Marketplace ruft diese Bilder auch von Amazon ECR ab, um Ihr Modellpaket und Ihre Algorithmusprodukte zu veröffentlichen. Dieses Thema bietet eine exemplarische Vorgehensweise zum Hochladen Ihrer Inferenz- und Trainingsbilder auf Amazon ECR.

**Topics**
+ [Welche Bilder muss ich hochladen?](#ml-which-images-must-i-upload)
+ [Welche IAM-Berechtigungen sind erforderlich?](#ml-what-iam-permissions-are-required)
+ [Melden Sie sich mit Ihrem Docker-Client an AWS](#ml-log-in-your-docker-client)
+ [Erstellen Sie ein Repository und laden Sie das Bild hoch](#ml-create-repository-and-upload-image)
+ [Scannen Sie Ihr hochgeladenes Bild](#ml-scan-your-uploaded-image)

## Welche Bilder muss ich hochladen?
<a name="ml-which-images-must-i-upload"></a>

 Wenn Sie ein Modellpaket veröffentlichen, laden Sie nur ein Inferenzbild hoch. Wenn Sie einen Algorithmus veröffentlichen, laden Sie sowohl ein Inferenzbild als auch ein Trainingsbild hoch. Wenn die Inferenz- und Trainingsbilder kombiniert werden, laden Sie das kombinierte Bild nur einmal hoch. 

## Welche IAM-Berechtigungen sind erforderlich?
<a name="ml-what-iam-permissions-are-required"></a>

 Bei den folgenden Schritten wird davon ausgegangen, dass der lokale Computer über die richtigen AWS Anmeldeinformationen für eine AWS Identity and Access Management (IAM-) Rolle oder einen Benutzer beim Verkäufer verfügt. AWS-Konto Für die Rolle oder den Benutzer müssen die richtigen Richtlinien sowohl für Amazon ECR als auch AWS Marketplace für Amazon ECR gelten. Sie könnten beispielsweise die folgenden AWS verwalteten Richtlinien verwenden: 
+  [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSMarketplaceSellerProductsFullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSMarketplaceSellerProductsFullAccess.html)— Für den Zugriff auf AWS Marketplace 
+  [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ContainerRegistryFullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ContainerRegistryFullAccess.html)— Für den Zugriff auf Amazon ECR 

**Anmerkung**  
Die Links führen Sie zur *AWS Managed Policy Reference.*

## Melden Sie sich mit Ihrem Docker-Client an AWS
<a name="ml-log-in-your-docker-client"></a>

 Legen Sie eine Variable für die Datei AWS-Region fest, von der aus Sie veröffentlichen möchten (siehe[Wird AWS-Regionen für die Veröffentlichung unterstützt](ml-service-restrictions-and-limits.md#ml-supported-aws-regions-for-publishing)). Verwenden Sie für dieses Beispiel die Region USA Ost (Ohio). 

```
region=us-east-2
```

 Führen Sie den folgenden Befehl aus, um eine Variable mit Ihrer AWS-Konto ID festzulegen. In diesem Beispiel wird davon ausgegangen, dass die aktuellen AWS Command Line Interface (AWS CLI) Anmeldeinformationen denen des Verkäufers gehören AWS-Konto. 

```
account=$(aws sts get-caller-identity --query Account --output text)
```

 Um Ihren Docker CLI-Client mit Ihrer AWS-Konto Amazon ECR Docker-Registry für Ihre Region zu authentifizieren, führen Sie den folgenden Befehl aus.

```
aws ecr get-login-password \
--region ${region} \
| sudo docker login \
--username AWS \
--password-stdin \
${account}.dkr.ecr.${region}.amazonaws.com
```

## Erstellen Sie ein Repository und laden Sie das Bild hoch
<a name="ml-create-repository-and-upload-image"></a>

 Legen Sie eine Variable für das Tag des hochgeladenen Bildes und eine weitere Variable für den Namen des hochgeladenen Bild-Repositorys fest. 

```
image=my-inference-image
repo=my-inference-image
```

**Anmerkung**  
 In den vorherigen Abschnitten dieses Handbuchs, in denen die Inferenz- und die Trainingsbilder erstellt wurden, wurden sie jeweils mit **my-inference-image**und **my-training-image**gekennzeichnet. Erstellen Sie für dieses Beispiel das Inferenz-Image und laden Sie es in ein Repository mit demselben Namen hoch. 

 Führen Sie den folgenden Befehl aus, um das Image-Repository in Amazon ECR zu erstellen. 

```
aws ecr --region ${region} create-repository --repository-name "${repo}"
```

 Der vollständige Name des Amazon ECR-Repository-Speicherorts besteht aus den folgenden Teilen: ` <account-id>.dkr.ecr.<region>.amazonaws.com/<image-repository-name>` 

 Um das Bild in das Repository zu übertragen, müssen Sie es mit dem vollständigen Namen des Repository-Speicherorts kennzeichnen. 

 Legen Sie eine Variable für den vollständigen Namen des Bild-Repository-Speicherorts zusammen mit dem `latest` Tag fest. 

```
fullname="${account}.dkr.ecr.${region}.amazonaws.com/${repo}:latest"
```

 Kennzeichnen Sie das Bild mit dem vollständigen Namen. 

```
sudo docker tag ${image} ${fullname}
```

 Schließlich übertragen Sie das Inferenzbild in das Repository in Amazon ECR. 

```
sudo docker push ${fullname}
```

 Nach Abschluss des Uploads wird das Bild in der [Repository-Liste der Amazon ECR-Konsole](https://console.aws.amazon.com/ecr/repositories?region=us-east-2) in der Region angezeigt, aus der Sie veröffentlichen. Im vorherigen Beispiel wurde das Bild in ein Repository in der Region USA Ost (Ohio) übertragen. 

## Scannen Sie Ihr hochgeladenes Bild
<a name="ml-scan-your-uploaded-image"></a>

 Wählen Sie in der [Amazon ECR-Konsole](https://console.aws.amazon.com/ecr/repositories?region=us-east-2) AWS-Region das aus, aus dem Sie veröffentlichen, und öffnen Sie das Repository, in das das Bild hochgeladen wurde. Wählen Sie Ihr hochgeladenes Bild aus und starten Sie einen Scan, um nach bekannten Sicherheitslücken zu suchen. AWS Marketplace überprüft die Amazon ECR-Scanergebnisse der Container-Images, die in Ihrer Amazon SageMaker AI-Ressource verwendet werden, bevor sie veröffentlicht werden. Bevor Sie Ihr Produkt erstellen können, müssen Sie Container-Images reparieren, die Sicherheitslücken mit dem Schweregrad Kritisch oder Hoch aufweisen. 

 Nachdem Ihre Bilder erfolgreich gescannt wurden, können sie verwendet werden, um ein Modellpaket oder eine Algorithmusressource zu erstellen. 

Wenn Sie der Meinung sind, dass Ihr Produkt beim Scannen Fehler aufwies, bei denen es sich um Fehlalarme handelt, wenden Sie sich mit Informationen zu dem Fehler an das [AWS Marketplace Seller Operations](https://aws.amazon.com/marketplace/management/contact-us) Team.

 **Nächste Schritte** 
+  Größenbeschränkungen finden Sie unter [Anforderungen und bewährte Verfahren für die Entwicklung von Produkten für maschinelles Lernen](ml-listing-requirements-and-best-practices.md) 
+  Fahren Sie fort zu [Erstellen Sie Ihre Amazon SageMaker AI-Ressource](ml-creating-your-amazon-sagemaker-resource.md) 

# Erstellen Sie Ihre Amazon SageMaker AI-Ressource
<a name="ml-creating-your-amazon-sagemaker-resource"></a>

 Um ein Modellpaket oder ein Algorithmusprodukt zu veröffentlichen, müssen Sie die entsprechende [Modellpaketressource](https://docs.aws.amazon.com/marketplace/latest/userguide/ml-creating-your-amazon-sagemaker-resource.html#ml-creating-your-model-package-product) oder [Algorithmusressource](https://docs.aws.amazon.com/marketplace/latest/userguide/ml-creating-your-amazon-sagemaker-resource.html#ml-creating-your-algorithm-product) in Amazon SageMaker AI erstellen. Wenn Sie Ihre Ressource für ein AWS Marketplace Produkt erstellen, muss diese durch einen Validierungsschritt zertifiziert werden. Der Validierungsschritt erfordert, dass Sie Daten angeben, um Ihr Modellpaket oder Ihre Algorithmusressource zu testen, bevor sie veröffentlicht werden kann. In den folgenden Abschnitten erfahren Sie, wie Sie Ihre SageMaker KI-Ressource erstellen, entweder eine Modellpaketressource oder eine Algorithmusressource. Dazu gehört die Festlegung der Validierungsspezifikationen, die der SageMaker KI mitteilen, wie die Validierung durchzuführen ist. 

**Anmerkung**  
Wenn Sie die Bilder für Ihr Produkt noch nicht erstellt und in Amazon Elastic Container Registry (Amazon ECR) hochgeladen haben, finden Sie unter [Verpacken Sie Ihren Code in Bilder für maschinelles Lernen in AWS Marketplace](ml-packaging-your-code-into-images.md) und [Ihre Bilder in die Amazon Elastic Container Registry hochladen](ml-uploading-your-images.md) weitere Informationen dazu.

**Topics**
+ [Erstellen Sie Ihr Modellpaket](#ml-creating-your-model-package-product)
+ [Ihren Algorithmus erstellen](#ml-creating-your-algorithm-product)

## Erstellen Sie Ihr Modellpaket
<a name="ml-creating-your-model-package-product"></a>

 Die folgenden Anforderungen gelten für die Erstellung eines Modellpakets für AWS Marketplace: 
+  Ein in [Amazon](https://aws.amazon.com/ecr/) ECR gespeichertes Inferenzbild 
+  (Optional) Modellartefakte, separat in [Amazon S3](https://aws.amazon.com/s3/) gespeichert 
+ Ihre für Rückschlüsse verwendeten Testdaten, gespeichert in Amazon Simple Storage Service 

**Anmerkung**  
 Im Folgenden geht es um die Erstellung eines Modellpaketprodukts. Weitere Informationen zu Modellpaketen in SageMaker AI finden Sie unter [Erstellen einer Modellpaketressource](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-mkt-create-model-package.html). 

### Ressourcen für das Modellpaket erstellen
<a name="ml-create-model-package"></a>

Die folgenden Verfahren führen Sie Schritt für Schritt durch die Erstellung der Modellpaketressourcen.

**Schritt 1: So erstellen Sie die Modellpaketressourcen**

1. Öffnen Sie die [Amazon SageMaker AI-Konsole](https://us-east-2.console.aws.amazon.com/sagemaker/home).

1. Stellen Sie sicher, dass Sie sich in der AWS Region befinden, aus der Sie veröffentlichen möchten, indem Sie oben rechts auf der Seite nachsehen. Informationen zur Veröffentlichung finden Sie im [Wird AWS-Regionen für die Veröffentlichung unterstützt](ml-service-restrictions-and-limits.md#ml-supported-aws-regions-for-publishing) Abschnitt. Das Inferenzbild, das Sie in den vorherigen Schritten auf Amazon ECR hochgeladen haben, muss sich in derselben Region befinden. 

1. Wählen Sie im linken Navigationsmenü **Modellpakete** aus.

1. Wählen Sie **Create model package (Modellpaket erstellen)** aus.

Nachdem Sie das Paket erstellt haben, müssen Sie die Spezifikationen des Inferenzpakets festlegen.

**Schritt 2: So legen Sie die Inferenzspezifikationen fest**

1.  Geben Sie einen **Namen** für Ihr Modellpaket ein (z. B.*my-model-package*). 

1.  Geben Sie **unter Speicherort des Inferenzbilds** die URI Ihres Inferenzbilds ein, das auf Amazon ECR hochgeladen wurde. Sie können den URI abrufen, indem Sie Ihr Bild in der [Amazon ECR-Konsole](https://us-east-2.console.aws.amazon.com/ecr/repositories) suchen. 

1.  Wenn Ihre Modellartefakte aus dem Training mit Ihrer Logik in Ihrem Inferenzbild gebündelt sind, lassen Sie das Feld **Position der Modelldatenartefakte** leer. Andernfalls geben Sie den vollständigen Amazon S3 S3-Speicherort der komprimierten Datei (.tar.gz) Ihrer Modellartefakte an. 

1.  *Wählen Sie mithilfe des Dropdown-Felds die unterstützten Instance-Typen Ihres Inferenz-Images sowohl für Echtzeit-Inferenz- (auch als Endpunkt bezeichnet) als auch für Batch-Transform-Jobs aus.* 

1.  Wählen Sie **Weiter** aus. 

 Bevor Ihr Modellpaket erstellt und veröffentlicht werden kann, ist eine Validierung erforderlich, um sicherzustellen, dass es wie erwartet funktioniert. Dazu müssen Sie einen Batch-Transformationsjob mit den von Ihnen bereitgestellten Testdaten für Inferenz ausführen. Die Validierungsspezifikationen teilen der SageMaker KI mit, wie die Validierung durchzuführen ist. 

**Schritt 3: Um die Validierungsspezifikationen festzulegen**

1.  Stellen Sie **Dieses Modellpaket veröffentlichen AWS Marketplace auf** **Ja** ein. Wenn Sie dies auf **Nein** setzen, können Sie dieses Modellpaket später nicht veröffentlichen. Wenn Sie **Ja** wählen, [wird Ihr Modellpaket für zertifiziert](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelPackage.html#sagemaker-CreateModelPackage-request-CertifyForMarketplace) AWS Marketplace und der Validierungsschritt ist erforderlich. 

1.  Wenn Sie diesen Vorgang zum ersten Mal abschließen, wählen Sie **Neue Rolle für die **IAM-Rolle** erstellen** aus. Amazon SageMaker AI verwendet diese Rolle, wenn es Ihr Modellpaket bereitstellt. Dazu gehören Aktionen wie das Abrufen von Bildern aus Amazon ECR und Artefakten aus Amazon S3. Überprüfen Sie die Einstellungen und wählen Sie **Rolle erstellen** aus. Wenn Sie hier eine Rolle erstellen, werden der von Ihnen erstellten Rolle die in der [ AmazonSageMakerFullAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess)IAM-Richtlinie beschriebenen Berechtigungen gewährt. 

1.  Bearbeiten Sie das **JSON** im Validierungsprofil. Einzelheiten zu zulässigen Werten finden Sie unter [TransformJobDefinition](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformJobDefinition.html). 

   1.  `TransformInput.DataSource.S3Uri`: Legt fest, wo Ihre Testdaten für die Inferenz gespeichert werden. 

   1.  `TransformInput.ContentType`: Geben Sie den Inhaltstyp Ihrer Testdaten an (z. B.`application/json`,`text/plain`,`image/png `, oder einen anderen Wert). SageMaker KI validiert die tatsächlichen Eingabedaten nicht. Dieser Wert wird im `Content-type` Header-Wert an Ihren Container-HTTP-Endpunkt übergeben. 

   1.  `TransformInput.CompressionType`: `None` Wird auf gesetzt, wenn Ihre Testdaten für die Inferenz in Amazon S3 nicht komprimiert sind. 

   1.  `TransformInput.SplitType`: Legt fest`None`, dass jedes Objekt in Amazon S3 als Ganzes zur Inferenz übergeben wird. 

   1.  `TransformOutput.S3OutputPath`: Legt den Ort fest, an dem die Inferenzausgabe gespeichert ist. 

   1.  `TransformOutput.AssembleWith`: Auf einstellen`None`, um jede Inferenz als separate Objekte in Amazon S3 auszugeben. 

1.  Wählen Sie **Create model package (Modellpaket erstellen)** aus. 

 SageMaker KI ruft das Inferenzbild aus Amazon ECR ab, kopiert alle Artefakte in den Inferenzcontainer und führt einen Batch-Transformationsjob aus, der Ihre Testdaten als Inferenz verwendet. **Nach erfolgreicher Validierung ändert sich der Status in Abgeschlossen.** 

**Anmerkung**  
 Im Validierungsschritt wird die Genauigkeit des Modells anhand Ihrer Testdaten nicht bewertet. Im Validierungsschritt wird geprüft, ob der Container wie erwartet ausgeführt wird und reagiert. 

 Sie haben die Erstellung Ihrer Modellproduktressourcen abgeschlossen. Fahren Sie fort mit [Ihr Produkt anbieten in AWS Marketplace](ml-publishing-your-product-in-aws-marketplace.md). 

## Ihren Algorithmus erstellen
<a name="ml-creating-your-algorithm-product"></a>

 Im Folgenden sind die Voraussetzungen für die Erstellung eines Algorithmus aufgeführt für AWS Marketplace: 
+ Ein Inferenzbild, gespeichert in Amazon ECR 
+ Ein Trainingsbild, gespeichert in Amazon ECR 
+  Ihre Testdaten für das Training, gespeichert in Amazon S3 
+ Ihre Testdaten für Inferenz, gespeichert in Amazon S3 

**Anmerkung**  
 In der folgenden exemplarischen Vorgehensweise wird ein Algorithmusprodukt erstellt. Weitere Informationen finden Sie unter [Eine Algorithmusressource erstellen](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-mkt-create-algo.html). 

### Die Algorithmus-Ressourcen erstellen
<a name="ml-create-algorithm"></a>

Die folgenden Verfahren führen Sie Schritt für Schritt durch die Erstellung der Ressourcen in Ihrem Algorithmuspaket.

**Schritt 1: So erstellen Sie die Algorithmus-Ressourcen**

1.  Öffnen Sie die [Amazon SageMaker AI-Konsole](https://us-east-2.console.aws.amazon.com/sagemaker/home). 

1.  Stellen Sie sicher, dass Sie sich in der AWS Region befinden, aus der Sie veröffentlichen möchten, indem Sie oben rechts auf der Seite nachsehen (siehe[Wird AWS-Regionen für die Veröffentlichung unterstützt](ml-service-restrictions-and-limits.md#ml-supported-aws-regions-for-publishing)). Die Schulungs- und Inferenzbilder, die Sie in den vorherigen Schritten auf Amazon ECR hochgeladen haben, müssen sich in derselben Region befinden. 

1.  **Wählen Sie im linken Navigationsmenü Algorithmen aus.** 

1.  Wählen Sie **Create algorithm (Algorithmus erstellen)** aus. 

Nachdem Sie das Algorithmus-Paket erstellt haben, müssen Sie die Spezifikationen für das Training und die Optimierung Ihres Modells festlegen.

**Schritt 2: So legen Sie die Trainings- und Tuningspezifikationen fest**

1.  Geben Sie den **Namen** für Ihren Algorithmus ein (z. B.*my-algorithm*). 

1.  Fügen Sie **unter Trainingsbild** den vollständigen URI-Speicherort Ihres Trainingsbilds ein, das auf Amazon ECR hochgeladen wurde. Sie können den URI abrufen, indem Sie Ihr Bild in der [Amazon ECR-Konsole](https://us-east-2.console.aws.amazon.com/ecr/repositories) suchen. 

1.  Wählen Sie im Dropdown-Feld die **Instance-Typen für das Training aus, die Ihr Trainings-Image** unterstützt. 

1.  Fügen Sie im Abschnitt **Kanalspezifikation** einen Kanal für jeden Eingabedatensatz hinzu, den Ihr Algorithmus unterstützt, bis zu 20 Kanäle mit Eingabequellen. Weitere Informationen finden Sie unter [Konfiguration der Eingabedaten](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-training-algo-running-container.html#your-algorithms-training-algo-running-container-inputdataconfig). 

1.  Wählen Sie **Weiter** aus. 

1. Wenn Ihr Algorithmus Hyperparameter und Hyperparameter-Tuning unterstützt, müssen Sie die Optimierungsparameter angeben.

1.  Wählen Sie **Weiter** aus. 

**Anmerkung**  
 Es wird dringend empfohlen, dass Ihr Algorithmus Hyperparameter-Tuning unterstützt und entsprechende Parameter abstimmbar macht. Auf diese Weise können Datenwissenschaftler Modelle optimieren, um die besten Ergebnisse zu erzielen. 

Nachdem Sie die Optimierungsparameter, falls vorhanden, festgelegt haben, müssen Sie die Spezifikationen für Ihr Inferenzbild festlegen.

**Schritt 3: So legen Sie die Spezifikationen für das Inferenzbild fest**

1.  Fügen Sie **unter Speicherort des Inferenzbilds** die URI des Inferenzbilds ein, das auf Amazon ECR hochgeladen wurde. Sie können den URI abrufen, indem Sie Ihr Bild in der [Amazon ECR-Konsole](https://us-east-2.console.aws.amazon.com/ecr/repositories) suchen. 

1.  Wählen Sie mithilfe des Dropdown-Felds die unterstützten Instance-Typen für Ihr Inferenz-Image sowohl für Echtzeit-Inferenz- (auch als *Endpunkt* bezeichnet) als auch für Batch-Transform-Jobs aus. 

1.  Wählen Sie **Weiter** aus. 

 Bevor Ihr Algorithmus erstellt und veröffentlicht werden kann, ist eine Validierung erforderlich, um sicherzustellen, dass er wie erwartet funktioniert. Dazu müssen Sie sowohl einen Trainingsjob mit Testdaten für das Training als auch einen Batch-Transformationsjob mit von Ihnen bereitgestellten Testdaten für Inferenz ausführen. Die Validierungsspezifikationen teilen der SageMaker KI mit, wie die Validierung durchzuführen ist. 

**Schritt 4: Um die Validierungsspezifikationen festzulegen**

1.  Setzen Sie die **Option Diesen Algorithmus veröffentlichen AWS Marketplace** auf **Ja**. Wenn Sie dies auf **Nein** setzen, können Sie diesen Algorithmus später nicht veröffentlichen. Wenn Sie **Ja wählen,** [wird Ihr Algorithmus für die Validierung zertifiziert](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAlgorithm.html#sagemaker-CreateAlgorithm-request-CertifyForMarketplace) AWS Marketplace und die Validierungsspezifikation ist erforderlich.

1.  Wenn Sie zum ersten Mal ein Machine-Learning-Paket für **erstellen AWS Marketplace, wählen Sie Create a new role** for the **IAM** role. Amazon SageMaker AI verwendet diese Rolle beim Training Ihres Algorithmus und beim Bereitstellen des nachfolgenden Modellpakets. Dazu gehören Aktionen wie das Abrufen von Bildern aus Amazon ECR, das Speichern von Artefakten in Amazon S3 und das Kopieren von Trainingsdaten aus Amazon S3. Überprüfen Sie die Einstellungen und wählen Sie **Rolle erstellen** aus. Wenn Sie hier eine Rolle erstellen, werden der von Ihnen erstellten Rolle die in der [ AmazonSageMakerFullAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess)IAM-Richtlinie beschriebenen Berechtigungen gewährt. 

1.  Bearbeiten Sie die **JSON-Datei** im Validierungsprofil für die **Jobdefinition Training**. Weitere Hinweise zu zulässigen Werten finden Sie unter [ TrainingJobDefinition](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TrainingJobDefinition.html). 

   1.  `InputDataConfig`: Fügen Sie in diesem JSON-Array ein [Channel-Objekt](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_Channel.html) für jeden Kanal hinzu, den Sie im Schritt der Trainingsspezifikation angegeben haben. Geben Sie für jeden Kanal an, wo Ihre Testdaten für das Training gespeichert werden. 

   1.  `OutputDataConfig`: Nach Abschluss des Trainings `/opt/ml/model/` werden die Modellartefakte im Verzeichnispfad des Trainingscontainers komprimiert und nach Amazon S3 kopiert. Geben Sie den Amazon S3 S3-Speicherort an, an dem die komprimierte Datei (.tar.gz) gespeichert ist. 

1.  **Bearbeiten Sie die JSON-Datei im Validierungsprofil für die Transform-Jobdefinition.** Weitere Hinweise zu zulässigen Werten finden Sie unter [ TransformJobDefinition](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformJobDefinition.html). 

   1.  `TransformInput.DataSource.S3Uri`: Legt fest, wo Ihre Testdaten für die Inferenz gespeichert werden. 

   1.  `TransformInput.ContentType`: Geben Sie den Inhaltstyp Ihrer Testdaten an. Zum Beispiel,`application/json`, `text/plain``image/png`, oder ein anderer Wert. Amazon SageMaker AI validiert die tatsächlichen Eingabedaten nicht. Dieser Wert wird im `Content-type` Header-Wert an Ihren Container-HTTP-Endpunkt übergeben. 

   1.  `TransformInput.CompressionType`: `None` Wird auf gesetzt, wenn Ihre Testdaten für die Inferenz in Amazon S3 nicht komprimiert sind. 

   1.  `TransformInput.SplitType`: Wählen Sie aus, wie Objekte in S3 aufgeteilt werden sollen. `None`Übergibt beispielsweise jedes Objekt in Amazon S3 als Ganzes zur Inferenz. Weitere Informationen finden Sie [ SplitType](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformInput.html#sagemaker-Type-TransformInput-SplitType)in der Amazon SageMaker AI API-Referenz. 

   1.  `TransformOutput.S3OutputPath`: Legt den Speicherort fest, an dem die Inferenzausgabe gespeichert ist. 

   1.  `TransformOutput.AssembleWith`: Auf einstellen`None`, um jede Inferenz als separate Objekte in Amazon S3 auszugeben. 

1. Wählen Sie **Algorithmus-Paket erstellen**.

 SageMaker KI ruft das Trainingsbild aus Amazon ECR ab, führt einen Test-Trainingsjob mit Ihren Daten aus und speichert die Modellartefakte in Amazon S3. Anschließend ruft es das Inferenzbild aus Amazon ECR ab, kopiert die Artefakte aus Amazon S3 in den Inferenzcontainer und führt einen Batch-Transformationsjob aus, der Ihre Testdaten als Inferenz verwendet. **Nach erfolgreicher Validierung ändert sich der Status in Abgeschlossen.** 

**Anmerkung**  
 Im Validierungsschritt wird die Genauigkeit des Trainings oder des Modells anhand Ihrer Testdaten nicht bewertet. Im Validierungsschritt wird geprüft, ob die Container wie erwartet ausgeführt werden und reagieren.   
Der Validierungsschritt validiert nur die Batch-Verarbeitung. Es liegt an Ihnen, zu überprüfen, ob die Echtzeitverarbeitung mit Ihrem Produkt funktioniert.

 Sie haben die Erstellung Ihrer Algorithmus-Produktressourcen abgeschlossen. Fahren Sie fort mit [Ihr Produkt anbieten in AWS Marketplace](ml-publishing-your-product-in-aws-marketplace.md). 