Datenquellen für das Auswerten von Batch-Bereitstellungen

Sie können die Eingabedaten für einen Job zur Batchbereitstellung auf verschiedene Arten übermitteln, beispielsweise durch das direkten Hochladen einer Datei oder durch die Bereitstellung eines Links zu Datenbanktabellen. Die Typen zulässiger Eingabedaten variieren je nach Typ des Implementierungsjobs, den Sie erstellen.

Informationen zu unterstützten Eingabetypen nach Framework finden Sie unter Eingabedetails für Batchbereitstellung nach Framework.

Eingabedaten können für einen Batch-Job als Inlinedaten oder Datenreferenz bereitgestellt werden.

Verfügbare Eingabetypen für Batchbereitstellungen nach Framework und Assettyp

Verfügbare Eingabetypen für Batchbereitstellungen nach Framework und Assettyp
Framework Stapelbereitstellungstyp
Decision Optimization Inline und Referenz
Python-Funktion Integrierter Anhang
PyTorch Inline und Referenz
Tensorflow Inline und Referenz
Scikit-learn Inline und Referenz
Python-Scripts Referenz
Spark MLlib Inline und Referenz
SPSS Inline und Referenz
XGBoost Inline und Referenz

Inlinedatenbeschreibung

Inlineeingabedaten für die Batchverarbeitung werden in den Nutzdaten des Jobs zur Batchbereitstellung angegeben. Sie können beispielsweise eine CSV-Datei als Eingabe für die Bereitstellung in der Benutzerschnittstelle oder als Wert für den Parameter scoring.input_data in einem Notebook übergeben. Nach Abschluss des Jobs zur Batchbereitstellung wird die Ausgabe in den Metadatenparameter scoring.predictions des entsprechenden Jobs geschrieben.

Datenreferenzbeschreibung

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

  • In einer entfernten Datenquelle, z. B. einem Cloud-Speicher-Bucket oder einer SQL- oder No-SQL-Datenbank.
  • Als lokales oder verwaltetes Datenasset in einem Bereitstellungsbereich.

Datenreferenzen umfassen die folgenden Details:

  • Datenquellenreferenz type hängt vom Assettyp ab. Weitere Informationen finden Sie im Abschnitt Referenztypen für Datenquellen unter Datenassets zu einem Bereitstellungsbereich hinzufügen.

  • Für den Typ data_asset muss die Referenz auf Eingabedaten als /v2/assets href im Parameter input_data_references.location.href in den Nutzdaten des Bereitstellungsjobs angegeben werden. Das angegebene Datenasset ist ein Verweis auf ein lokales oder verbundenes Datenasset. Wenn die Ausgabedaten des Batch-Bereitstellungsauftrags in einer entfernten Datenquelle aufbewahrt werden müssen, müssen die Verweise auf die Ausgabedaten als output_data_reference.location.name Parameter in der Nutzlast des Bereitstellungsauftrags angegeben werden.

  • Alle data_asset-Referenzen für die Eingabe und Ausgabe müssen sich in derselben Bereichs-ID wie die Batchbereitstellung befinden.

  • Wenn die Ausgabedaten des Stapelbereitstellungsjobs in einem Bereitstellungsbereich als lokales Asset persistent gespeichert werden müssen, muss output_data_reference.location.name angegeben werden. Nach erfolgreicher Ausführung des Stapelbereitstellungsjobs wird das Asset mit dem angegebenen Namen im Bereich erstellt.

  • Ausgabedaten können Informationen dazu enthalten, wo sich das Datenasset in einer fernen Datenbank befindet. In dieser Situation können Sie angeben, ob die Stapelausgabe an die Tabelle angehängt oder die Tabelle abgeschnitten und die Ausgabedaten aktualisiert werden sollen. Verwenden Sie den Parameter output_data_references.location.write_mode, um die Werte truncate oder append anzugeben.

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

Beispiel für data_asset-Nutzdaten

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

Beispiel für connection_asset-Nutzdaten

"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-Datei oder andere strukturierte Datenformate müssen so formatiert werden, 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. Sehen Sie sich beispielsweise das folgende Code-Snippet an:

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 für Felder und Werte im folgenden Format bereitstellen:

{"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"]]
}]}

Nutzdaten vorbereiten, die dem Schema eines vorhandenen Modells entsprechen

Sehen Sie sich den folgenden Beispielcode an:

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}]}