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
| 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
typehä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_assetmuss die Referenz auf Eingabedaten als/v2/assetshref im Parameterinput_data_references.location.hrefin 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 alsoutput_data_reference.location.nameParameter 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.nameangegeben 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 Wertetruncateoderappendanzugeben.- Bei Angabe von
truncateals Wert wird die Tabelle abgeschnitten und die Batchausgabedaten werden eingefügt. - Bei Angabe von
appendals Wert werden die Batchausgabedaten an die ferne Datenbanktabelle angehängt. write_modegilt nur für den Parameteroutput_data_references.write_modeist 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.
- Bei Angabe von
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}]}