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 tipi MIME per i payload HTTP utilizzati per recuperare previsioni online e in mini-batch. Puoi utilizzare vari 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
Conversione dei 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 text/csv
da questo elenco, ma supporta anche text/libsvm
.
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
è molto più flessibile e offre diversi formati possibili per gli sviluppatori 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 ] } ] }
Conversione dei dati per la deserializzazione della risposta di inferenza
SageMaker Gli algoritmi di Amazon restituiscono 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 formato JSONLINES, in cui il contenuto della risposta per record è lo stesso del formato JSON. La struttura multi-record è una concatenazione di oggetti di risposta per record separati da caratteri di nuova riga. Il contenuto della risposta per l'algoritmo K-Means integrato per 2 punti di 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.
Formato della richiesta JSON
Content type: application/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] } } }, ] }
Formato della richiesta JSONLINES
Content type: application/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] } } }
Più record sono rappresentati come una concatenazione delle rappresentazioni di record singolo precedenti, 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] }
Formato della richiesta CSV
Content type: text/CSV; label_size=0
Nota
Il supporto CSV non è disponibile per la fattorizzazione delle macchine.
Formato della richiesta RECORDIO
Tipo di contenuto: applicazione/ x-recordio-protobuf
Uso della trasformazione in batch con gli algoritmi integrati
Durante l'esecuzione della trasformazione in batch, consigliamo di utilizzare il tipo di risposta JSONLINES anziché JSON, se supportato dall'algoritmo. A tale scopo, devi impostare il campo Accept
in CreateTransformJobRequest
su application/jsonlines
.
Quando crei un processo di trasformazione, SplitType
deve essere impostato in base al ContentType
dei dati di input. Analogamente, AssembleWith
deve essere impostato in base al campo Accept
in CreateTransformJobRequest
. Utilizza la seguente tabella per impostare in modo appropriato 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: