Trasformazione in batch per l’inferenza con Amazon SageMaker AI - Amazon SageMaker AI

Trasformazione in batch per l’inferenza con Amazon SageMaker AI

Utilizza la trasformazione in batch quando devi eseguire le seguenti operazioni:

  • Pre-elaborare i set di dati per rimuovere disturbi o distorsioni che possono interferire con l’addestramento o l'inferenza.

  • Ottenere inferenze da set di dati di grandi dimensioni.

  • Eseguire l'inferenza quando non è necessario un endpoint persistente.

  • Associare record di input alle inferenze per agevolare l’interpretazione dei risultati.

Per filtrare i dati di input prima di eseguire le inferenze o per associare record di input alle inferenze relative a tali record, consulta Associazione dei risultati delle previsioni ai record di input. Ad esempio, puoi filtrare i dati di input per fornire un contesto per la creazione e l'interpretazione dei report sui dati di output.

Utilizzare la trasformazione in batch per ottenere inferenze da set di dati di grandi dimensioni

La trasformazione in batch gestisce automaticamente l'elaborazione di set di dati di grandi dimensioni entro i limiti dei parametri specificati. Ad esempio, supponiamo di disporre di un file contenente un set di dati, input1.csv, archiviato in un bucket S3. Il contenuto del file di input potrebbe essere simile all'esempio seguente:

Record1-Attribute1, Record1-Attribute2, Record1-Attribute3, ..., Record1-AttributeM Record2-Attribute1, Record2-Attribute2, Record2-Attribute3, ..., Record2-AttributeM Record3-Attribute1, Record3-Attribute2, Record3-Attribute3, ..., Record3-AttributeM ... RecordN-Attribute1, RecordN-Attribute2, RecordN-Attribute3, ..., RecordN-AttributeM

Quando un processo di trasformazione in batch viene avviato, SageMaker AI avvia le istanze di calcolo e distribuisce l’inferenza o il carico di lavoro di pre-elaborazione tra di esse. Il processo di trasformazione in batch partiziona gli oggetti Amazon S3 nell'input per chiave e mappa gli oggetti Amazon S3 alle istanze. In presenza di più file, un'istanza potrebbe elaborare input1.csv e un'altra istanza potrebbe elaborare un altro file denominato input2.csv. Se è disponibile un file di input ma sono inizializzate più istanze di calcolo, solo un’istanza elabora il file di input. Le altre istanze sono inattive.

È anche possibile suddividere i file di input in mini-batch. Ad esempio, puoi creare un mini-batch da input1.csv includendo solo due record.

Record3-Attribute1, Record3-Attribute2, Record3-Attribute3, ..., Record3-AttributeM Record4-Attribute1, Record4-Attribute2, Record4-Attribute3, ..., Record4-AttributeM
Nota

SageMaker AI elabora ogni file di input separatamente. Non combina mini-batch provenienti da file di input differenti per soddisfare il limite di MaxPayloadInMB .

Per suddividere i file di input in mini-batch, al momento della creazione di un processo di trasformazione in batch, imposta il parametro SplitType sul valore Line. SageMaker AI utilizza l’intero file di input in un’unica richiesta quando:

  • SplitType è impostato su None;

  • un file di input non può essere suddiviso in mini batch.

Il processo di trasformazione in batch non supporta input in formato CSV che contengono caratteri di nuova riga con embedding. È possibile controllare la dimensione dei mini-batch utilizzando i parametri BatchStrategy e MaxPayloadInMB. MaxPayloadInMB non deve essere superiore a 100 MB. Se si specifica il parametro MaxConcurrentTransforms opzionale, anche il valore di (MaxConcurrentTransforms * MaxPayloadInMB) non deve superare i 100 MB.

Se il processo di trasformazione in batch elabora correttamente tutti i record in un file di input, crea un file di output con lo stesso nome e la stessa estensione .out. In caso di più file di input, ad esempio input1.csv e input2.csv, i file di output vengono denominati input1.csv.out e input2.csv.out. Il processo di trasformazione in batch archivia i file di output nel percorso specificato su Amazon S3, come ad esempio s3://amzn-s3-demo-bucket/output/.

Le previsioni in un file di output sono elencate nello stesso ordine dei record del file di input. Il file di output input1.csv.out, in base al file di input mostrato in precedenza, sarà simile al seguente.

Inference1-Attribute1, Inference1-Attribute2, Inference1-Attribute3, ..., Inference1-AttributeM Inference2-Attribute1, Inference2-Attribute2, Inference2-Attribute3, ..., Inference2-AttributeM Inference3-Attribute1, Inference3-Attribute2, Inference3-Attribute3, ..., Inference3-AttributeM ... InferenceN-Attribute1, InferenceN-Attribute2, InferenceN-Attribute3, ..., InferenceN-AttributeM

Se SplitType è impostato su Line, puoi impostare il parametro AssembleWith su Line per concatenare i record di output con un delimitatore di riga. Ciò non modifica il numero di file di output. Il numero di file di output è pari al numero di file di input e l'utilizzo di AssembleWith non unisce i file. Se non specifichi il parametro AssembleWith, i record di output vengono concatenati in un formato binario per impostazione predefinita.

Quando i dati di input sono di dimensioni molto grandi e vengono trasmessi mediante la codifica HTTP Chunked, per trasmettere i dati all'algoritmo, è necessario impostare MaxPayloadInMB su 0. Gli algoritmi integrati di Amazon SageMaker AI non supportano questa funzionalità.

Per ulteriori informazioni su come usare l'API per creare un processo di trasformazione in batch, consultare l'API CreateTransformJob. Per ulteriori informazioni sulla relazione tra gli oggetti di input e di output della trasformazione in batch, consulta OutputDataConfig. Per un esempio di come utilizzare la trasformazione in batch, consulta (Facoltativo) Formulazione di previsioni con la trasformazione di batch.

Velocizzare un processo di trasformazione in batch

Se usi l’API CreateTransformJob, puoi ridurre il tempo necessario per completare le operazioni di trasformazione in batch utilizzando valori ottimali per parametri. Questo include parametri come MaxPayloadInMB, MaxConcurrentTransforms oppure BatchStrategy. Il valore ideale per MaxConcurrentTransforms è pari al numero di processi di calcolo nel processo di trasformazione di batch.

Se utilizzi la console di SageMaker AI, puoi specificare questi valori di parametro ottimali nella sezione relativa alla configurazione aggiuntiva della pagina di configurazione dei processi di trasformazione di batch. SageMaker AI trova automaticamente le impostazioni dei parametri ottimali per gli algoritmi integrati. Per gli algoritmi personalizzati, è necessario fornire questi valori tramite un endpoint execution-parameters.

Utilizzare la trasformazione in batch per testare varianti di produzione

Per testare diversi modelli o varie impostazioni di iperparametri, crea un processo di trasformazione separato per ogni nuova variante di modello e utilizza un set di dati di convalida. Per ogni processo di trasformazione, specifica un nome e un percorso univoco in Amazon S3 per il file di output. Per analizzare i risultati, utilizza Log e parametri della pipeline di inferenza.

Notebook di esempio per la trasformazione in batch

Per un notebook di esempio che utilizza la trasformazione in batch, consulta Batch Transform with PCA and DBSCAN Movie Clusters. Questo notebook utilizza la trasformazione in batch con un modello di analisi dei componenti principali (PCA) per ridurre i dati in una matrice di recensioni degli articoli degli utenti. Mostra quindi l’applicazione di un algoritmo DBSCAN (Density-Based Spatial Clustering of Applications with Noise) per raggruppare i filmati in cluster.

Per istruzioni su come creare e accedere alle istanze del notebook Jupyter che puoi utilizzare per eseguire l’esempio in SageMaker AI, consulta Istanze del notebook Amazon SageMaker. Dopo aver creato e aperto un’istanza del notebook, scegli la scheda Esempi di Amazon SageMaker per visualizzare un elenco di tutti gli esempi di SageMaker AI. I notebook dell'esempio di modellazione dell'argomento che utilizzano gli algoritmi NTM sono disponibili nella sezione Funzionalità avanzate. Per aprire un notebook, seleziona la relativa scheda Utilizza, quindi scegli Crea copia.