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)
Argomenti
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/csv
application/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: