Origini dati per il calcolo del punteggio delle distribuzioni batch
È possibile fornire i dati di input per un lavoro di distribuzione batch in diversi modi, incluso il caricamento diretto di un file o la fornitura di un collegamento alle tabelle del database. I tipi di dati di input consentiti variano in base al tipo di lavoro di distribuzione che viene creato.
Per i tipi di input supportati per framework, fai riferimento a Batch deployment input details by framework.
I dati di input possono essere forniti a un lavoro batch come dati in linea o riferimento dati.
Tipi di input disponibili per distribuzioni batch per framework e tipo di asset
| Framework | Tipo di distribuzione batch |
|---|---|
| Decision Optimization | Inline e riferimento |
| Python funzione | In linea |
| PyTorch | Inline e riferimento |
| Tensorflow | Inline e riferimento |
| Scikit-learn | Inline e riferimento |
| Script Python | Riferimenti |
| Spark MLlib | Inline e riferimento |
| SPSS | Inline e riferimento |
| XGBoost | Inline e riferimento |
Descrizione dati in linea
I dati di input di tipo seriale per l'elaborazione batch sono specificati nel payload del lavoro di distribuzione batch. Ad esempio, è possibile passare un file CSV come input di distribuzione nell'interfaccia utente o come valore per il parametro scoring.input_data in un notebook. Una volta completato il lavoro di distribuzione batch, l'output viene scritto nel corrispondente parametro di metadati scoring.predictions del lavoro.
Descrizione riferimento dati
I dati di input e output di tipo riferimento dati utilizzati per l'elaborazione batch possono essere memorizzati:
- In un'origine dati remota, ad esempio un bucket di archiviazione nel cloud o un database SQL o no-SQL.
- Come un asset di dati locale o gestito in un spazio di distribuzione.
I dettagli per i riferimenti dati includono:
Il riferimento dell'origine dati
typedipende dal tipo di asset. Fare riferimento alla sezione Tipi di riferimento origine dati in Aggiunta di asset di dati a uno spazio di distribuzione.Per il tipo
data_asset, il riferimento ai dati di input deve essere specificato come/v2/assetshref nel parametroinput_data_references.location.hrefnel payload del lavoro di distribuzione. L'asset di dati specificato è un riferimento a un asset di dati locale o connesso. Inoltre, se i dati di output del lavoro di distribuzione batch devono essere conservati in un'origine dati remota, i riferimenti ai dati di output devono essere specificati come parametrooutput_data_reference.location.namenel payload del lavoro di distribuzione.I riferimenti
data_assetdi input e output devono trovarsi nello stesso ID spazio della distribuzione batch.Se i dati di output del lavoro di distribuzione batch devono essere resi persistenti in uno spazio di distribuzione come asset locale, è necessario specificare
output_data_reference.location.name. Quando il lavoro di distribuzione batch viene completato correttamente, l'asset con il nome specificato viene creato nello spazio.I dati di output possono contenere informazioni su dove si trova l'asset di dati in un database remoto. In questa situazione, è possibile specificare se accodare l'output batch alla tabella o troncare la tabella e aggiornare i dati di output. Utilizzare il parametro
output_data_references.location.write_modeper specificare i valoritruncateoappend.- Specificando
truncatecome valore si tronca la tabella e si inseriscono i dati di output batch. - Se si specifica
appendcome valore, i dati di output batch vengono accodati alla tabella del database remoto. write_modeè applicabile solo per il parametrooutput_data_references.write_modeè applicabile solo alle risorse di dati in database remoti. Questo parametro non è applicabile alle risorse di dati locali o alle risorse situate in un bucket di archiviazione cloud locale.
- Specificando
Payload data_asset di esempio
"input_data_references": [{
"type": "data_asset",
"connection": {
},
"location": {
"href": "/v2/assets/<asset_id>?space_id=<space_id>"
}
}]
Payload connection_asset di esempio
"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>
}]
Strutturazione dei dati di input
La struttura dei dati di input, noti anche come payload, per il lavoro batch dipende dal framework per l'asset che si sta distribuendo.
Un file di input .csv o altri formati di dati strutturati devono essere formattati in modo da corrispondere allo schema dell'asset. Elencare i nomi colonna (campi) nella prima riga e i valori di cui calcolare il punteggio nelle righe successive. Ad esempio, vedere il seguente frammento di codice:
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
Un file di input JSON deve fornire le stesse informazioni su campi e valori, utilizzando questo formato:
{"input_data":[{
"fields": [<field1>, <field2>, ...],
"values": [[<value1>, <value2>, ...]]
}]}
Ad esempio:
{"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"]]
}]}
Preparazione di un payload che corrisponde allo schema di un modello esistente
Fare riferimento a questo codice di esempio:
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}]}