Este instructivo se enfoca en la versión FairSeq de Transformer y la tarea de traducción de WMT 18 de inglés a alemán.
Objetivos
- Preparar el conjunto de datos
- Ejecutar el trabajo de entrenamiento
- Verificar los resultados de salida
Costos
En este instructivo, se usan 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 Google Cloud Console, selecciona o crea un proyecto de Google Cloud.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Obtén información sobre cómo verificar si la facturación está habilitada en un proyecto.
-
En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Obtén información sobre cómo verificar si la facturación está habilitada en un proyecto.
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.
Configura una instancia de Compute Engine
Abre una ventana de Cloud Shell.
Crea una variable para el ID de tu proyecto.
export PROJECT_ID=project-id
Configura Google Cloud CLI para usar el proyecto en el que deseas crear Cloud TPU.
gcloud config set project ${PROJECT_ID}
La primera vez que ejecutes este comando en una VM de Cloud Shell nueva, se mostrará la página
Authorize Cloud Shell
. Haz clic enAuthorize
en la parte inferior de la página para permitir quegcloud
realice llamadas a la API con tus credenciales.En la versión v, inicia el recurso de Compute Engine necesario para este instructivo.
gcloud compute --project=${PROJECT_ID} instances create transformer-tutorial \ --zone=us-central1-a \ --machine-type=n1-standard-16 \ --image-family=torch-xla \ --image-project=ml-images \ --boot-disk-size=200GB \ --scopes=https://www.googleapis.com/auth/cloud-platform
Conéctate a la instancia nueva de Compute Engine.
gcloud compute ssh transformer-tutorial --zone=us-central1-a
Inicia un recurso de Cloud TPU
En la máquina virtual de Compute Engine, inicia un recurso de Cloud TPU con el siguiente comando:
(vm) $ gcloud compute tpus create transformer-tutorial \ --zone=us-central1-a \ --network=default \ --version=pytorch-1.13 \ --accelerator-type=v3-8
Identifica la dirección IP para el recurso Cloud TPU.
(vm) $ gcloud compute tpus list --zone=us-central1-a
La dirección IP se encuentra en la columna
NETWORK_ENDPOINTS
. Necesitarás esta dirección IP cuando crees y configures el entorno PyTorch.
Descarga los datos
Crea un directorio,
pytorch-tutorial-data
para almacenar los datos del modelo.(vm) $ mkdir $HOME/pytorch-tutorial-data
Navega al directorio
pytorch-tutorial-data
.(vm) $ cd $HOME/pytorch-tutorial-data
Descarga los datos del modelo.
(vm) $ wget https://dl.fbaipublicfiles.com/fairseq/data/wmt18_en_de_bpej32k.zip
Extrae los datos.
(vm) $ sudo apt-get install unzip && \ unzip wmt18_en_de_bpej32k.zip
Crea y configura el entorno PyTorch
Inicia un entorno
conda
.(vm) $ conda activate torch-xla-1.13
Configura variables de entorno para el recurso de Cloud TPU.
(vm) $ export TPU_IP_ADDRESS=ip-address; \ export XRT_TPU_CONFIG="tpu_worker;0;$TPU_IP_ADDRESS:8470"
Entrena el modelo
Para entrenar el modelo, ejecuta la siguiente secuencia de comandos:
(vm) $ python /usr/share/torch-xla-1.13/tpu-examples/deps/fairseq/train.py \
$HOME/pytorch-tutorial-data/wmt18_en_de_bpej32k \
--save-interval=1 \
--arch=transformer_vaswani_wmt_en_de_big \
--max-target-positions=64 \
--attention-dropout=0.1 \
--no-progress-bar \
--criterion=label_smoothed_cross_entropy \
--source-lang=en \
--lr-scheduler=inverse_sqrt \
--min-lr 1e-09 \
--skip-invalid-size-inputs-valid-test \
--target-lang=de \
--label-smoothing=0.1 \
--update-freq=1 \
--optimizer adam \
--adam-betas '(0.9, 0.98)' \
--warmup-init-lr 1e-07 \
--lr 0.0005 \
--warmup-updates 4000 \
--share-all-embeddings \
--dropout 0.3 \
--weight-decay 0.0 \
--valid-subset=valid \
--max-epoch=25 \
--input_shapes 128x64 \
--num_cores=8 \
--metrics_debug \
--log_steps=100
Realiza una limpieza
Realiza una limpieza para evitar incurrir en cargos innecesarios en tu cuenta después de usar los recursos que creaste:
Desconéctate de la instancia de Compute Engine, si aún no lo hiciste:
(vm) $ exit
El mensaje ahora debería mostrar
user@projectname
, que indica que estás en Cloud Shell.En Cloud Shell, usa Google Cloud CLI para borrar la instancia de Compute Engine.
$ gcloud compute instances delete transformer-tutorial --zone=us-central1-a
Usa Google Cloud CLI para borrar el recurso de Cloud TPU.
$ gcloud compute tpus delete transformer-tutorial --zone=us-central1-a
¿Qué sigue?
Prueba los siguientes colaboradores de PyTorch:
- Comienza a usar PyTorch en Cloud TPU
- Entrenamiento de MNIST en TPU
- Entrenamiento de ResNet18 en TPU con el conjunto de datos de Cifar10
- Inferencia con el modelo ResNet50 previamente entrenado
- Transferencia de estilo neuronal rápida
- Capacitación de varios núcleos de AlexCre en Fashion MNIST
- Capacitación de núcleo único de AlexNet en Fashion MNIST