Demo e visualizzazione avanzate di Debugger - 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à.

Demo e visualizzazione avanzate di Debugger

Le seguenti demo illustrano i casi d'uso avanzati e gli script di visualizzazione con Debugger.

Addestramento e potatura di modelli con Amazon SageMaker Experiments e Debugger

Dott.ssa Nathalie Rauschmayr, AWS Applied Scientist | Durata: 49 minuti 26 secondi

Scopri come Esperimenti Amazon SageMaker e Debugger possono semplificare la gestione dei tuoi processi di addestramento. Debugger Amazon SageMaker offre una visibilità trasparente sui processi di addestramento e salva i parametri di addestramento nel tuo bucket Amazon S3. Esperimenti SageMaker consente di chiamare le informazioni di addestramento come prove tramite SageMaker Studio e supporta la visualizzazione del processo di addestramento. Ciò consente di mantenere alta la qualità del modello riducendo i parametri meno importanti in base al grado di importanza.

Questo video illustra una tecnica di eliminazione del modello che rende i modelli ResNet50 e AlexNet pre-addestrati più leggeri e convenienti, pur mantenendo elevati standard di precisione del modello.

SageMaker AI Estimator addestra gli algoritmi forniti dal modello zoo di PyTorch in un container AWS per il Deep Learning con framework PyTorch e Debugger estrae le metriche di addestramento dal job di addestramento.

Il video mostra anche come impostare una regola personalizzata di Debugger per vedere l'accuratezza di un modello eliminato, attivare un evento Amazon CloudWatch e una funzione AWS Lambda quando la precisione raggiunge una soglia e per interrompere automaticamente il processo di eliminazione per evitare iterazioni ridondanti.

Gli obiettivi di apprendimento sono i seguenti:

  • Scopri come utilizzare SageMaker AI per accelerare l’addestramento dei modelli ML e migliorare la qualità del modello.

  • Comprendi come gestire le iterazioni di addestramento con Esperimenti SageMaker acquisendo automaticamente i parametri, le configurazioni e i risultati di input.

  • Scopri come Debugger rende trasparente il processo di addestramento acquisendo automaticamente i dati del tensore in tempo reale da parametri quali pesi, gradienti e output di attivazione delle reti neurali convoluzionali.

  • Usa CloudWatch per attivare Lambda quando Debugger rileva problemi.

  • Padroneggiare il processo di addestramento SageMaker utilizzando Esperimenti e Debugger SageMaker.

Puoi trovare i notebook e gli script di addestramento utilizzati in questo video da Eliminazione del modello iterativo di Debugger SageMaker PyTorch.

L'immagine seguente mostra come il processo iterativo di eliminazione del modello riduce le dimensioni di AlexNet tagliando i 100 filtri meno significativi in base al grado di importanza valutato da output di attivazione e gradienti.

Il processo di eliminazione ha ridotto i 50 milioni di parametri iniziali a 18 milioni. Ha inoltre ridotto la dimensione stimata del modello da 201 MB a 73 MB.

Un' immagine contenente visualizzazioni di output dei risultati di eliminazione del modello

È inoltre necessario tenere traccia della precisione del modello e l'immagine seguente mostra come è possibile tracciare il processo di eliminazione del modello per visualizzare le modifiche nella precisione del modello in base al numero di parametri in SageMaker Studio.

Un' immagine di visualizzazione del tensore usando Debugger in SageMaker Studio

In SageMaker Studio, scegli la scheda Esperimenti, seleziona un elenco di tensori salvati da Debugger dal processo di eliminazione e componi un pannello Elenco componenti di prova. Seleziona tutte e dieci le iterazioni e scegli Aggiungi grafico per creare un grafico componente di prova. Dopo aver deciso il modello da implementare, scegli il componente di prova e scegli un menu per eseguire un'azione oppure scegli Implementa modello.

Nota

Per implementare un modello tramite SageMaker Studio utilizzando il seguente esempio di notebook, aggiungi una riga alla fine della funzione train nello script train.py.

# In the train.py script, look for the train function in line 58. def train(epochs, batch_size, learning_rate): ... print('acc:{:.4f}'.format(correct/total)) hook.save_scalar("accuracy", correct/total, sm_metric=True) # Add the following code to line 128 of the train.py script to save the pruned models # under the current SageMaker Studio model directory torch.save(model.state_dict(), os.environ['SM_MODEL_DIR'] + '/model.pt')

Utilizzo di SageMaker Debugger per monitorare un addestramento del modello di autoencoder convoluzionale

Questo notebook mostra come Debugger SageMaker visualizza i tensori da un processo di apprendimento non supervisionato (o auto-supervisionato) su un set di dati di immagini MNIST di numeri scritti a mano.

Il modello di addestramento in questo notebook è un autoencoder convoluzionale con il framework MXNet. L'autoencoder convoluzionale ha una rete neurale convoluzionale a forma di collo di bottiglia che consiste in una parte encoder e una parte di decoder.

L'encoder in questo esempio ha due livelli di convoluzione per produrre una rappresentazione compressa (variabili latenti) delle immagini di input. In questo caso, l'encoder produce una variabile latente di dimensione (1, 20) da un'immagine di input originale di dimensioni (28, 28) e riduce significativamente la dimensione dei dati per l'addestramento di 40 volte.

Il decoder ha due livelli deconvoluzionali e assicura che le variabili latenti conservino le informazioni chiave ricostruendo le immagini di output.

L'encoder convoluzionale alimenta algoritmi di clustering con dimensioni ridotte dei dati di input, oltre a prestazioni di algoritmi di clustering come k-means, K-nn e T-distributed Stochastic Neighbor Embedding (T-sne).

In questo esempio di notebook viene illustrato come visualizzare le variabili latenti utilizzando Debugger, come illustrato nell'animazione seguente. Dimostra anche come l'algoritmo t-SNE classifica le variabili latenti in dieci cluster e le proietta in uno spazio bidimensionale. Lo schema di colori del grafico a dispersione sul lato destro dell'immagine riflette i valori reali per mostrare come il modello BERT e l'algoritmo T-sne organizzano le variabili latenti nei cluster.

Un' immagine concettuale di autoencoder convoluzionale

Utilizzo di SageMaker Debugger per monitorare le attenzioni nell’addestramento del modello BERT

Le rappresentazioni di codifica bidirezionale da Transformers (BERT) è un modello di rappresentazione linguistica. Come indica il nome del modello, il modello BERT si basa sull'apprendimento del trasferimento e sul modello Transformer per Natural Language Processing (PNL).

Il modello BERT è pre-addestrato su compiti non supervisionati, come la previsione di parole mancanti in una frase o la previsione della frase successiva che naturalmente segue una frase precedente. I dati di addestramento contengono 3,3 miliardi di parole (token) di testo inglese da origini come Wikipedia e libri elettronici. Per un esempio semplice, il modello BERT può prestare molta attenzione ai token verbi appropriati o ai token pronome da un token soggetto.

Il modello BERT pre-addestrato può essere ottimizzato con un ulteriore livello di output per ottenere un addestramento di modelli all'avanguardia nelle attività PNL, come la risposta automatizzata alle domande, la classificazione dei testi e molti altri.

Debugger raccoglie i tensori dal processo di ottimizzazione. Nel contesto di NLP, si richiama l'attenzione sul peso dei neuroni.

Questo notebook illustra come utilizzare il modello BERT pre-addestrato dal GluonNLP Model Zoo sul set di dati di Stanford Question and Answering e come impostare Debugger SageMaker per monitorare processo di addestramento.

La tracciatura dei punteggi di attenzione e dei singoli neuroni nella query e nei vettori chiave può aiutare a identificare le cause delle previsioni errate del modello. SageMaker AI Debugger consente di recuperare i tensori e tracciare la vista attention-head in tempo reale man mano che l’addestramento progredisce e di capire cosa sta imparando il modello.

L'animazione seguente mostra i punteggi di attenzione dei primi 20 token di input per dieci iterazioni nel processo di addestramento fornito nell'esempio del notebook.

Un' animazione dei punteggi di attenzione

Utilizzo di SageMaker Debugger per visualizzare mappe di attivazione delle classi nelle reti neurali convoluzionali (CNN)

Questo notebook illustra come utilizzare Debugger SageMaker per tracciare le mappe di attivazione delle classi per il rilevamento e la classificazione delle immagini nelle reti neurali convoluzionali (CNN). Nel deep learning, una rete neurale convoluzionale (CNN o ConvNet) è una classe di reti neurali profonde, più comunemente applicate all'analisi di immagini visive. Una delle applicazioni che adotta le mappe di attivazione della classe è a guida autonoma e richiede il rilevamento istantaneo e la classificazione di immagini come segnali stradali, strade e ostacoli.

In questo notebook, il modello PyTorch RESNet è addestrato sul set di dati Traffic Sign German, che contiene più di 40 classi di oggetti correlati al traffico e più di 50.000 immagini in totale.

Un' animazione delle mappe di attivazione della classe CNN

Durante il processo di addestramento, Debugger SageMaker raccoglie i tensori per tracciare le mappe di attivazione della classe in tempo reale. Come mostrato nell'immagine animata, la mappa di attivazione della classe (detta anche mappa di salienza) evidenzia le Regioni con attivazione elevata in colore rosso.

Utilizzando i tensori catturati da Debugger, è possibile visualizzare l'evoluzione della mappa di attivazione durante l'addestramento del modello. Il modello inizia rilevando il bordo nell'angolo inferiore sinistro all'inizio del processo di addestramento. Man mano che l'addestramento progredisce, la messa a fuoco si sposta verso il centro e rileva il limite di velocità, e il modello predice con successo l'immagine di ingresso come Classe 3, che è una classe di limiti di velocità di 60 km/h, con un livello di attendibilità del 97%.