Formatos de dados comuns para inferência - Amazon SageMaker

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Formatos de dados comuns para inferência

SageMaker Os algoritmos da Amazon aceitam e produzem vários MIME tipos diferentes para as HTTP cargas usadas na recuperação de previsões on-line e em minilotes. Você pode usar vários AWS serviços para transformar ou pré-processar registros antes de executar a inferência. No mínimo, é preciso converter os dados para os seguintes itens:

  • Serialização da solicitação de inferência (processada por você)

  • Desserialização da solicitação de inferência (processada pelo algoritmo)

  • Serialização da resposta de inferência (processada pelo algoritmo)

  • Desserialização da resposta de inferência (processada por você)

Converta dados para serialização de solicitações de inferência

As opções de tipo de conteúdo para solicitações de inferência de SageMaker algoritmos da Amazon incluem: text/csvapplication/json, e. application/x-recordio-protobuf Algoritmos que não oferecem suporte a todos esses tipos podem oferecer suporte a outros tipos. XGBoost, por exemplo, só suporta text/csv desta lista, mas também suportatext/libsvm.

Para text/csv, o valor do argumento do corpo para invoke_endpoint deve ser uma string com vírgulas que separem os valores para cada atributo. Por exemplo, um registro para um modelo com quatro atributos pode parecer assim: 1.5,16.0,14,23.0. Todas as transformações executadas nos dados de treinamento também devem ser executadas nos dados antes da obtenção da inferência. A ordem dos atributos é importante, devendo permanecer inalterada.

application/jsoné mais flexível e fornece vários formatos possíveis para os desenvolvedores usarem em seus aplicativos. Em um nível alto, em JavaScript, a carga útil pode ter a seguinte aparência:

let request = { // Instances might contain multiple rows that predictions are sought for. "instances": [ { // Request and algorithm specific inference parameters. "configuration": {}, // Data in the specific format required by the algorithm. "data": { "<field name>": dataElement } } ] }

Para especificar o dataElement, você tem as seguintes opções:

Buffers de protocolo equivalentes

// Has the same format as the protocol buffers implementation described for training. let dataElement = { "keys": [], "values": [], "shape": [] }

Vetor numérico simples

// An array containing numeric values is treated as an instance containing a // single dense vector. let dataElement = [1.5, 16.0, 14.0, 23.0] // It will be converted to the following representation by the SDK. let converted = { "features": { "values": dataElement } }

Para vários registros

let request = { "instances": [ // First instance. { "features": [ 1.5, 16.0, 14.0, 23.0 ] }, // Second instance. { "features": [ -2.0, 100.2, 15.2, 9.2 ] } ] }

Converta dados para desserialização da resposta de inferência

SageMaker Os algoritmos da Amazon retornam JSON em vários layouts. Basicamente, a estrutura é esta:

let response = { "predictions": [{ // Fields in the response object are defined on a per algorithm-basis. }] }

Os campos incluídos nas previsões diferem de algoritmo para algoritmo. Veja a seguir exemplos de resultado para o algoritmo k-means.

Inferência de único registro

let response = { "predictions": [{ "closest_cluster": 5, "distance_to_cluster": 36.5 }] }

Inferência de vários registros

let response = { "predictions": [ // First instance prediction. { "closest_cluster": 5, "distance_to_cluster": 36.5 }, // Second instance prediction. { "closest_cluster": 2, "distance_to_cluster": 90.3 } ] }

Inferência de vários registros com entrada protobuf

{ "features": [], "label": { "closest_cluster": { "values": [ 5.0 ] // e.g. the closest centroid/cluster was 1.0 }, "distance_to_cluster": { "values": [ 36.5 ] } }, "uid": "abc123", "metadata": "{ "created_at": '2017-06-03' }" }

SageMaker os algoritmos também oferecem suporte ao JSONLINES formato, em que o conteúdo da resposta por registro é o mesmo do JSON formato. A estrutura de vários registros é uma coleção de objetos de resposta por registro separados por caracteres de nova linha. O conteúdo da resposta para o KMeans algoritmo integrado para 2 pontos de dados de entrada é:

{"distance_to_cluster": 23.40593910217285, "closest_cluster": 0.0} {"distance_to_cluster": 27.250282287597656, "closest_cluster": 0.0}

Ao executar uma transformação em lote, recomendamos usar o tipo de resposta jsonlines, definindo o campo Accept em CreateTransformJobRequest como application/jsonlines.

Formatos de solicitação comuns para todos os algoritmos

A maioria dos algoritmos usa muitos dos seguintes formatos de solicitação de inferência.

JSONformato de solicitação

Tipo de conteúdo: aplicativo/ JSON

Formato denso

let request = { "instances": [ { "features": [1.5, 16.0, 14.0, 23.0] } ] } let request = { "instances": [ { "data": { "features": { "values": [ 1.5, 16.0, 14.0, 23.0] } } } ] }

Formato esparso

{ "instances": [ {"data": {"features": { "keys": [26, 182, 232, 243, 431], "shape": [2000], "values": [1, 1, 1, 4, 1] } } }, {"data": {"features": { "keys": [0, 182, 232, 243, 431], "shape": [2000], "values": [13, 1, 1, 4, 1] } } }, ] }

JSONLINESformato de solicitação

Tipo de conteúdo: aplicativo/ JSONLINES

Formato denso

Um único registro no formato denso pode ser representado como:

{ "features": [1.5, 16.0, 14.0, 23.0] }

ou:

{ "data": { "features": { "values": [ 1.5, 16.0, 14.0, 23.0] } }

Formato esparso

Um único registro no formato esparso é representado como:

{"data": {"features": { "keys": [26, 182, 232, 243, 431], "shape": [2000], "values": [1, 1, 1, 4, 1] } } }

Vários registros são representados como uma coleção de representações de registro único, separadas por caracteres de nova linha:

{"data": {"features": { "keys": [0, 1, 3], "shape": [4], "values": [1, 4, 1] } } } { "data": { "features": { "values": [ 1.5, 16.0, 14.0, 23.0] } } { "features": [1.5, 16.0, 14.0, 23.0] }

CSVformato de solicitação

Tipo de conteúdo: text/CSV; label_size=0

nota

CSVo suporte não está disponível para máquinas de fatoração.

RECORDIOformato de solicitação

Tipo de conteúdo: aplicativo/ x-recordio-protobuf

Use a transformação em lote com algoritmos integrados

Ao executar a transformação em lote, recomendamos usar o tipo de JSONLINES resposta em vez deJSON, se suportado pelo algoritmo. Para fazer isso, defina o Accept campo em CreateTransformJobRequest paraapplication/jsonlines.

Quando você cria uma tarefa de transformação, SplitType ela deve ser definida com base nos ContentType dados de entrada. De modo semelhante, dependendo do campo Accept em CreateTransformJobRequest, AssembleWith deve ser ajustado de acordo. Use a tabela a seguir para definir esses campos:

ContentType Recomendado SplitType
application/x-recordio-protobuf RecordIO
text/csv Line
application/jsonlines Line
application/json None
application/x-image None
image/* None
Aceitar Recomendado AssembleWith
application/x-recordio-protobuf None
application/json None
application/jsonlines Line

Para obter mais informações sobre formatos de resposta de algoritmos específicos, consulte os seguintes tópicos: