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
Gli algoritmi di SageMaker intelligenza artificiale di Amazon accettano e producono diversi tipi MIME per i payload HTTP 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 SageMaker ai tipi di contenuto per le richieste di inferenza dell'algoritmo Amazon AI includono: text/csv
application/json
, eapplication/x-recordio-protobuf
. Gli algoritmi che non supportano tutti questi tipi possono supportarne altri. XGBoost, ad esempio, supporta solo i supporti text/csv
di 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
Gli algoritmi di SageMaker intelligenza artificiale 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 di intelligenza artificiale supportano anche il formato JSONLINES, 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' KMeans algoritmo 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.
Formato di 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 di 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] } } }
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] }
Formato di richiesta CSV
Content type: text/CSV; label_size=0
Nota
Il supporto CSV non è disponibile per la fattorizzazione delle macchine.
Formato di richiesta RECORDIO
Tipo di contenuto: applicazione/ x-recordio-protobuf
Usa la trasformazione in batch con algoritmi integrati
Durante l'esecuzione della trasformazione in batch, consigliamo di utilizzare il tipo di risposta JSONLINES anziché JSON, se supportato dall'algoritmo. Per fare ciò, imposta il Accept
campo in. CreateTransformJobRequest
application/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: