

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.

# Benutzerdefinierter Inferenzcode mit Stapeltransformation
<a name="your-algorithms-batch-code"></a>

In diesem Abschnitt wird erklärt, wie Amazon SageMaker AI mit einem Docker-Container interagiert, der Ihren eigenen Inferenzcode für die Batch-Transformation ausführt. Verwenden Sie diese Informationen zum Schreiben von Inferenzcode und zum Erstellen eines Docker-Images. 

**Topics**
+ [

## Wie SageMaker KI Ihr Inferenz-Image ausführt
](#your-algorithms-batch-code-run-image)
+ [

## Wie SageMaker KI Ihre Modellartefakte lädt
](#your-algorithms-batch-code-load-artifacts)
+ [

## So bearbeiten Container Anforderungen
](#your-algorithms-batch-code-how-containe-serves-requests)
+ [

## So sollte Ihr Container auf Inferenzanforderungen reagieren
](#your-algorithms-batch-code-how-containers-should-respond-to-inferences)
+ [

## So sollte Ihr Container auf Zustandsprüfungsanforderungen (Ping-Anforderungen) reagieren
](#your-algorithms-batch-algo-ping-requests)

## Wie SageMaker KI Ihr Inferenz-Image ausführt
<a name="your-algorithms-batch-code-run-image"></a>

Um einen Container so zu konfigurieren, dass er als ausführbare Datei ausgeführt wird, verwenden Sie eine `ENTRYPOINT`-Anweisung in einer Dockerfile. Beachten Sie Folgendes: 
+ Bei Batch-Transformationen ruft SageMaker KI das Modell in Ihrem Namen auf. SageMaker AI führt den Container wie folgt aus:

  ```
  docker run image serve
  ```

  Die Eingabe für Batch-Transformationen muss ein Format haben, das in kleinere Dateien aufgeteilt werden kann, um sie parallel zu verarbeiten. Zu diesen Formaten gehören CSV, [JSON](https://www.json.org/json-en.html), [JSON Lines [TFRecord](https://www.tensorflow.org/tutorials/load_data/tfrecord)](https://jsonlines.org/)und [RecordIO](https://mesos.apache.org/documentation/latest/recordio/).

  SageMaker AI überschreibt `CMD` Standardanweisungen in einem Container, indem das `serve` Argument hinter dem Bildnamen angegeben wird. Das `serve`-Argument überschreibt Argumente, die Sie mit dem `CMD`-Befehl in der Dockerfile bereitstellen.

   
+ Es wird empfohlen, das `exec`-Formular der `ENTRYPOINT`-Anleitung zu verwenden:

  ```
  ENTRYPOINT ["executable", "param1", "param2"]
  ```

  Beispiel:

  ```
  ENTRYPOINT ["python", "k_means_inference.py"]
  ```

   
+ SageMaker AI legt Umgebungsvariablen fest, die in [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html)und [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html)auf Ihrem Container angegeben sind. Zusätzlich werden die folgenden Umgebungsvariablen ausgefüllt:
  + `SAGEMAKER_BATCH` wird auf `true` gesetzt, wenn der Container Batch-Transformationen durchführt.
  + `SAGEMAKER_MAX_PAYLOAD_IN_MB` wird auf die größte Nutzlast gesetzt, die über HTTP an den Container gesendet wird.
  + `SAGEMAKER_BATCH_STRATEGY` wird auf `SINGLE_RECORD` gesetzt, wenn der Container einen einzigen Datensatz pro Aufruf erhält, und auf `MULTI_RECORD`, wenn der Container so viele Datensätze erhält, wie in die Nutzlast passen.
  + `SAGEMAKER_MAX_CONCURRENT_TRANSFORMS` ist auf die maximale Anzahl von `/invocations`-Anfragen festgelegt, die gleichzeitig geöffnet werden können.
**Anmerkung**  
Die letzten drei Umgebungsvariablen stammen aus dem API-Aufruf durch den Benutzer. Wenn der Benutzer hierfür keine Werte festlegt, werden sie nicht übergeben. In diesem Fall werden entweder die Standardwerte oder die vom Algorithmus (als Antwort auf `/execution-parameters`) angeforderten Werte verwendet.
+ Wenn Sie planen, GPU-Geräte für Modellinferenzen zu verwenden (durch Angabe GPU-basierter ML-Datenverarbeitungs-Instances in Ihrer `CreateTransformJob`-Anforderung), stellen Sie sicher, dass Ihre Container nvidia-docker-kompatibel sind. Bündeln Sie NVIDIA-Treiber nicht mit dem Abbild. Mehr Informationen über nvidia-docker finden Sie unter [NVIDIA/nvidia-docker](https://github.com/NVIDIA/nvidia-docker). 

   
+ Sie können den `init` Initialisierer nicht als Ihren Einstiegspunkt in SageMaker KI-Containern verwenden, da er durch die Train-and-Serve-Argumente verwirrt wird.

  

## Wie SageMaker KI Ihre Modellartefakte lädt
<a name="your-algorithms-batch-code-load-artifacts"></a>

In einer [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html)-Anforderung enthalten Containerdefinitionen den `ModelDataUrl`-Parameter, der den Speicherort in Amazon S3 angibt, an dem die Modellartefakte gespeichert werden. Wenn Sie SageMaker KI verwenden, um Schlussfolgerungen zu ziehen, verwendet sie diese Informationen, um zu bestimmen, von wo aus die Modellartefakte kopiert werden sollen. Es kopiert die Artefakte für die Verwendung durch Ihren Inferenzcode in das `/opt/ml/model`-Verzeichnis im Docker-Container.

Der `ModelDataUrl`-Parameter muss auf eine tar.gz-Datei verweisen. Andernfalls kann SageMaker AI die Datei nicht herunterladen. Wenn Sie ein Modell in SageMaker KI trainieren, werden die Artefakte als einzelne komprimierte TAR-Datei in Amazon S3 gespeichert. Wenn Sie ein Modell in einem anderen Framework trainieren, müssen Sie die Modellartefakte in Amazon S3 als komprimierte TAR-Datei speichern. SageMaker AI dekomprimiert diese TAR-Datei und speichert sie im `/opt/ml/model` Verzeichnis im Container, bevor der Batch-Transformationsjob gestartet wird. 

## So bearbeiten Container Anforderungen
<a name="your-algorithms-batch-code-how-containe-serves-requests"></a>

Für Container muss ein Webserver implementiert werden, der auf Aufrufe und Ping-Anfragen auf Port 8080 reagiert. Bei Batch-Transformationen haben Sie die Möglichkeit, Algorithmen zur Implementierung von Ausführungsparameteranforderungen festzulegen, um KI eine dynamische Laufzeitkonfiguration bereitzustellen. SageMaker SageMaker KI verwendet die folgenden Endpunkte: 
+ `ping`— Wird verwendet, um den Zustand des Containers regelmäßig zu überprüfen. SageMaker KI wartet auf einen `200` HTTP-Statuscode und einen leeren Text auf eine erfolgreiche Ping-Anfrage, bevor sie eine Aufrufanforderung sendet. Sie können eine Ping-Anfrage senden, um ein Modell in den Speicher zu laden und Interferenzen zu erzeugen, wenn Aufrufanforderungen gesendet werden.
+ (Optional) `execution-parameters` – Ermöglicht es dem Algorithmus, die optimalen Abstimmungsparameter für einen Auftrag zur Laufzeit bereitzustellen. Auf der Grundlage des für einen Container CPUs verfügbaren Speichers wählt der Algorithmus die entsprechenden `MaxConcurrentTransforms``BatchStrategy`, und `MaxPayloadInMB` Werte für den Job aus.

Vor dem Aufrufen der Aufrufanforderung versucht SageMaker AI, die Anfrage mit den Ausführungsparametern aufzurufen. Wenn Sie einen Batch-Transformationsauftrag erstellen, können Sie Werte für die `MaxConcurrentTransforms` Parameter, und angeben. `BatchStrategy` `MaxPayloadInMB` SageMaker AI bestimmt die Werte für diese Parameter anhand dieser Rangfolge:

1. Die Parameterwerte, die Sie beim Erstellen der `CreateTransformJob`-Anforderung angeben.

1. Die Werte, die der Modellcontainer zurückgibt, wenn SageMaker AI den Endpunkt der Ausführungsparameter aufruft

1. Die Standardparameterwerte sind in der folgenden Tabelle aufgeführt.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/your-algorithms-batch-code.html)

Die Antwort auf eine `GET`-Ausführungsparameter-Anforderung ist ein JSON-Objekt mit Schlüsseln für die `MaxConcurrentTransforms`-, – `BatchStrategy`und `MaxPayloadInMB`-Parameter. Dies ist ein Beispiel für eine gültige Antwort:

```
{
“MaxConcurrentTransforms”: 8,
“BatchStrategy": "MULTI_RECORD",
"MaxPayloadInMB": 6
}
```

## So sollte Ihr Container auf Inferenzanforderungen reagieren
<a name="your-algorithms-batch-code-how-containers-should-respond-to-inferences"></a>

Um Rückschlüsse zu erhalten, sendet Amazon SageMaker AI eine POST-Anfrage an den Inferenzcontainer. Der POST-Anforderungstext enthält Daten aus Amazon S3. Amazon SageMaker AI leitet die Anfrage an den Container weiter und gibt das Inferenzergebnis aus dem Container zurück, wobei die Daten aus der Antwort in Amazon S3 gespeichert werden.

Zum Empfangen von Inferenzanforderungen muss der Container über einen Webserver verfügen, der den Port 8080 überwacht, und muss POST-Anforderungen an den `/invocations`-Endpunkt akzeptieren. Das Timeout für Inferenzanforderungen und die maximale Anzahl an Wiederholungen können über `[ModelClientConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelClientConfig.html)` konfiguriert werden.

## So sollte Ihr Container auf Zustandsprüfungsanforderungen (Ping-Anforderungen) reagieren
<a name="your-algorithms-batch-algo-ping-requests"></a>

Die einfachste Anforderung für den Container besteht darin, mit einem HTTP 200-Statuscode ohne Text zu antworten. Dies zeigt SageMaker AI an, dass der Container bereit ist, Inferenzanfragen am Endpunkt anzunehmen. `/invocations`

Die Mindestgrenze besteht darin, dass der Container statische 200 zurückgibt, ein Containerentwickler kann diese Funktionalität jedoch nutzen, um umfassendere Prüfungen durchzuführen. Das Anforderungstimeout bei `/ping`-Versuchen beträgt 2 Sekunden.