Entrena en una TPU de host único con Pax


En este documento, se ofrece una breve introducción al trabajo con Pax en una TPU de host único (v2-8, v3-8, v4-8).

Pax es un framework para configurar. y ejecutar experimentos de aprendizaje automático sobre JAX. Enfoques de la Pax en simplificar el AA a gran escala compartiendo componentes de infraestructura con los frameworks de AA existentes y cómo Biblioteca de modelado Praxis para la modularidad.

Objetivos

  • Configura recursos de TPU para el entrenamiento
  • Instala Pax en una TPU de host único
  • Entrenar un modelo SPMD basado en transformador con Pax

Antes de comenzar

Ejecuta los siguientes comandos para configurar gcloud y usarlo tu proyecto de Cloud TPU e instalarás los componentes necesarios para entrenar un modelo que ejecuta Pax en una TPU de host único.

Instala Google Cloud CLI

Google Cloud CLI contiene herramientas y bibliotecas para interactuar con los productos y servicios de Google Cloud CLI. Si aún no lo has instalado instálala ahora con las instrucciones que se indican en Cómo instalar Google Cloud CLI.

Configura el comando gcloud

Ejecuta gcloud auth list para ver las cuentas disponibles.

$ gcloud config set account account

$ gcloud config set project project-id

Habilita la API de Cloud TPU

Habilita la API de Cloud TPU con el siguiente comando gcloud en Cloud Shell. (También puedes habilitarlo desde Consola de Google Cloud).

$ gcloud services enable tpu.googleapis.com

Ejecuta el siguiente comando para crear una identidad de servicio (una cuenta de servicio).

$ gcloud beta services identity create --service tpu.googleapis.com

Crea una VM de TPU

Con las VMs de Cloud TPU, tu modelo y código se ejecutan directamente en la VM de TPU. Establece una conexión SSH directamente en la VM de TPU. Puedes ejecutar reglas instalar paquetes, visualizar registros y depurar código directamente en la VM de TPU.

Para crear la VM de TPU, ejecuta el siguiente comando desde un Cloud Shell o la terminal de tu computadora donde Google Cloud CLI está instalado.

Configura el zone según la disponibilidad en tu contrato. hacer referencia a regiones y zonas de TPU si es necesario.

Establece la variable accelerator-type en v2-8, v3-8 o v4-8.

Establece la variable version en tpu-vm-base. para las versiones de TPU v2 y v3, o tpu-vm-v4-base para las TPU v4.

$ gcloud compute tpus tpu-vm create tpu-name \
--zone zone \
--accelerator-type accelerator-type \
--version version

Conéctate a la VM de Google Cloud TPU

Establece una conexión SSH a la VM de TPU con el siguiente comando:

$ gcloud compute tpus tpu-vm ssh tpu-name --zone zone

Cuando accedes a la VM, el símbolo del sistema de la shell cambia de De username@projectname a username@vm-name:

Instala Pax en la VM de Google Cloud TPU

Instala Pax, JAX y libtpu en la VM de TPU con los siguientes comandos:

(vm)$ python3 -m pip install -U pip \
python3 -m pip install paxml jax[tpu] 
-f https://storage.googleapis.com/jax-releases/libtpu_releases.html

Verificación del sistema

Comprueba que todo esté instalado correctamente. Para ello, verifica que JAX detecta los núcleos de la TPU:

(vm)$ python3 -c "import jax; print(jax.device_count())"

Se muestra la cantidad de núcleos de TPU, que debería ser 8 si usas un v2-8 o v3-8, o 4 si usas una v4-8.

Ejecuta el código Pax en una VM de TPU

Ahora puedes ejecutar cualquier código Pax que desees. lm_cloud ejemplos son excelentes para comenzar a ejecutar modelos en Pax. Por ejemplo, el siguientes comandos entrenan un Modelo de lenguaje SPMD basado en parámetros 2B basado en un transformador en datos sintéticos.

Los siguientes comandos muestran el resultado del entrenamiento para un lenguaje SPMD model. Entrena para 300 pasos en aproximadamente 20 minutos.

(vm)$ python3 .local/lib/python3.8/site-packages/paxml/main.py  --exp=tasks.lm.params.lm_cloud.LmCloudSpmd2BLimitSteps --job_log_dir=job_log_dir

En la porción v4-8, el resultado debe incluir lo siguiente:

Pérdidas y tiempos de pasos

tensor de resumen en el paso=step_# loss = loss
tensor de resumen en step=step_# Pasos por segundo x

Limpia

Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.

Cuando termines de usar la VM de TPU, sigue estos pasos para limpiar los recursos.

Desconéctate de la instancia de Compute Engine, si aún no lo has hecho:

(vm)$ exit

Borra tu Cloud TPU.

$ gcloud compute tpus tpu-vm delete tpu-name  --zone zone

¿Qué sigue?

Para obtener más información sobre Cloud TPU, consulta los siguientes vínculos: