Si no estás familiarizado con Cloud TPU, te recomendamos que revises la Guía de inicio rápido para aprender a crear una VM de TPU.
En este instructivo, se muestra cómo entrenar el modelo GPT de HuggingFace2 en Cloud TPU.
Objetivos
- Crear una Cloud TPU
- Instala dependencias
- Ejecuta el trabajo de entrenamiento
Costos
En este documento, usarás los siguientes componentes facturables de Google Cloud:
- Compute Engine
- Cloud TPU
Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.
Antes de comenzar
Antes de comenzar este instructivo, verifica que tu proyecto de Google Cloud esté configurado correctamente.
- Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
En esta explicación, se usan componentes facturables de Google Cloud. Consulta la página de precios de Cloud TPU para calcular los costos. Asegúrate de limpiar los recursos que crees cuando hayas terminado de usarlos para evitar cargos innecesarios.
Entrene GPT2 de HuggingFace con Cloud TPU
Abra una ventana de Cloud Shell.
Cree una variable de entorno para su ID del proyecto.
export PROJECT_ID=project-id
Configura Google Cloud CLI para usar el proyecto de Google Cloud en el que deseas crear una Cloud TPU.
gcloud config set project ${PROJECT_ID}
La primera vez que ejecutes este comando en una nueva VM de Cloud Shell, se mostrará una página
Authorize Cloud Shell
. Haz clic enAuthorize
en la parte inferior de la página para permitir quegcloud
realice llamadas a la API de Google Cloud con tus credenciales.Crea una cuenta de servicio para el proyecto de Cloud TPU.
Las cuentas de servicio permiten que el servicio de Cloud TPU acceda a otros servicios de Google Cloud.
$ gcloud beta services identity create --service tpu.googleapis.com --project $PROJECT_ID
El comando muestra una cuenta de servicio de Cloud TPU con el siguiente formato:
service-PROJECT_NUMBER@cloud-tpu.iam.gserviceaccount.com
Crear una Cloud TPU
Crea una VM de Cloud TPU con el comando
gcloud
. El siguiente comando crea una TPUv4-8
. También puedes crear una Slice de Pod de TPU si configuras la marca--accelerator-type
en un tipo de Pod Slice, por ejemplo,v4-32
.$ gcloud compute tpus tpu-vm create hf-gpt2 \ --zone=us-central2-b \ --accelerator-type=v4-8 \ --version=tpu-vm-tf-2.13.0
Conéctate a la VM de Cloud TPU mediante la ejecución del siguiente comando
ssh
.gcloud compute tpus tpu-vm ssh hf-gpt2 --zone=us-central2-b
Instala dependencias
Clona el repositorio de HuggingFace Transformers:
(vm)$ git clone https://github.com/huggingface/transformers.git (vm)$ cd transformers
Instala las dependencias:
(vm)$ pip install . (vm)$ pip install -r examples/tensorflow/_tests_requirements.txt (vm)$ cd examples/tensorflow/language-modeling (vm)$ pip install -r requirements.txt
Crea un directorio temporal:
(vm)$ mkdir /tmp/gpt2-wikitext
Ejecutar secuencia de comandos de entrenamiento
(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
Descripciones de las marcas de comandos
model_name_or_path
- El nombre del modelo que se entrenará.
max_train_samples
- La cantidad máxima de muestras que se deben usar para el entrenamiento.
max_eval_samples
- La cantidad máxima de muestras que se usarán para la evaluación.
num_train_epochs
- La cantidad de ciclos de entrenamiento para entrenar el modelo.
output_dir
- El directorio de salida para la secuencia de comandos de entrenamiento.
dataset_name
- Es el nombre del conjunto de datos que se usará.
dataset_config_name
- El nombre de la configuración del conjunto de datos
Cuando se complete el entrenamiento, se mostrará un mensaje similar al siguiente:
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
Limpia
Desconéctate de la instancia de VM de TPU:
(vm)$ exit
El mensaje ahora debería mostrar
username@projectname
, que indica que estás en Cloud Shell.Borra el recurso TPU.
$ gcloud compute tpus tpu-vm delete hf-gpt2 \ --zone=us-central2-b
¿Qué sigue?
Prueba uno de los otros modelos de referencia admitidos.