Se non hai dimestichezza con Cloud TPU, ti consigliamo di seguire la guida rapida per scoprire come per 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 vengono utilizzati 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, verifica che il tuo progetto Google Cloud sia corretto configurazione.
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
Questa procedura dettagliata utilizza i componenti fatturabili di Google Cloud. Controlla il Pagina dei prezzi di 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 in modo da utilizzare il progetto Google Cloud dove 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 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
. La questo comando crea una TPUv4-8
. Puoi anche creare una sezione di pod TPU impostando il flag--accelerator-type
su un tipo di sezione 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.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 Cloud TPU eseguendo questo
ssh
.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 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 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 tuo prompt ora dovrebbe essere
username@projectname
, a indicare che ti trovi in 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.