Iniziare con i Transformers su Habana Gaudi

Inizia con i Transformers su Habana Gaudi.

Un paio di settimane fa, abbiamo avuto il piacere di annunciare che Habana Labs e Hugging Face si sono associati per accelerare l’addestramento del modello Transformer.

Gli acceleratori Habana Gaudi offrono un miglioramento delle prestazioni del 40% nel rapporto qualità-prezzo per l’addestramento dei modelli di apprendimento automatico rispetto alle ultime istanze Amazon EC2 basate su GPU. Siamo entusiasti di portare questi vantaggi di prestazioni del rapporto qualità-prezzo ai Transformers 🚀

In questo post pratico, ti mostrerò come configurare rapidamente un’istanza di Habana Gaudi su Amazon Web Services e quindi ottimizzare un modello BERT per la classificazione del testo. Come al solito, tutto il codice è fornito in modo che tu possa riutilizzarlo nei tuoi progetti.

Cominciamo!

Configurazione di un’istanza Habana Gaudi su AWS

Il modo più semplice per lavorare con gli acceleratori Habana Gaudi è avviare un’istanza Amazon EC2 DL1. Queste istanze sono dotate di 8 processori Habana Gaudi che possono essere facilmente messi al lavoro grazie all’immagine di macchina Habana Deep Learning Amazon (AMI). Questa AMI viene fornita con Habana SynapseAI® SDK preinstallato e gli strumenti necessari per eseguire contenitori Docker accelerati da Gaudi. Se desideri utilizzare altre AMI o contenitori, le istruzioni sono disponibili nella documentazione di Habana.

A partire dalla console EC2 nella regione us-east-1, faccio clic su Avvia un’istanza e definisco un nome per l’istanza (“habana-demo-julsimon”).

In seguito, cerco nel Marketplace di Amazon le AMI di Habana.

Scelgo l’AMI di base Habana Deep Learning (Ubuntu 20.04).

Successivamente, scelgo la dimensione dell’istanza dl1.24xlarge (l’unica dimensione disponibile).

Quindi, seleziono la coppia di chiavi che userò per connettermi all’istanza con ssh. Se non hai una coppia di chiavi, puoi crearne una al momento.

Come passo successivo, mi assicuro che l’istanza consenta il traffico ssh in entrata. Non restrinjo l’indirizzo di origine per semplicità, ma dovresti farlo sicuramente nel tuo account.

Per impostazione predefinita, questa AMI avvierà un’istanza con 8 GB di storage Amazon EBS, che non sarà sufficiente qui. Aumento lo storage a 50 GB.

Successivamente, assegno un ruolo Amazon IAM all’istanza. Nella vita reale, questo ruolo dovrebbe avere il set minimo di autorizzazioni richieste per eseguire il tuo job di addestramento, come ad esempio la capacità di leggere dati da uno dei tuoi bucket Amazon S3. Questo ruolo non è necessario qui poiché il dataset verrà scaricato dall’Hugging Face hub. Se non sei familiare con IAM, ti consiglio vivamente di leggere la documentazione di Introduzione.

Quindi, chiedo a EC2 di fornire la mia istanza come istanza Spot, un ottimo modo per ridurre il costo di $13,11 all’ora.

Infine, avvio l’istanza. Dopo un paio di minuti, l’istanza è pronta e posso connettermi ad essa con ssh. Gli utenti di Windows possono fare lo stesso con PuTTY seguendo la documentazione.

ssh -i ~/.ssh/julsimon-keypair.pem [email protected]

In questa istanza, l’ultimo passaggio di configurazione consiste nel scaricare il contenitore Habana per PyTorch, che è il framework che utilizzerò per ottimizzare il mio modello. Puoi trovare informazioni su altri contenitori precompilati e su come crearne uno proprio nella documentazione di Habana.

docker pull \
vault.habana.ai/gaudi-docker/1.5.0/ubuntu20.04/habanalabs/pytorch-installer-1.11.0:1.5.0-610

Una volta che l’immagine è stata scaricata nell’istanza, la eseguo in modalità interattiva.

docker run -it \
--runtime=habana \
-e HABANA_VISIBLE_DEVICES=all \
-e OMPI_MCA_btl_vader_single_copy_mechanism=none \
--cap-add=sys_nice \
--net=host \
--ipc=host vault.habana.ai/gaudi-docker/1.5.0/ubuntu20.04/habanalabs/pytorch-installer-1.11.0:1.5.0-610

Ora sono pronto per affinare il mio modello.

Affinamento di un modello di classificazione del testo su Habana Gaudi

Prima di tutto clono il repository di Optimum Habana all’interno del contenitore appena avviato.

git clone https://github.com/huggingface/optimum-habana.git

Quindi, installo il pacchetto Optimum Habana da sorgente.

cd optimum-habana
pip install .

Successivamente, mi sposto nella sotto-directory che contiene l’esempio di classificazione del testo e installo i pacchetti Python richiesti.

cd examples/text-classification
pip install -r requirements.txt

Ora posso avviare il processo di addestramento, che scarica il modello bert-large-uncased-whole-word-masking dall’hub di Hugging Face e lo affina sul compito MRPC del banco di prova GLUE.

Si prega di notare che sto recuperando la configurazione di Habana Gaudi per BERT dall’hub di Hugging Face e è anche possibile utilizzarne una propria. Inoltre, sono supportati altri modelli popolari e è possibile trovarne il file di configurazione nell’organizzazione Habana.

python run_glue.py \
--model_name_or_path bert-large-uncased-whole-word-masking \
--gaudi_config_name Habana/bert-large-uncased-whole-word-masking \
--task_name mrpc \
--do_train \
--do_eval \
--per_device_train_batch_size 32 \
--learning_rate 3e-5 \
--num_train_epochs 3 \
--max_seq_length 128 \
--use_habana \
--use_lazy_mode \
--output_dir ./output/mrpc/

Dopo 2 minuti e 12 secondi, il processo è completo e ha ottenuto un eccellente punteggio F1 di 0,9181, che potrebbe sicuramente migliorare con più epoche.

***** metriche di addestramento *****
  epoca                    =       3.0
  perdita di addestramento  =     0,371
  tempo di esecuzione di addestramento  = 0:02:12.85
  campioni di addestramento  =      3668
  campioni di addestramento al secondo =    82,824
  passi di addestramento al secondo   =     2,597

***** metriche di valutazione *****
  epoca                   =       3.0
  accuratezza di valutazione           =     0,8505
  punteggio combinato di valutazione     =     0,8736
  F1 di valutazione                 =     0,8968
  perdita di valutazione               =     0,385
  tempo di esecuzione di valutazione  = 0:00:06.45
  campioni di valutazione            =       408
  campioni di valutazione al secondo =    63,206
  passi di valutazione al secondo   =     7,901

Ultimo ma non meno importante, termino l’istanza EC2 per evitare addebiti non necessari. Guardando il riepilogo dei risparmi nella console EC2, vedo che ho risparmiato il 70% grazie alle istanze Spot, pagando solo $3,93 all’ora invece di $13,11.

Come puoi vedere, la combinazione di Transformers, Habana Gaudi e istanze AWS è potente, semplice ed economicamente conveniente. Provala e facci sapere cosa ne pensi. Accogliamo sicuramente con favore le tue domande e i tuoi commenti sul Forum di Hugging Face.


Contatta Habana per saperne di più sull’addestramento dei modelli di Hugging Face sui processori Gaudi.