Se non hai dimestichezza con Cloud TPU, ti consigliamo di consultare la guida rapida per scoprire come creare una VM TPU.
Questo tutorial mostra come addestrare il modello GPT2 di HuggingFace su Cloud TPU.
Obiettivi
- Crea una Cloud TPU
- Installa le dipendenze
- Esegui il job di addestramento
Costi
In questo documento utilizzi i seguenti componenti fatturabili di Google Cloud:
- Compute Engine
- Cloud TPU
Per generare una stima dei costi basata sull'utilizzo previsto,
utilizza il Calcolatore prezzi.
Prima di iniziare
Prima di iniziare questo tutorial, controlla che il progetto Google Cloud sia configurato correttamente.
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
Questa procedura dettagliata utilizza i componenti fatturabili di Google Cloud. Consulta la pagina Prezzi per Cloud TPU per stimare i costi. Assicurati di pulire che crei una volta terminato per evitare inutili addebiti.
Addestramento di HuggingFace a GPT2 con le 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 tuo 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, Pagina
Authorize Cloud Shell
visualizzata. Fai clic suAuthorize
in in fondo alla pagina per consentire agcloud
di effettuare chiamate API Google Cloud con le tue credenziali Google Cloud.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 i servizi di machine learning.
$ 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 un PodSlice TPU impostando il flag--accelerator-type
su un tipo di PodSlice, ad esempiov4-32
.$ gcloud compute tpus tpu-vm create hf-gpt2 \ --zone=us-central2-b \ --accelerator-type=v4-8 \ --version=tpu-vm-tf-2.17.0-pjrt
Descrizioni flag di comando
zone
- La zona in cui prevedi di creare la tua Cloud TPU.
accelerator-type
- Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per ulteriori informazioni sui tipi di acceleratori supportati per ogni versione di TPU, vedi Versioni TPU.
version
- La versione software di Cloud TPU.
Connettiti alla VM TPU tramite SSH. Quando sei connesso alla VM, il prompt della shell cambia da
username@projectname
ausername@vm-name
: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
Quando crei la TPU, se imposti il parametro
--version
su una versione che termina con-pjrt
, imposta le seguenti variabili di ambiente per attivare 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 di 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 per 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 tuo prompt dovrebbe ora 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.