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.
Gängige Datenformate für Inferenz
SageMaker Amazon-Algorithmen akzeptieren und erzeugen verschiedene MIME Typen für die HTTP Payloads, die beim Abrufen von Online- und Mini-Batch-Prognosen verwendet werden. Sie können mehrere AWS Dienste verwenden, um Datensätze zu transformieren oder vorzuverarbeiten, bevor Sie die Inferenz ausführen. Sie müssen die Daten mindestens für Folgendes konvertieren:
-
Serialisierung der Inferenzanforderung (durchgeführt von Ihnen)
-
Deserialisierung der Inferenzanforderung (durchgeführt vom Algorithmus)
-
Serialisierung der Inferenzantwort (durchgeführt vom Algorithmus)
-
Deserialisierung der Inferenzantwort (durchgeführt von Ihnen)
Themen
Konvertiert Daten für die Serialisierung von Inferenzanfragen
Zu den Inhaltstypoptionen für Inferenzanfragen des SageMaker Amazon-Algorithmus gehören: text/csv
application/json
, undapplication/x-recordio-protobuf
. Algorithmen, die nicht alle diese Typen unterstützen, können andere Typen unterstützen. XGBoostunterstützt beispielsweise nur text/csv
aus dieser Liste, unterstützt aber auch. text/libsvm
Für text/csv
sollte der Wert für das Body-Argument für invoke_endpoint
eine Zeichenfolge mit durch Kommata getrennten Werten für jede Funktion sein. Ein Datensatz für ein Modell mit vier Funktionen könnte etwa so aussehen: 1.5,16.0,14,23.0
. Alle mit den Trainingsdaten durchgeführten Umwandlungen sollten auch für die Daten durchgeführt werden, bevor Inferenzen abgerufen werden. Die Reihenfolge der Funktionen ist wichtig und muss unverändert bleiben.
application/json
ist flexibler und bietet Entwicklern mehrere mögliche Formate, die sie in ihren Anwendungen verwenden können. Auf einer höheren Ebene könnte die Nutzlast in JavaScript etwa wie folgt aussehen:
let request = { // Instances might contain multiple rows that predictions are sought for. "instances": [ { // Request and algorithm specific inference parameters. "configuration": {}, // Data in the specific format required by the algorithm. "data": { "<field name>": dataElement } } ] }
Sie haben die folgenden Optionen für das Angeben von dataElement
:
Protokollpufferentsprechung
// Has the same format as the protocol buffers implementation described for training. let dataElement = { "keys": [], "values": [], "shape": [] }
Einfacher numerischer Vektor
// An array containing numeric values is treated as an instance containing a // single dense vector. let dataElement = [1.5, 16.0, 14.0, 23.0] // It will be converted to the following representation by the SDK. let converted = { "features": { "values": dataElement } }
Für mehrere Datensätze
let request = { "instances": [ // First instance. { "features": [ 1.5, 16.0, 14.0, 23.0 ] }, // Second instance. { "features": [ -2.0, 100.2, 15.2, 9.2 ] } ] }
Daten für die Deserialisierung von Inferenzantworten konvertieren
SageMaker Amazon-Algorithmen werden JSON in verschiedenen Layouts zurückgegeben. Grundsätzlich ist dies die Struktur:
let response = { "predictions": [{ // Fields in the response object are defined on a per algorithm-basis. }] }
Die Felder, die in Voraussagen enthalten sind, sind für die verschiedenen Algorithmen unterschiedlich. Im Folgenden sehen Sie Beispiele für die Ausgabe für den k-means-Algorithmus.
Einzeldatensatz-Inferenz
let response = { "predictions": [{ "closest_cluster": 5, "distance_to_cluster": 36.5 }] }
Multi-Datensatz-Inferenz
let response = { "predictions": [ // First instance prediction. { "closest_cluster": 5, "distance_to_cluster": 36.5 }, // Second instance prediction. { "closest_cluster": 2, "distance_to_cluster": 90.3 } ] }
Multi-Datensatz-Inferenz mit protobuf-Eingabe
{ "features": [], "label": { "closest_cluster": { "values": [ 5.0 ] // e.g. the closest centroid/cluster was 1.0 }, "distance_to_cluster": { "values": [ 36.5 ] } }, "uid": "abc123", "metadata": "{ "created_at": '2017-06-03' }" }
SageMaker Algorithmen unterstützen auch das JSONLINES Format, bei dem der Inhalt der Antwort pro Datensatz dem im JSON Format entspricht. Die Struktur mit mehreren Datensätzen ist eine Sammlung von Antwortobjekten pro Datensatz, die durch Zeilenumbruchzeichen getrennt sind. Der Inhalt der Antwort für den integrierten KMeans Algorithmus für 2 Eingabedatenpunkte lautet:
{"distance_to_cluster": 23.40593910217285, "closest_cluster": 0.0} {"distance_to_cluster": 27.250282287597656, "closest_cluster": 0.0}
Bei der Ausführung einer Stapeltransformation empfehlen wir, den jsonlines
-Antworttyp zu verwenden, indem das Accept
-Feld im CreateTransformJobRequest
auf application/jsonlines
festgelegt wird.
Allgemeine Anforderungsformate für alle Algorithmen
Die meisten Algorithmen verwenden viele der folgenden Inferenzanforderungsformate.
JSONAnforderungsformat
Inhaltstyp: Anwendung/ JSON
Format mit hoher Dichte
let request = { "instances": [ { "features": [1.5, 16.0, 14.0, 23.0] } ] } let request = { "instances": [ { "data": { "features": { "values": [ 1.5, 16.0, 14.0, 23.0] } } } ] }
Format mit geringer Dichte
{ "instances": [ {"data": {"features": { "keys": [26, 182, 232, 243, 431], "shape": [2000], "values": [1, 1, 1, 4, 1] } } }, {"data": {"features": { "keys": [0, 182, 232, 243, 431], "shape": [2000], "values": [13, 1, 1, 4, 1] } } }, ] }
JSONLINESFormat der Anfrage
Inhaltstyp: Anwendung/ JSONLINES
Format mit hoher Dichte
Für die Darstellung eines einzelnen Datensatzes im Format mit hoher Dichte gibt es zwei Möglichkeiten:
{ "features": [1.5, 16.0, 14.0, 23.0] }
oder:
{ "data": { "features": { "values": [ 1.5, 16.0, 14.0, 23.0] } }
Format mit geringer Dichte
Ein einzelner Datensatz im Format mit geringer Dichte wird wie folgt dargestellt:
{"data": {"features": { "keys": [26, 182, 232, 243, 431], "shape": [2000], "values": [1, 1, 1, 4, 1] } } }
Mehrere Datensätze werden als eine Sammlung von Darstellungen einzelner Datensätze dargestellt, die durch Zeilenumbruchzeichen getrennt sind:
{"data": {"features": { "keys": [0, 1, 3], "shape": [4], "values": [1, 4, 1] } } } { "data": { "features": { "values": [ 1.5, 16.0, 14.0, 23.0] } } { "features": [1.5, 16.0, 14.0, 23.0] }
CSVFormat der Anfrage
Inhaltstyp: text/CSV; label_size=0
Anmerkung
CSVUnterstützung ist für Faktorisierungsmaschinen nicht verfügbar.
RECORDIOFormat der Anfrage
Inhaltstyp: Anwendung/ x-recordio-protobuf
Verwenden Sie die Batch-Transformation mit integrierten Algorithmen
Bei der Ausführung der Batch-Transformation wurde empfohlen, statt des JSONLINES Antworttyps den Antworttyp zu verwendenJSON, sofern dieser vom Algorithmus unterstützt wird. Setzen Sie dazu das Accept
Feld in das Feld CreateTransformJobRequest
aufapplication/jsonlines
.
Wenn Sie einen Transformationsauftrag erstellen, SplitType
muss der auf der Grundlage ContentType
der Eingabedaten festgelegt werden. Entsprechend muss AssembleWith
abhängig vom Accept
-Feld in der CreateTransformJobRequest
entsprechend eingestellt werden. Verwenden Sie die folgende Tabelle, um diese Felder festzulegen:
ContentType | Empfohlen SplitType |
---|---|
application/x-recordio-protobuf |
RecordIO |
text/csv |
Line |
application/jsonlines |
Line |
application/json |
None |
application/x-image |
None |
image/* |
None |
Accept | Empfohlen AssembleWith |
---|---|
application/x-recordio-protobuf |
None |
application/json |
None |
application/jsonlines |
Line |
Weitere Informationen zu Antwortformaten für bestimmte Algorithmen finden Sie in den folgenden Artikeln: