Se non hai dimestichezza con Cloud TPU, ti consigliamo di consultare la quickstart per scoprire come creare una VM TPU.
Questo tutorial mostra come addestrare il modello HuggingFace GPT2 su Cloud TPU.
Obiettivi
- Crea una Cloud TPU
- Installa le dipendenze
- esegui il job di addestramento
Costi
In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:
- Compute Engine
- Cloud TPU
Per generare una stima dei costi in base all'utilizzo previsto,
utilizza il Calcolatore prezzi.
Prima di iniziare
Prima di iniziare questo tutorial, verifica che il tuo progetto Google Cloud sia configurato correttamente.
- Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
-
Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
Questa procedura dettagliata utilizza i componenti fatturabili di Google Cloud. Consulta la pagina dei prezzi di Cloud TPU per stimare i costi. Assicurati di pulire le risorse che hai creato quando hai finito di utilizzarle per evitare addebiti inutili.
Addestrare HuggingFace GPT2 con Cloud TPU
Apri una finestra di Cloud Shell.
Crea una variabile di ambiente per l'ID progetto.
export PROJECT_ID=your-project-id
Configura Google Cloud CLI per utilizzare il progetto Google Cloud in cui vuoi creare una Cloud TPU.
gcloud config set project ${PROJECT_ID}
La prima volta che esegui questo comando in una nuova VM Cloud Shell, viene visualizzata una pagina
Authorize Cloud Shell
. Fai clic suAuthorize
in fondo alla pagina per consentire agcloud
di effettuare chiamate API Google Cloud con le tue credenziali.Creare un account di servizio per il progetto Cloud TPU.
Gli account di servizio consentono al servizio Cloud TPU di accedere ad altri servizi Google Cloud.
$ gcloud beta services identity create --service tpu.googleapis.com --project $PROJECT_ID
Il comando restituisce un account di servizio Cloud TPU con il seguente formato:
service-PROJECT_NUMBER@cloud-tpu.iam.gserviceaccount.com
Crea una Cloud TPU
Crea una VM Cloud TPU utilizzando il comando
gcloud
. Il comando seguente crea una TPUv4-8
. Puoi anche creare una sezione di pod TPU impostando il flag--accelerator-type
su un tipo di pod di pod, ad esempiov4-32
.$ gcloud compute tpus tpu-vm create hf-gpt2 \ --zone=us-central2-b \ --accelerator-type=v4-8 \ --version=tpu-vm-tf-2.16.1-pjrt
Descrizioni flag comando
zone
- La zona in cui prevedi di creare la Cloud TPU.
accelerator-type
- Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per maggiori informazioni sui tipi di acceleratori supportati per ogni versione di TPU, consulta Versioni TPU.
version
- La versione software di Cloud TPU.
Connettiti alla VM Cloud TPU eseguendo il comando
ssh
riportato di seguito.gcloud compute tpus tpu-vm ssh hf-gpt2 --zone=us-central2-b
Installa le dipendenze
Clona il repository HuggingFace Transformers:
(vm)$ cd /tmp (vm)$ git clone https://github.com/huggingface/transformers.git (vm)$ cd transformers
Installa le dipendenze:
(vm)$ pip install . (vm)$ pip install -r examples/tensorflow/_tests_requirements.txt (vm)$ cd /tmp/transformers/examples/tensorflow/language-modeling (vm)$ pip install -r requirements.txt
Crea la directory temporanea:
(vm)$ mkdir /tmp/gpt2-wikitext
Durante la creazione della TPU, se imposti il parametro
--version
su una versione che termina con-pjrt
, imposta le seguenti variabili di ambiente per abilitare il runtime PJRT:(vm)$ export NEXT_PLUGGABLE_DEVICE_USE_C_API=true (vm)$ export TF_PLUGGABLE_DEVICE_LIBRARY_PATH=/lib/libtpu.so
Esegui script di addestramento
(vm)$ python3 run_clm.py \
--model_name_or_path distilgpt2 \
--max_train_samples 1000 \
--max_eval_samples 100 \
--num_train_epochs 1 \
--output_dir /tmp/gpt2-wikitext \
--dataset_name wikitext \
--dataset_config_name wikitext-103-raw-v1
Descrizioni flag comando
model_name_or_path
- Il nome del modello da addestrare.
max_train_samples
- Il numero massimo di campioni da utilizzare per l'addestramento.
max_eval_samples
- Il numero massimo di campioni da utilizzare per la valutazione.
num_train_epochs
- Il numero di epoche in cui addestrare il modello.
output_dir
- La directory di output per lo script di addestramento.
dataset_name
- Il nome del set di dati da utilizzare.
dataset_config_name
- Il nome della configurazione del set di dati
Al termine dell'addestramento, viene visualizzato un messaggio simile al seguente:
125/125 [============================] - ETA: 0s - loss: 3.61762023-07-07 21:38:17.902850: W tensorflow/core/framework/dataset.cc:956] Input of GeneratorDatasetOp::Dataset will not be optimized because the dataset does not implement the AsGraphDefInternal() method needed to apply optimizations. 125/125 [============================] - 763s 6s/step - loss: 3.6176 - val_loss: 3.4233 Configuration saved in /tmp/gpt2-wikitext/config.json Configuration saved in /tmp/gpt2-wikitext/generation_config.json Model weights saved in /tmp/gpt2-wikitext/tf_model.h5 D0707 21:38:45.640973681 12027 init.cc:191] grpc_shutdown starts clean-up now
Esegui la pulizia
Disconnettiti dall'istanza VM TPU:
(vm)$ exit
Il prompt ora dovrebbe essere
username@projectname
, a indicare che ti trovi in Cloud Shell.Elimina la risorsa TPU.
$ gcloud compute tpus tpu-vm delete hf-gpt2 \ --zone=us-central2-b
Passaggi successivi
Prova uno degli altri modelli di riferimento supportati.