Formati di dati comuni per l'inferenza - Amazon SageMaker AI

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)

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/csvapplication/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: