Ejecutar un cálculo en una VM de TPU de Cloud con PyTorch

En este documento se ofrece una breve introducción sobre cómo trabajar con PyTorch y Cloud TPU.

Antes de empezar

Antes de ejecutar los comandos de este documento, debes crear una Google Cloud cuentagcloud, instalar la CLI de Google Cloud y configurar el comando gcloud. Para obtener más información, consulta el artículo Configurar el entorno de TPU de Cloud.

Crear una TPU de Cloud con gcloud

  1. Define algunas variables de entorno para que los comandos sean más fáciles de usar.

    export PROJECT_ID=your-project-id
    export TPU_NAME=your-tpu-name
    export ZONE=us-east5-a
    export ACCELERATOR_TYPE=v5litepod-8
    export RUNTIME_VERSION=v2-alpha-tpuv5-lite

    Descripciones de las variables de entorno

    Variable Descripción
    PROJECT_ID El ID de tu proyecto Google Cloud . Usa un proyecto que ya tengas o crea uno.
    TPU_NAME El nombre de la TPU.
    ZONE La zona en la que se creará la VM de TPU. Para obtener más información sobre las zonas admitidas, consulta Regiones y zonas de TPU.
    ACCELERATOR_TYPE El tipo de acelerador especifica la versión y el tamaño de la TPU de Cloud que quieres crear. Para obtener más información sobre los tipos de aceleradores compatibles con cada versión de TPU, consulta Versiones de TPU.
    RUNTIME_VERSION La versión de software de la TPU de Cloud.

  2. Crea tu VM de TPU ejecutando el siguiente comando:

    $ gcloud compute tpus tpu-vm create $TPU_NAME \
        --project=$PROJECT_ID \
        --zone=$ZONE \
        --accelerator-type=$ACCELERATOR_TYPE \
        --version=$RUNTIME_VERSION

Conéctate a tu VM de TPU de Cloud

Conéctate a tu VM de TPU mediante SSH con el siguiente comando:

$ gcloud compute tpus tpu-vm ssh $TPU_NAME \
    --project=$PROJECT_ID \
    --zone=$ZONE

Si no puedes conectarte a una VM de TPU mediante SSH, puede deberse a que la VM de TPU no tiene una dirección IP externa. Para acceder a una VM de TPU sin una dirección IP externa, sigue las instrucciones que se indican en Conectarse a una VM de TPU sin una dirección IP pública.

Instalar PyTorch/XLA en tu VM de TPU

$ (vm) sudo apt-get update
$ (vm) sudo apt-get install libopenblas-dev -y
$ (vm) pip install numpy
$ (vm) pip install torch torch_xla[tpu] -f https://storage.googleapis.com/libtpu-releases/index.html

Verificar que PyTorch puede acceder a las TPUs

Usa el siguiente comando para verificar que PyTorch puede acceder a tus TPUs:

$ (vm) PJRT_DEVICE=TPU python3 -c "import torch_xla.core.xla_model as xm; print(xm.get_xla_supported_devices(\"TPU\"))"

La salida del comando debería tener el siguiente aspecto:

['xla:0', 'xla:1', 'xla:2', 'xla:3', 'xla:4', 'xla:5', 'xla:6', 'xla:7']

Hacer un cálculo básico

  1. Crea un archivo llamado tpu-test.py en el directorio actual y copia y pega el siguiente script en él:

    import torch
    import torch_xla.core.xla_model as xm
    
    dev = xm.xla_device()
    t1 = torch.randn(3,3,device=dev)
    t2 = torch.randn(3,3,device=dev)
    print(t1 + t2)
    
  2. Ejecuta la secuencia de comandos:

    (vm)$ PJRT_DEVICE=TPU python3 tpu-test.py

    El resultado del script muestra el resultado del cálculo:

    tensor([[-0.2121,  1.5589, -0.6951],
            [-0.7886, -0.2022,  0.9242],
            [ 0.8555, -1.8698,  1.4333]], device='xla:1')
    

Limpieza

Para evitar que se apliquen cargos en tu cuenta de Google Cloud por los recursos utilizados en esta página, sigue estos pasos.

  1. Desconéctate de la instancia de TPU de Cloud, si aún no lo has hecho:

    (vm)$ exit

    A continuación, se mostrará el mensaje username@projectname, que indica que estás en Cloud Shell.

  2. Elimina tu TPU de Cloud.

    $ gcloud compute tpus tpu-vm delete $TPU_NAME \
        --project=$PROJECT_ID \
        --zone=$ZONE
  3. Para comprobar que los recursos se han eliminado, ejecuta el siguiente comando. Comprueba que tu TPU ya no aparezca en la lista. El proceso de eliminación puede tardar varios minutos.

    $ gcloud compute tpus tpu-vm list \
        --zone=$ZONE

Siguientes pasos

Consulta más información sobre las VMs de TPU de Cloud: