Guía de inicio rápido

Este tema se dirige a usuarios nuevos de Cloud TPU. Para una exploración más detallada de Cloud TPU, ejecuta una de nuestros colabs. También puedes ver uno de los numerosos ejemplos en la sección Instructivos.

Antes de comenzar

Antes de comenzar con este instructivo, verifica que el proyecto de Google Cloud Platform esté correctamente configurado.

  1. Accede a tu Cuenta de Google.

    Si todavía no tienes una cuenta, regístrate para obtener una nueva.

  2. Selecciona o crea un proyecto de GCP.

    Ir a la página Administrar recursos

  3. Asegúrate de tener habilitada la facturación para tu proyecto.

    Aprende a habilitar la facturación

  4. En esta explicación, se usan componentes facturables de Google Cloud Platform. Consulta la página de precios de Cloud TPU para calcular los costos. Asegúrate de limpiar los recursos que crees cuando hayas terminado con ellos para evitar cargos innecesarios.

Configura tus recursos

En esta sección, se proporciona información sobre la configuración de los recursos de almacenamiento de Cloud Storage, VM y Cloud TPU para instructivos.

Crea un depósito de Cloud Storage

Necesitas un depósito de Cloud Storage a fin de almacenar los datos que usas cuando entrenas el modelo y los resultados del entrenamiento. La herramienta ctpu up que se usa en este instructivo configura los permisos predeterminados para la cuenta de servicio de Cloud TPU. Si deseas contar con permisos más detallados, revisa los permisos de nivel de acceso.

El depósito que crees debe residir en la misma región que la máquina virtual (VM) y tu dispositivo de Cloud TPU o la porción de Cloud TPU (varios dispositivos de TPU).

  1. Ve a la página de Cloud Storage en GCP Console.

    Ir a la página de Cloud Storage

  2. Crea un depósito nuevo y especifica las siguientes opciones:

    • Un nombre único de tu elección
    • Clase de almacenamiento predeterminada: Regional
    • Ubicación: si quieres usar un dispositivo de Cloud TPU, acepta el valor predeterminado presentado. Si deseas usar una porción de pod de Cloud TPU, debes especificar una región en la que estén disponibles los pods de Cloud TPU.

Usa la herramienta ctpu

En esta sección, se demuestra el uso de la herramienta de aprovisionamiento de Cloud TPU (ctpu) para crear y administrar los recursos del proyecto de Cloud TPU. Los recursos están compuestos por una máquina virtual (VM) y un recurso de Cloud TPU que tiene el mismo nombre. Estos recursos deben residir en la misma región/zona que el depósito que acabas de crear.

También puedes configurar tus recursos de VM y TPU con los comandos de gcloud o mediante Cloud Console. Consulta la página de administración de recursos de VM y TPU para conocer todas las formas en que puedes configurar y administrar tus recursos de VM de Compute Engine y Cloud TPU.

Ejecuta ctpu up para crear recursos

  1. Abre una ventana de Cloud Shell.

    Abre Cloud Shell

  2. Ejecuta gcloud config set project <Your-Project> para usar el proyecto en el que deseas crear Cloud TPU.

  3. Ejecuta ctpu up y especifica las marcas que se muestran para un dispositivo de Cloud TPU o para una porción de pod. Consulta la referencia de CTPU para conocer las descripciones y las opciones de marcas.

  4. Configura un dispositivo de Cloud TPU:

    $ ctpu up 

    Aparece el siguiente mensaje de configuración:

    ctpu will use the following configuration:
    
    Name: [your TPU's name]
    Zone: [your project's zone]
    GCP Project: [your project's name]
    TensorFlow Version: 1.14
    VM:
     Machine Type: [your machine type]
     Disk Size: [your disk size]
     Preemptible: [true or false]
    Cloud TPU:
     Size: [your TPU size]
     Preemptible: [true or false]
    
    OK to create your Cloud TPU resources with the above configuration? [Yn]:
    

    Presiona y para crear tus recursos de Cloud TPU.

El comando ctpu up crea una máquina virtual (VM) y servicios de Cloud TPU.

A partir de este punto, el prefijo (vm)$ significa que debes ejecutar el comando en la instancia de VM de Compute Engine.

Verifica tu VM de Compute Engine

Cuando el comando ctpu up haya terminado de ejecutarse, verifica que la ventana de shell haya cambiado de username@project a username@tpuname. Este cambio indica que accediste a tu VM de Compute Engine.

Obtén los datos

El conjunto de datos MNIST está alojado en el sitio de la base de datos MNIST. Sigue las instrucciones que aparecen a continuación a fin de descargar y convertir los datos al formato requerido, y para subir los datos convertidos a Cloud Storage.

Descarga y convierte los datos MNIST

La secuencia de comandos convert_to_records.py descarga los datos y los convierte al formato TFRecord esperado por el ejemplo del modelo MNIST.

Usa los siguientes comandos para ejecutar la secuencia de comandos y descomprimir los archivos:

(vm)$ python /usr/share/tensorflow/tensorflow/examples/how_tos/reading_data/convert_to_records.py --directory=./data
(vm)$ gunzip ./data/*.gz

Sube los datos a Cloud Storage

Sube los datos a tu depósito de Cloud Storage a fin de que el servidor de TPU pueda acceder a ellos. Cuando configures la variable en los comandos a continuación, reemplaza YOUR-BUCKET-NAME por el nombre del depósito de Cloud Storage:

(vm)$ export STORAGE_BUCKET=gs://YOUR-BUCKET-NAME
(vm)$ gsutil cp -r ./data ${STORAGE_BUCKET}

Ejecuta el modelo de TPU MNIST

El modelo de TPU MNIST está previamente instalado en tu VM de Compute Engine, en el siguiente directorio:

/usr/share/models/official/mnist/

El código fuente para el modelo de TPU MNIST también está disponible en GitHub. Puedes ejecutar el modelo en Cloud TPU. Además, consulta cómo ejecutar el modelo en una máquina local.

Ejecuta el modelo en Cloud TPU

En los siguientes pasos, un prefijo (vm)$ significa que debes ejecutar el comando en la instancia de VM de Compute Engine:

  1. Ejecuta el modelo MNIST:

    (vm)$ python /usr/share/models/official/mnist/mnist_tpu.py \
      --tpu=$TPU_NAME \
      --data_dir=${STORAGE_BUCKET}/data \
      --model_dir=${STORAGE_BUCKET}/output \
      --use_tpu=True \
      --iterations=500 \
      --train_steps=2000
    
    • --tpu especifica el nombre de Cloud TPU. Ten en cuenta que ctpu envía este nombre a la VM de Compute Engine como una variable de entorno (TPU_NAME). Sin embargo, si pierdes la conexión con la VM, puedes volver a conectarte si ejecutas ctpu up nuevamente. TPU_NAME no se establecerá si te conectas a la VM mediante la ejecución de gcloud compute ssh.
    • --data_dir especifica la ruta de Cloud Storage para la entrada de entrenamiento.
    • --model_dir especifica el directorio en el cual se almacenan puntos de control y resúmenes durante el entrenamiento del modelo. Si no hay una carpeta, el programa crea una. Cuando utilizas Cloud TPU, el model_dir debe ser una ruta de Cloud Storage (gs://...). Puedes reutilizar una carpeta existente a fin de cargar datos de los puntos de control actuales y almacenar puntos de control adicionales.
    • --iterations especifica la cantidad de pasos de entrenamiento que deben ejecutarse en la TPU en cada llamada antes de devolver el control a Python. Si esta cantidad es demasiado pequeña (por ejemplo, menor que 100), esto puede causar una sobrecarga de comunicación excesiva que afecte negativamente el rendimiento.
    • --train_steps especifica la cantidad total de pasos (lotes) necesarios para que se ejecute el entrenamiento.

Ejecuta el modelo en una máquina local (no TPU)

Para ejecutar el modelo en una máquina no TPU, omite --tpu y configura la siguiente marca:

--use_tpu=False

Esto hará que el cálculo se dirija a una GPU, en caso de que haya una. Si no hay ninguna GPU, el cálculo vuelve a la CPU.

Próximos pasos

De forma predeterminada, el modelo tf.estimator informa el valor de pérdida y el tiempo de los pasos en el siguiente formato:

    INFO:tensorflow:Calling model_fn.
    INFO:tensorflow:Create CheckpointSaverHook.
    INFO:tensorflow:Done calling model_fn.
    INFO:tensorflow:TPU job name tpu_worker
    INFO:tensorflow:Graph was finalized.
    INFO:tensorflow:Running local_init_op.
    INFO:tensorflow:Done running local_init_op.
    INFO:tensorflow:Init TPU system
    INFO:tensorflow:Start infeed thread controller
    INFO:tensorflow:Starting infeed thread controller.
    INFO:tensorflow:Start outfeed thread controller
    INFO:tensorflow:Starting outfeed thread controller.
    INFO:tensorflow:Enqueue next (500) batch(es) of data to infeed.
    INFO:tensorflow:Dequeue next (500) batch(es) of data from outfeed.
    INFO:tensorflow:Saving checkpoints for 500 into gs://ctpu-mnist-test/output/model.ckpt.
    INFO:tensorflow:loss = 0.08896458, step = 0
    INFO:tensorflow:loss = 0.08896458, step = 0
    INFO:tensorflow:Enqueue next (500) batch(es) of data to infeed.
    INFO:tensorflow:Dequeue next (500) batch(es) of data from outfeed.
    INFO:tensorflow:Enqueue next (500) batch(es) of data to infeed.
    INFO:tensorflow:Dequeue next (500) batch(es) of data from outfeed.
    INFO:tensorflow:global_step/sec: 242.829
    INFO:tensorflow:examples/sec: 248715
    INFO:tensorflow:Enqueue next (500) batch(es) of data to infeed.
    INFO:tensorflow:Dequeue next (500) batch(es) of data from outfeed.
    INFO:tensorflow:Saving checkpoints for 2000 into gs://ctpu-mnist-test/output/model.ckpt.
    INFO:tensorflow:Stop infeed thread controller
    INFO:tensorflow:Shutting down InfeedController thread.
    INFO:tensorflow:InfeedController received shutdown signal, stopping.
    INFO:tensorflow:Infeed thread finished, shutting down.
    INFO:tensorflow:Stop output thread controller
    INFO:tensorflow:Shutting down OutfeedController thread.
    INFO:tensorflow:OutfeedController received shutdown signal, stopping.
    INFO:tensorflow:Outfeed thread finished, shutting down.
    INFO:tensorflow:Shutdown TPU system.
    INFO:tensorflow:Loss for final step: 0.044236258.

Limpia

Para evitar que se apliquen cargos a tu cuenta de GCP por los recursos usados en este tema, realiza los siguientes pasos:

  1. Desconéctate de la VM de Compute Engine:

    (vm)$ exit
    

    En la ventana, debe aparecer user@projectname, lo que indica que estás en Cloud Shell.

  2. En Cloud Shell, ejecuta ctpu delete con la marca --zone que usaste cuando configuraste la Cloud TPU para borrar la VM de Compute Engine y la Cloud TPU:

    $ ctpu delete [optional: --zone]
    
  3. Ejecuta ctpu status para asegurarte de no tener instancias asignadas y así evitar cargos innecesarios por el uso de TPU. La eliminación puede tardar varios minutos. Una respuesta como la que se muestra a continuación indica que no hay más instancias asignadas:

    2018/04/28 16:16:23 WARNING: Setting zone to "us-central1-b"
    No instances currently exist.
            Compute Engine VM:     --
            Cloud TPU:             --
    
  4. Ejecuta gsutil como se muestra y reemplaza YOUR-BUCKET-NAME con el nombre del depósito de Cloud Storage que creaste para este instructivo:

    $ gsutil rm -r gs://YOUR-BUCKET-NAME
    

Pasos siguientes

En esta guía de inicio rápido, se proporcionó una breve introducción al trabajo con Cloud TPU. En este punto, tienes la base para realizar las acciones siguientes:

  • Obtener más información sobre Cloud TPU
  • Configurar Cloud TPU para tus propias aplicaciones

Más información

MNIST en Keras Prueba a usar Cloud TPU con la ejecución del modelo MNIST en un entorno colab.
Descripción general del producto Revisa las características y los beneficios clave de Cloud TPU.
Cloud Tensor Processing Unit (TPU) Obtén más información sobre Cloud TPU, sus capacidades y sus ventajas.
Precios Revisa la información de precios para Cloud TPU.

Configuración

Cómo elegir un servicio de TPU Comprende las diferentes opciones para trabajar con Cloud TPU, como Compute Engine, Google Kubernetes Engine o AI Platform.
Cómo elegir una configuración de TPU Comprende los diferentes tipos de versiones de Cloud TPU y aprende a seleccionar la adecuada para tu aplicación. Además, comprende las opciones para respaldar tus aplicaciones con nodos TPU de varios tamaños.
¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…