En este instructivo, se muestra cómo entrenar con anterioridad el modelo Wav2Vec2 de FairSeq en un dispositivo de Cloud TPU con PyTorch. Puedes aplicar el mismo patrón a otros modelos de clasificación de imágenes optimizados con TPU que usen PyTorch y el conjunto de datos ImageNet.
El modelo de este instructivo se basa en el documento de wav2vec 2.0: A Framework for Self-Monitored Learning of Speech Representations.
Objetivos
- Crea y configura el entorno PyTorch.
- Descarga los datos de LibriSpeech de código abierto.
- Ejecutar el trabajo de entrenamiento
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.
- En la página del selector de proyectos de la consola, selecciona o crea un proyecto de Google Cloud. Nota: Si no planeas conservar los recursos que creaste durante este procedimiento, crea un proyecto en lugar de seleccionar uno existente. Cuando termines, puedes borrar el proyecto y quitar todos los recursos asociados con él.
- Ve a la página de selección de proyecto y asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Aprende a confirmar que la facturación está habilitada para tu proyecto.
- 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.Desde Cloud Shell, inicia el recurso de Compute Engine necesario para este instructivo.
gcloud compute instances create wav2vec2-tutorial \ --zone=us-central1-a \ --machine-type=n1-standard-64 \ --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 wav2vec2-tutorial --zone=us-central1-a
Inicia un recurso de Cloud TPU
En la máquina virtual de Compute Engine, configura la versión de PyTorch.
(vm) $ export PYTORCH_VERSION=1.13
Inicia un recurso de Cloud TPU con el siguiente comando:
(vm) $ gcloud compute tpus create wav2vec2-tutorial \ --zone=us-central1-a \ --network=default \ --version=pytorch-1.13 \ --accelerator-type=v3-8
Identifica la dirección IP del recurso de Cloud TPU; para ello, ejecuta el siguiente comando:
(vm) $ gcloud compute tpus describe wav2vec2-tutorial --zone=us-central1-a
Este comando mostrará información sobre la TPU. Busca la línea con la etiqueta
ipAddress
. Reemplazaip-address
por la dirección IP en el siguiente comando:(vm) $ export TPU_IP_ADDRESS=ip-address (vm) $ export XRT_TPU_CONFIG="tpu_worker;0;$TPU_IP_ADDRESS:8470"
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.
Descarga y prepara datos
Visita el sitio web de OpenSLR para ver los conjuntos de datos alternativos que puedes usar en esta tarea. En este instructivo, usaremos dev-clean.tar.gz
, ya que tiene el tiempo de procesamiento previo más corto.
Wav2Vec2 requiere algunas dependencias, instálalas ahora.
(vm) $ pip install omegaconf hydra-core soundfile (vm) $ sudo apt-get install libsndfile-dev
Descarga el conjunto de datos.
(vm) $ curl https://www.openslr.org/resources/12/dev-clean.tar.gz --output dev-clean.tar.gz
Extrae los archivos comprimidos. Tus archivos se almacenan en la carpeta
LibriSpeech
.(vm) $ tar xf dev-clean.tar.gz
Descarga e instala el modelo de Fairseq más reciente.
(vm) $ git clone --recursive https://github.com/pytorch/fairseq.git (vm) $ cd fairseq (vm) $ pip install --editable . (vm) $ cd -
Preparar el conjunto de datos Esta secuencia de comandos crea una carpeta llamada
manifest/
con el puntero a los datos sin procesar (enLibriSpeech/
).(vm) $ python fairseq/examples/wav2vec/wav2vec_manifest.py LibriSpeech/ --dest manifest/
Ejecuta el trabajo de entrenamiento
Ejecuta el modelo con los datos de LibriSpeech. Esta secuencia de comandos tarda alrededor de 2 horas en ejecutarse.
(vm) $ fairseq-hydra-train \ task.data=${HOME}/manifest \ optimization.max_update=400000 \ dataset.batch_size=4 \ common.log_format=simple \ --config-dir fairseq/examples/wav2vec/config/pretraining \ --config-name wav2vec2_large_librivox_tpu.yaml
Realiza una limpieza
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.
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 VM de Compute Engine y la TPU:
$ gcloud compute tpus delete wav2vec2-tutorial --zone=us-central1-a
¿Qué sigue?
Escalamiento a los pods de Cloud TPU
Consulta el instructivo Entrena modelos de PyTorch en pods de Cloud TPU para escalar la tarea de entrenamiento previo en este instructivo a los pods potentes de Cloud TPU.
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