Datenquellen für die Bewertung von Batch-Bereitstellungen

Sie können Eingabedaten für einen Batch-Bereitstellungsauftrag auf verschiedene Weise bereitstellen, beispielsweise durch direktes Hochladen einer Datei oder durch Angabe eines Links zu Datenbanktabellen. Die Arten der zulässigen Eingabedaten variieren je nach Art des von Ihnen erstellten Bereitstellungsauftrags.

Informationen zu den vom Framework unterstützten Eingabetypen finden Sie unter „Details zu den Eingaben für die Batch-Bereitstellung nach Framework“.

Eingabedaten können einem Batch-Job als Inline-Daten oder als Datenreferenz übergeben werden.

Verfügbare Eingabetypen für Batch-Bereitstellungen nach Framework und Asset-Typ

Verfügbare Eingabetypen für Batch-Bereitstellungen nach Framework und Asset-Typ
Framework Batch-Bereitstellungstyp
Decision Optimization Inline und Referenz
PMML-Modell Integrierter Anhang
Python-Funktion Integrierter Anhang
PyTorch-Onnx Inline und Referenz
Tensorflow Inline und Referenz
Scikit-learn Inline und Referenz
Skripte ( Python und R) Referenz
Spark MLlib Integrierter Anhang
SPSS Inline und Referenz
XGBoost Inline und Referenz

Inline-Datenbeschreibung

Die Eingabedaten für die Stapelverarbeitung werden in der Nutzlast des Stapelverteilungsauftrags angegeben. Sie können beispielsweise eine „ CSV “-Datei als Eingabe für die Bereitstellung in der Benutzeroberfläche oder als Wert für den scoring.input_data Parameter in einem Notebook übergeben. Sobald der Batch-Bereitstellungsauftrag abgeschlossen ist, wird die Ausgabe in den scoring.predictions Metadatenparameter des entsprechenden Auftrags geschrieben.

Beschreibung der Datenreferenz

Eingabe- und Ausgabedaten vom Typ Datenreferenz, die für die Stapelverarbeitung verwendet werden, können gespeichert werden:

  • In einer Remote-Datenquelle, beispielsweise einem Cloud-Speicher-Bucket oder einer SQL- oder No-SQL-Datenbank.
  • Als lokales oder verwaltetes Datenelement in einem Bereitstellungsbereich.

Datenreferenzen umfassen die folgenden Details:

  • Die Referenz der Datenquelle hängt type vom Asset-Typ ab. Siehe Abschnitt „Datenquellenreferenztypen “ unter „Hinzufügen von Datenressourcen zu einem Bereitstellungsbereich “.

  • Für data_asset den Typ muss der Verweis auf die Eingabedaten als href /v2/assets im input_data_references.location.href Parameter in der Nutzlast des Bereitstellungsauftrags angegeben werden. Das angegebene Datenobjekt ist ein Verweis auf ein lokales oder ein verbundenes Datenobjekt. Das Ersetzen oder Ergänzen einer bestehenden lokalen Datenressource ist nicht möglich. Das bedeutet, dass Sie nicht als output_data_reference.location.href Ausgabeort verwenden können. Stattdessen müssen Sie verwenden output_data_reference.location.name.

  • Alle Verweise auf Ein- und data_asset Ausgänge müssen sich im selben Namensraum wie die Batch-Bereitstellung befinden.

  • Wenn die Ausgabedaten des Batch-Bereitstellungsauftrags als lokale Ressource in einem Bereitstellungsbereich gespeichert werden müssen, output_data_reference.location.name muss angegeben werden. Wenn der Batch-Bereitstellungsauftrag erfolgreich abgeschlossen wurde, wird das Asset mit dem angegebenen Namen im Speicherbereich erstellt.

  • Ausgabedaten können Informationen darüber enthalten, wo sich die Datenressource in einer Remote-Datenbank befindet. In dieser Situation können Sie festlegen, ob die Batch-Ausgabe an die Tabelle angehängt oder die Tabelle gekürzt und die Ausgabedaten aktualisiert werden sollen. Geben Sie mit dem Parameter output_data_references.location.write_mode den Wert truncate oder append an.

    • Bei Angabe des Wertes truncate wird die Tabelle abgeschnitten und werden die Batchausgabedaten eingefügt.
    • Bei Angabe des Wertes append werden die Batchausgabedaten an die ferne Datenbanktabelle angehängt.
    • write_mode gilt nur für den output_data_references Parameter.
    • write_mode gilt nur für Datenbestände in Remote-Datenbanken. Dieser Parameter gilt nicht für lokale Datenbestände oder Bestände, die sich in einem lokalen Cloud-Speicher-Bucket befinden.
Hinweis:

Wenn Sie auf verbundene Daten (mit dem Referenztyp s3 oder db2) als Eingabe für eine Bereitstellung zugreifen, müssen Sie bei jedem API-Übermittlungsversuch Authentifizierungsdaten eingeben. Diese Methode wird inzwischen nicht mehr empfohlen, da die mehrfache Eingabe von Anmeldedaten ein Sicherheitsrisiko darstellen kann. Stattdessen können Sie nun eine Verbindung erstellen und diese mithilfe des Typs connection_asset data_asset oder referenzieren, wobei die Datenquellenverbindung anhand ihrer GUID referenziert wird.

Beispiel für die Nutzlast von „data_asset“

"input_data_references": [{
    "type": "data_asset",
    "connection": {
    },
    "location": {
        "href": "/v2/assets/<asset_id>?space_id=<space_id>"
    }
}]

Beispiel für die Nutzlast von „connection_asset“

"input_data_references": [{
    "type": "connection_asset",
    "connection": {
        "id": "<connection_guid>"
    },
    "location": {
        "bucket": "<bucket name>",
        "file_name": "<directory_name>/<file name>"
    }
    <other wdp-properties supported by runtimes>
}]

Eingabedaten strukturieren

Die Art und Weise, in der Sie die Eingabedaten, die auch als Nutzdaten bezeichnet werden, für den Batch-Job strukturieren, hängt von dem Framework für das Asset ab, das Sie bereitstellen.

Eine CSV-Eingabedatei oder andere strukturierte Datenformate müssen so formatiert sein, dass sie dem Schema des Assets entsprechen. Listen Sie die Spaltennamen (Felder) in der ersten Zeile und Werte für das Scoring in nachfolgenden Zeilen auf. Siehe beispielsweise den folgenden Codeausschnitt:

PassengerId, Pclass, Name, Sex, Age, SibSp, Parch, Ticket, Fare, Cabin, Embarked
1,3,"Braund, Mr. Owen Harris",0,22,1,0,A/5 21171,7.25,,S
4,1,"Winslet, Mr. Leo Brown",1,65,1,0,B/5 200763,7.50,,S

Eine JSON-Eingabedatei muss dieselben Informationen zu Feldern und Werten enthalten und dabei folgendes Format verwenden:

{"input_data":[{
        "fields": [<field1>, <field2>, ...],
        "values": [[<value1>, <value2>, ...]]
}]}

Beispiel:

{"input_data":[{
        "fields": ["PassengerId","Pclass","Name","Sex","Age","SibSp","Parch","Ticket","Fare","Cabin","Embarked"],
        "values": [[1,3,"Braund, Mr. Owen Harris",0,22,1,0,"A/5 21171",7.25,null,"S"],
                  [4,1,"Winselt, Mr. Leo Brown",1,65,1,0,"B/5 200763",7.50,null,"S"]]
}]}

Vorbereitung einer Nutzlast, die dem Schema eines bestehenden Modells entspricht

Siehe diesen Beispielcode:

model_details = client.repository.get_details("<model_id>")  # retrieves details and includes schema
columns_in_schema = []
for i in range(0, len(model_details['entity']['schemas']['input'][0].get('fields'))):
    columns_in_schema.append(model_details['entity']['schemas']['input'][0].get('fields')[i]['name'])

X = X[columns_in_schema] # where X is a pandas dataframe that contains values to be scored
#(...)
scoring_values = X.values.tolist()
array_of_input_fields = X.columns.tolist()
payload_scoring = {"input_data": [{"fields": [array_of_input_fields],"values": scoring_values}]}

Einschränkung bei der Verwendung großer Datenmengen als Eingabe für Batch-Scoring-Aufträge

Wenn Sie einen Batch-Scoring-Job ausführen, der große Datenmengen als Eingabe verwendet, kann der Job aufgrund interner Timeout-Einstellungen fehlschlagen. Wenn die Zeitüberschreitung während der Batch-Bewertung auftritt, müssen Sie die Zeitüberschreitungsbegrenzung auf Datenquellenabfrageebene konfigurieren, um lang laufende Aufträge zu verarbeiten.