Origens de dados para implementações de escoragem de lote
É possível fornecer dados de entrada para uma tarefa de implementação de lote em várias formas, incluindo fazer o upload diretamente de um arquivo ou fornecer um link para tabelas de banco de dados. Os tipos de dados de entrada permitidos variam de acordo com o tipo de tarefa de implementação que você está criando.
Para tipos de entrada suportados por estrutura, consulte Detalhes de entrada de implementação de lote por estrutura.
Os dados de entrada podem ser fornecidos a uma tarefa como dados sequenciais ou referência de dados.
Tipos de entrada disponíveis para implementações em lote por estrutura e tipo de ativo
| Estrutura | Tipo de implementação em lote |
|---|---|
| Decision Optimization | Sequencial e Referência |
| função Python | Alinhar |
| PyTorch | Sequencial e Referência |
| Tensorflow | Sequencial e Referência |
| Scikit-learn | Sequencial e Referência |
| Scripts Python | Referência |
| Spark MLlib | Sequencial e Referência |
| SPSS | Sequencial e Referência |
| XGBoost | Sequencial e Referência |
Descrição de dados sequenciais
Os dados de entrada do tipo sequenciais para processamento em lote são especificados na carga útil da tarefa de implementação do lote. Por exemplo, pode-se passar um arquivo CSV como a entrada de implementação na interface com o usuário ou como um valor para o parâmetro scoring.input_data em um notebook. Quando a tarefa de implementação de lote for concluída, a saída é gravada para o parâmetro de metadados scoring.predictions da tarefa. correspondente.
Descrição de referência de dados
Os dados de entrada e saída do tipo referência de dados que é usado para o processamento de lote podem ser armazenados:
- Em uma fonte de dados remota, por exemplo, um bucket de armazenamento em nuvem ou um banco de dados SQL ou não SQL.
- Como um ativo de dados local ou gerenciado em um espaço de implementação
Os detalhes para referências de dados incluem:
A referência de origem de dados
typedepende do tipo de ativo. Consulte a seção Tipos de referência de origem de dados em Incluindo ativos de dados em um espaço de implementaçãoPara o tipo
data_asset, a referência para os dados de entrada deve ser especificada como um href/v2/assetsno parâmetroinput_data_references.location.hrefna carga útil da tarefa de implementação O ativo de dados especificado é uma referência a um ativo de dados local ou conectado. Além disso, se os dados de saída do trabalho de implantação em lote precisarem ser mantidos em uma fonte de dados remota, as referências aos dados de saída deverão ser especificadas como um parâmetrooutput_data_reference.location.namena carga útil do trabalho de implantação.Qualquer referência de entrada e saída
data_assetdeve estar no mesmo id do espaço que a implementação de lote.Se os dados de saída do job de implementação do lote devem ser persistidos em um espaço de implementação como um ativo local,
output_data_reference.location.namedeve ser especificado. Quando a tarefa de implementação em lote for concluída com êxito, o ativo com o nome especificado será criado no espaçoOs dados de saída podem conter informações sobre onde em um banco de dados remoto o ativo de dados está localizado. Nessa situação, você pode especificar se deve anexar a saída do lote à tabela ou truncar a tabela e atualizar os dados de saída. Use o parâmetro
output_data_references.location.write_modepara especificar os valorestruncateouappend.- Especificar
truncatecomo valor trunca a tabela e insere os dados de saída de lote. - Especificar
appendcomo valor anexa os dados de saída de lote à tabela de banco de dados remoto. write_modeé aplicável apenas para o parâmetrooutput_data_references.write_modeé aplicável somente a ativos de dados em bancos de dados remotos. Esse parâmetro não é aplicável a ativos de dados locais ou ativos localizados em um bucket de armazenamento em nuvem local.
- Especificar
Exemplo de carga útil data_asset
"input_data_references": [{
"type": "data_asset",
"connection": {
},
"location": {
"href": "/v2/assets/<asset_id>?space_id=<space_id>"
}
}]
Exemplo de carga útil 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>
}]
Estruturando os dados de entrada
Como você estrutura os dados de entrada, conhecidos como carga útil, para a tarefa em lote depende da estrutura para o ativo que está sendo implementado.
Um arquivo de entrada .csv ou outros formatos de dados estruturados devem ser formatados para combinar com o esquema do ativo. Liste os nomes de colunas (campos) na primeira linha e os valores a serem escorados em linhas subsequentes. Por exemplo, consulte o fragmento de código a seguir:
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
Um arquivo de entrada JSON deve fornecer as mesmas informações sobre campos e valores, usando este formato:
{"input_data":[{
"fields": [<field1>, <field2>, ...],
"values": [[<value1>, <value2>, ...]]
}]}
Por exemplo:
{"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"]]
}]}
Preparando uma carga útil que corresponda ao esquema de um modelo existente
Consulte este código de amostra:
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}]}