Formati di dati comuni per l'inferenza - Amazon SageMaker

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Formati di dati comuni per l'inferenza

SageMaker Gli algoritmi di Amazon accettano e producono diversi MIME tipi di HTTP payload utilizzati per recuperare previsioni online e in mini-batch. Puoi utilizzare più AWS servizi per trasformare o preelaborare i record prima di eseguire l'inferenza. Come minimo, devi convertire i dati per quanto segue:

  • Serializzazione richiesta di inferenza (gestita da te)

  • Deserializzazione richiesta di inferenza (gestita dall'algoritmo)

  • Serializzazione risposta di inferenza (gestita dall'algoritmo)

  • Deserializzazione risposta di inferenza (gestita da te)

Converti i dati per la serializzazione delle richieste di inferenza

Le opzioni relative ai tipi di contenuto per le richieste di inferenza degli SageMaker algoritmi di Amazon includono: text/csvapplication/json, eapplication/x-recordio-protobuf. Gli algoritmi che non supportano tutti questi tipi possono supportare altri tipi. XGBoost, ad esempio, supporta solo i supporti text/csv presenti in questo elenco, ma supporta text/libsvm anche.

Per text/csv il valore dell'argomento corpo a invoke_endpoint deve essere una stringa con delle virgole che separano i valori di ogni funzionalità. Ad esempio, un record per un modello con quattro funzionalità potrebbe essere simile a 1.5,16.0,14,23.0. Qualsiasi trasformazione eseguita sui dati dell'addestramento deve essere eseguita sui dati prima di ottenere l'inferenza. L'ordine delle funzionalità è rilevante e non deve essere modificato.

application/jsonè più flessibile e offre agli sviluppatori diversi formati possibili da utilizzare nelle loro applicazioni. A un livello elevato, in JavaScript, il payload potrebbe essere simile al seguente:

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

Hai le seguenti opzioni per specificare dataElement:

Equivalenti buffer di protocollo

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

Vettore numerico semplice

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

Per record multipli

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

Converti i dati per la deserializzazione della risposta inferenziale

SageMaker Gli algoritmi di Amazon vengono restituiti JSON in diversi layout. Ad alto livello, la struttura è:

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

I campi inclusi nelle previsioni presentano differisce nei diversi algoritmi. Seguono degli esempi di output per l'algoritmo k-means.

Inferenza singolo record

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

Inferenza multi-record

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

Inferenza multi-record con input 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 gli algoritmi supportano anche il JSONLINES formato, in cui il contenuto della risposta per record è lo stesso del formato. JSON La struttura multi-record è una raccolta di oggetti di risposta per record separati da caratteri di nuova riga. Il contenuto della risposta per l'KMeansalgoritmo integrato per 2 punti dati di input è:

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

Durante l'esecuzione della trasformazione in batch, consigliamo di utilizzare il tipo di risposta jsonlines impostando il campo Accept in CreateTransformJobRequest su application/jsonlines.

Formati di richiesta comuni per tutti gli algoritmi

La maggior parte degli algoritmi utilizza molti dei seguenti formati di richiesta di inferenza.

JSONformato di richiesta

Tipo di contenuto: applicazione/ JSON

Formato a densità alta

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 a densità bassa

{ "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 della richiesta

Tipo di contenuto: applicazione/ JSONLINES

Formato a densità alta

Un singolo record in formato a densità alta può essere rappresentato come:

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

oppure:

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

Formato a densità bassa

Un singolo record in formato a densità bassa è rappresentato come:

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

I record multipli sono rappresentati come una raccolta di rappresentazioni di record singoli, separate da caratteri di nuova riga:

{"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 della richiesta

Tipo di contenuto: text/CSV; label_size=0

Nota

CSVil supporto non è disponibile per le macchine di fattorizzazione.

RECORDIOformato della richiesta

Tipo di contenuto: applicazione/ x-recordio-protobuf

Usa la trasformazione in batch con algoritmi integrati

Durante l'esecuzione della trasformazione in batch, è consigliabile utilizzare il tipo di JSONLINES risposta anzichéJSON, se supportato dall'algoritmo. A tale scopo, imposta il Accept campo CreateTransformJobRequest inapplication/jsonlines.

Quando si crea un processo di trasformazione, è SplitType necessario impostarlo in base ai dati ContentType di input. Analogamente, AssembleWith deve essere impostato in base al campo Accept in CreateTransformJobRequest. Utilizzate la tabella seguente per impostare questi campi:

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

Per ulteriori informazioni sui formati di risposta per determinati algoritmi, consulta quanto segue: