Überprüfen Sie den Modellcontainer - Amazon SageMaker

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.

Überprüfen Sie den Modellcontainer

In diesem Abschnitt erfahren Sie, wie Sie die Ein- und Ausgaben des Modellcontainers vorab auf Kompatibilität prüfen, bevor Sie einen Endpunkt konfigurieren. Der SageMaker Clarify-Erklärer ist modellunabhängig, hat jedoch Anforderungen an die Eingabe und Ausgabe von Modellcontainern.

Anmerkung

Sie können die Effizienz steigern, indem Sie Ihren Container so konfigurieren, dass er Batch-Anfragen unterstützt, die zwei oder mehr Datensätze in einer einzigen Anfrage unterstützen. Ein einzelner Datensatz ist beispielsweise eine einzelne CSV Datenzeile oder eine einzelne Zeile mit Zeilendaten. JSON SageMaker Clarify versucht zunächst, einen Mini-Batch von Datensätzen an den Modellcontainer zu senden, bevor auf einzelne Datensatzanfragen zurückgegriffen wird.

Eingabe des Modellcontainers

CSV

Der Modellcontainer unterstützt die Eingabe CSV mit dem MIME Typ:text/csv. Die folgende Tabelle zeigt Beispieleingaben, die SageMaker Clarify unterstützt.

Eingabe des Modellcontainers (Zeichenkettendarstellung) Kommentare

'1,2,3,4'

Einzelner Datensatz, der vier numerische Merkmale verwendet.

'1,2,3,4\n5,6,7,8'

Zwei Datensätze, getrennt durch einen Zeilenumbruch '\n'.

'"This is a good product",5'

Einzelner Datensatz, der ein Textmerkmal und ein numerisches Merkmal enthält.

‘"This is a good product",5\n"Bad shopping experience",1'

Zwei Datensätze.

JSON Lines

SageMaker unterstützt auch Eingaben im Format JSON Lines Dense mit dem MIME Typ:application/jsonlines, wie in der folgenden Tabelle dargestellt.

Eingabe des Modellcontainers Kommentare

'{"data":{"features":[1,2,3,4]}}'

Einzelner Datensatz; eine Liste von Features kann per JMESPath Ausdruck extrahiert werdendata.features.

'{"data":{"features":[1,2,3,4]}}\n{"data":{"features":[5,6,7,8]}}'

Zwei Datensätze.

'{"features":["This is a good product",5]}'

Einzelner Datensatz; eine Liste von Merkmalen kann durch einen JMESPath Ausdruck extrahiert werdenfeatures.

'{"features":["This is a good product",5]}\n{"features":["Bad shopping experience",1]}'

Zwei Datensätze.

Ausgabe des Modellcontainers

Die Ausgabe Ihres Modellcontainers sollte ebenfalls entweder CSV im Format JSON Lines Dense oder Lines erfolgen. Darüber hinaus sollte der Modellcontainer die Wahrscheinlichkeiten der Eingabedatensätze enthalten, die SageMaker Clarify zur Berechnung von Feature-Attributionen verwendet.

Die folgenden Datenbeispiele beziehen sich auf Modellcontainer-Ausgaben im CSV Format.

Probability only

Bei Regressions- und binären Klassifikationsproblemen gibt der Modellcontainer einen einzelnen Wahrscheinlichkeitswert (Bewertung) für das vorhergesagte Label aus. Diese Wahrscheinlichkeiten können mit dem Spaltenindex 0 extrahiert werden. Bei Problemen mit mehreren Klassen gibt der Modellcontainer eine Liste von Wahrscheinlichkeiten (Bewertungen) aus. Bei Problemen mit mehreren Klassen werden alle Werte extrahiert, wenn kein Index angegeben wird.

Eingabe des Modellcontainers Ausgabe des Modellcontainers (Zeichenkettendarstellung)

Einzelner Datensatz

'0.6'

Zwei Datensätze (Ergebnisse in einer Zeile)

'0.6,0.3'

Zwei Datensätze (Ergebnisse in einer Zeile)

'0.6\n0.3'

Einzelner Datensatz eines Modells mit mehreren Klassen (drei Klassen)

'0.1,0.6,0.3'

Zwei Datensätze eines Modells mit mehreren Klassen (drei Klassen)

'0.1,0.6,0.3\n0.2,0.5,0.3'

Predicted label and probabilities

Der Modellcontainer gibt das vorhergesagte Label gefolgt von seiner Wahrscheinlichkeit im CSVFormat aus. Die Wahrscheinlichkeiten können mit dem Index 1 extrahiert werden.

Eingabe des Modellcontainers Ausgabe des Modellcontainers

Einzelner Datensatz

'1,0.6'

Zwei Datensätze

'1,0.6\n0,0.3'

Predicted labels header and probabilities

Ein von Autopilot trainierter Modellcontainer mit mehreren Klassen kann so konfiguriert werden, dass er die Zeichenkettendarstellung der Liste der vorhergesagten Labels und Wahrscheinlichkeiten im Format ausgibt. CSV Im folgenden Beispiel können die Wahrscheinlichkeiten per Index 1 extrahiert werden. Die Label-Header können per Index 1 extrahiert werden, und sie können mithilfe des Index 0 extrahiert werden.

Eingabe des Modellcontainers Ausgabe des Modellcontainers

Einzelner Datensatz

'"[\'cat\',\'dog\',\'fish\']","[0.1,0.6,0.3]"'

Zwei Datensätze

'"[\'cat\',\'dog\',\'fish\']","[0.1,0.6,0.3]"\n"[\'cat\',\'dog\',\'fish\']","[0.2,0.5,0.3]"'

Die folgenden Datenbeispiele beziehen sich auf Modellcontainer-Ausgaben im Lines-Format. JSON

Probability only

In diesem Beispiel gibt der Modellcontainer die Wahrscheinlichkeit, die durch einen JMESPathAusdruck extrahiert werden kann, score im JSONLines-Format aus.

Eingabe des Modellcontainers Ausgabe des Modellcontainers

Einzelner Datensatz

'{"score":0.6}'

Zwei Datensätze

'{"score":0.6}\n{"score":0.3}'

Predicted label and probabilities

In diesem Beispiel gibt ein Modellcontainer mit mehreren Klassen eine Liste von Label-Headern zusammen mit einer Liste von Wahrscheinlichkeiten im JSON Lines-Format aus. Die Wahrscheinlichkeiten können durch einen JMESPath-Ausdruck probability extrahiert werden, und die Label-Header können durch einen JMESPath-Ausdruck extrahiert werden predicted labels.

Eingabe des Modellcontainers Ausgabe des Modellcontainers

Einzelner Datensatz

'{"predicted_labels":["cat","dog","fish"],"probabilities":[0.1,0.6,0.3]}'

Zwei Datensätze

'{"predicted_labels":["cat","dog","fish"],"probabilities":[0.1,0.6,0.3]}\n{"predicted_labels":["cat","dog","fish"],"probabilities":[0.2,0.5,0.3]}'

Predicted labels header and probabilities

In diesem Beispiel gibt ein Modellcontainer mit mehreren Klassen eine Liste von Label-Headern und Wahrscheinlichkeiten im Lines-Format aus. JSON Die Wahrscheinlichkeiten können durch einen JMESPath-Ausdruck probability extrahiert werden, und die Label-Header können durch einen JMESPath-Ausdruck extrahiert werden predicted labels.

Eingabe des Modellcontainers Ausgabe des Modellcontainers

Einzelner Datensatz

'{"predicted_labels":["cat","dog","fish"],"probabilities":[0.1,0.6,0.3]}'

Zwei Datensätze

'{"predicted_labels":["cat","dog","fish"],"probabilities":[0.1,0.6,0.3]}\n{"predicted_labels":["cat","dog","fish"],"probabilities":[0.2,0.5,0.3]}'

Validierung von Modellcontainern

Wir empfehlen, dass Sie Ihr Modell auf einem SageMaker Echtzeit-Inferenzendpunkt bereitstellen und Anfragen an den Endpunkt senden. Untersuchen Sie die Anfragen (Modellcontainer-Eingaben) und Antworten (Modellcontainer-Ausgaben) manuell, um sicherzustellen, dass beide den Anforderungen in den Abschnitten Modellcontainer-Eingabe und Modellcontainer-Ausgabe entsprechen. Wenn Ihr Modellcontainer Batch-Anfragen unterstützt, können Sie mit einer einzelnen Datensatzanforderung beginnen und dann zwei oder mehr Datensätze ausprobieren.

Die folgenden Befehle veranschaulichen das Anfordern einer Antwort mit AWS CLI. Das AWS CLI ist in SageMaker Studio Classic- und SageMaker Notebook-Instanzen vorinstalliert. Wenn Sie das installieren müssen AWS CLI, folgen Sie dieser Installationsanleitung.

aws sagemaker-runtime invoke-endpoint \ --endpoint-name $ENDPOINT_NAME \ --content-type $CONTENT_TYPE \ --accept $ACCEPT_TYPE \ --body $REQUEST_DATA \ $CLI_BINARY_FORMAT \ /dev/stderr 1>/dev/null

Die Parameter sind wie folgt definiert:

  • $ENDPOINT NAME: Der Name des Endpunkts.

  • $CONTENT_TYPE: Der MIME Typ der Anfrage (Eingabe des Modellcontainers).

  • $ACCEPT_TYPE: Der MIME Typ der Antwort (Modellcontainer-Ausgabe).

  • $REQUEST_DATA: Die angeforderte Payload-Zeichenfolge.

  • $CLI_BINARY_FORMAT: Das Format des Befehlszeilenparameters Interface (CLI). Für AWS CLI Version 1 sollte dieser Parameter leer bleiben. Für v2 sollte dieser Parameter auf --cli-binary-format raw-in-base64-out gesetzt werden.

In den folgenden Beispielen wird v1 verwendet: AWS CLI

Request and response in CSV format
  • Die Anfrage besteht aus einem einzigen Datensatz und die Antwort ist deren Wahrscheinlichkeitswert.

    aws sagemaker-runtime invoke-endpoint \ --endpoint-name test-endpoint-sagemaker-xgboost-model \ --content-type text/csv \ --accept text/csv \ --body '1,2,3,4' \ /dev/stderr 1>/dev/null

    Ausgabe:

    0.6

  • Die Anfrage besteht aus zwei Datensätzen, die Antwort beinhaltet deren Wahrscheinlichkeiten, und das Modell trennt die Wahrscheinlichkeiten durch ein Komma. Der $'content'-Ausdruck im --body weist den Befehl an, \n im Inhalt als Zeilenumbruch zu interpretieren.

    aws sagemaker-runtime invoke-endpoint \ --endpoint-name test-endpoint-sagemaker-xgboost-model \ --content-type text/csv \ --accept text/csv \ --body $'1,2,3,4\n5,6,7,8' \ /dev/stderr 1>/dev/null

    Ausgabe:

    0.6,0.3

  • Die Anfrage besteht aus zwei Datensätzen, die Antwort beinhaltet deren Wahrscheinlichkeiten, und das Modell trennt die Wahrscheinlichkeiten durch einen Zeilenumbruch.

    aws sagemaker-runtime invoke-endpoint \ --endpoint-name test-endpoint-csv-1 \ --content-type text/csv \ --accept text/csv \ --body $'1,2,3,4\n5,6,7,8' \ /dev/stderr 1>/dev/null

    Ausgabe:

    0.6

    0.3

  • Die Anfrage besteht aus einem einzigen Datensatz, und die Antwort besteht aus Wahrscheinlichkeitswerten (Mehrklassenmodell, drei Klassen).

    aws sagemaker-runtime invoke-endpoint \ --endpoint-name test-endpoint-csv-1 \ --content-type text/csv \ --accept text/csv \ --body '1,2,3,4' \ /dev/stderr 1>/dev/null

    Ausgabe:

    0.1,0.6,0.3

  • Die Anfrage besteht aus zwei Datensätzen, und die Antwort besteht aus Wahrscheinlichkeitswerten (Mehrklassenmodell, drei Klassen).

    aws sagemaker-runtime invoke-endpoint \ --endpoint-name test-endpoint-csv-1 \ --content-type text/csv \ --accept text/csv \ --body $'1,2,3,4\n5,6,7,8' \ /dev/stderr 1>/dev/null

    Ausgabe:

    0.1,0.6,0.3

    0.2,0.5,0.3

  • Die Anfrage besteht aus zwei Datensätzen, und die Antwort umfasst das vorhergesagte Label und die Wahrscheinlichkeit.

    aws sagemaker-runtime invoke-endpoint \ --endpoint-name test-endpoint-csv-2 \ --content-type text/csv \ --accept text/csv \ --body $'1,2,3,4\n5,6,7,8' \ /dev/stderr 1>/dev/null

    Ausgabe:

    1,0.6

    0,0.3

  • Die Anfrage besteht aus zwei Datensätzen, und die Antwort umfasst Label-Header und Wahrscheinlichkeiten.

    aws sagemaker-runtime invoke-endpoint \ --endpoint-name test-endpoint-csv-3 \ --content-type text/csv \ --accept text/csv \ --body $'1,2,3,4\n5,6,7,8' \ /dev/stderr 1>/dev/null

    Ausgabe:

    "['cat','dog','fish']","[0.1,0.6,0.3]"

    "['cat','dog','fish']","[0.2,0.5,0.3]"

Request and response in JSON Lines format
  • Die Anfrage besteht aus einem einzigen Datensatz und die Antwort ist deren Wahrscheinlichkeitswert.

    aws sagemaker-runtime invoke-endpoint \ --endpoint-name test-endpoint-jsonlines \ --content-type application/jsonlines \ --accept application/jsonlines \ --body '{"features":["This is a good product",5]}' \ /dev/stderr 1>/dev/null

    Ausgabe:

    {"score":0.6}

  • Die Anfrage enthält zwei Datensätze, und die Antwort umfasst das vorhergesagte Label und die Wahrscheinlichkeit.

    aws sagemaker-runtime invoke-endpoint \ --endpoint-name test-endpoint-jsonlines-2 \ --content-type application/jsonlines \ --accept application/jsonlines \ --body $'{"features":[1,2,3,4]}\n{"features":[5,6,7,8]}' \ /dev/stderr 1>/dev/null

    Ausgabe:

    {"predicted_label":1,"probability":0.6}

    {"predicted_label":0,"probability":0.3}

  • Die Anfrage enthält zwei Datensätze, und die Antwort umfasst Label-Header und Wahrscheinlichkeiten.

    aws sagemaker-runtime invoke-endpoint \ --endpoint-name test-endpoint-jsonlines-3 \ --content-type application/jsonlines \ --accept application/jsonlines \ --body $'{"data":{"features":[1,2,3,4]}}\n{"data":{"features":[5,6,7,8]}}' \ /dev/stderr 1>/dev/null

    Ausgabe:

    {"predicted_labels":["cat","dog","fish"],"probabilities":[0.1,0.6,0.3]}

    {"predicted_labels":["cat","dog","fish"],"probabilities":[0.2,0.5,0.3]}

Request and response in different formats
  • Die Anfrage ist im CSV Format und die Antwort im JSON Zeilenformat:

    aws sagemaker-runtime invoke-endpoint \ --endpoint-name test-endpoint-csv-in-jsonlines-out \ --content-type text/csv \ --accept application/jsonlines \ --body $'1,2,3,4\n5,6,7,8' \ /dev/stderr 1>/dev/null

    Ausgabe:

    {"probability":0.6}

    {"probability":0.3}

  • Die Anfrage hat das Format JSON Zeilen und die Antwort hat das folgende CSV Format:

    aws sagemaker-runtime invoke-endpoint \ --endpoint-name test-endpoint-jsonlines-in-csv-out \ --content-type application/jsonlines \ --accept text/csv \ --body $'{"features":[1,2,3,4]}\n{"features":[5,6,7,8]}' \ /dev/stderr 1>/dev/null

    Ausgabe:

    0.6

    0.3

Nachdem die Validierungen abgeschlossen sind, löschen Sie den Testendpunkt.