Crea VMs de TPU con inicio flexible con Compute Engine

Las VMs de TPU con inicio flexible, que cuentan con la tecnología del Programador dinámico de cargas de trabajo, ofrecen una forma flexible y rentable de acceder a los recursos de TPU para cargas de trabajo de IA durante un máximo de 7 días sin reservas a largo plazo. Cuando solicitas VMs de TPU con inicio flexible, tu solicitud permanece en una cola hasta que haya capacidad disponible. Una vez aprovisionadas, las VMs de TPU se ejecutan durante el período que especificaste.

Las VMs de TPU con inicio flexible son una buena opción para la experimentación rápida, las pruebas a pequeña escala, el aprovisionamiento dinámico de TPU destinado a cargas de trabajo de inferencia, el ajuste de modelos y las ejecuciones de cargas de trabajo que tardan menos de 7 días. Para obtener más información sobre otras opciones de consumo de TPU, consulta Opciones de consumo de Cloud TPU.

Puedes borrar los recursos de TPU en cualquier momento para detener la facturación. Para obtener más información sobre los precios de las TPU, consulta Precios de Cloud TPU.

Limitaciones

Las VMs de TPU con inicio flexible tienen las limitaciones que se indican a continuación:

  • Puedes solicitar VMs de TPU con inicio flexible para un período de hasta 7 días.
  • Puedes solicitar los tipos de máquinas TPU7x, TPU v6e y TPU v5p. Para obtener más información sobre las regiones y zonas en las que están disponibles estos tipos de máquinas, consulta Regiones y zonas de TPU.

Los MIG con TPUs tienen las siguientes limitaciones:

  • Operaciones de ciclo de vida: No puedes detener, iniciar, reanudar ni suspender instancias de TPU. Para cambiar la configuración que requiere un reinicio o dejar de generar cargos, debes borrar las instancias.

  • Distribución de zonas del MIG regional: Debes establecer la forma de distribución objetivo en ANY_SINGLE_ZONE.

  • Actualizaciones de configuración en un MIG:

    • No puedes actualizar un MIG que forma una porción de TPU de varios hosts debido a la topología de acelerador definida.
    • Puedes actualizar un MIG que forma porciones de TPU de host único con los métodos automático o selectivo. Sin embargo, las actualizaciones de la porción de TPU de host único no admiten la acción de reinicio (RESTART). Si es necesario reiniciar y la acción más disruptiva permitida es reemplazar (REPLACE), el actualizador reemplazará la instancia; de lo contrario, el intento de actualización fallará con un error.

  • En el caso de un MIG que forma una porción de TPU de varios hosts, también se aplican las siguientes limitaciones:

    • Política de tamaño objetivo: Debes establecer el modo de política de tamaño objetivo en BULK. Una vez que establezcas este modo, no podrás cambiarlo.

    • Tamaño objetivo: En el modo masivo, puedes establecer el tamaño objetivo en 0 o en la cantidad de instancias que se requieren para formar la topología del acelerador.

    • Política de carga de trabajo: Debes especificar una política de carga de trabajo en la que se defina la topología del acelerador. Después de establecer la política de carga de trabajo, no podrás cambiarla ni quitarla del MIG.

    • Reparaciones iniciadas por el MIG: Debes desactivar las reparaciones iniciadas por el MIG configurando el campo defaultActionOnFailure como DO_NOTHING. En esta configuración, el MIG no realiza ninguna acción en una instancia con errores. Compute Engine recupera automáticamente la instancia con errores reiniciando todas las instancias de la misma división en capacidad en buen estado.

  • Funciones no admitidas: Las MIG con TPU no admiten las siguientes funciones:

Antes de comenzar

Antes de solicitar VMs de TPU con inicio flexible, debes seguir los pasos que se indican más abajo:

  • Instalar la Google Cloud CLI
  • Crear un proyecto de Google Cloud
  • Habilita la API de Compute Engine (compute.googleapis.com).
  • Asegúrate de tener los permisos necesarios:
    • roles/compute.instanceAdmin.v1
    • roles/iam.serviceAccountUser

Para obtener más información, consulta Configura un proyecto de Google Cloud para TPUs.

Asegúrate de tener suficiente cuota de recursos interrumpibles para usar las VMs de TPU con inicio flexible. Si tu carga de trabajo requiere más núcleos que la asignación actual, puedes solicitar un aumento de cuota. Para obtener más información, consulta Cuotas de Cloud TPU.

Crea VMs de TPU con inicio flexible con MIGs

Para usar las VMs de TPU con inicio flexible, debes crear un grupo de instancias administrado (MIG) con una configuración específica de la plantilla de instancias.

Para obtener instrucciones generales sobre cómo crear VMs de inicio flexible, consulta Crea VMs de inicio flexible.

Crea VMs de TPU con inicio flexible con una porción de varios hosts

Crea una plantilla de instancias

Crea una plantilla de instancias que especifique el modelo de aprovisionamiento FLEX_START y la duración de ejecución que elijas.

gcloud

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --machine-type=MACHINE_TYPE \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT \
    --provisioning-model=FLEX_START \
    --instance-termination-action=DELETE \
    --max-run-duration=DURATION \
    --region=REGION \
    --maintenance-policy=TERMINATE

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "INSTANCE_TEMPLATE_NAME",
    "properties": {
      "machineType": "MACHINE_TYPE",
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
          }
        }
      ],
      "scheduling": {
        "onHostMaintenance": "TERMINATE",
        "provisioningModel": "FLEX_START",
        "instanceTerminationAction": "DELETE",
        "maxRunDuration": {
          "seconds": "DURATION"
        }
      },
      "networkInterfaces": [
        {
          "network": "global/networks/default"
        }
      ]
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceTemplates"

Reemplaza los marcadores de posición que se indican más abajo:

  • PROJECT_ID: Es el ID de tu proyecto de Google Cloud .
  • INSTANCE_TEMPLATE_NAME: El nombre de tu plantilla de instancias.
  • MACHINE_TYPE: Es el tipo de máquina de la TPU VM (por ejemplo, ct6e-standard-8t).
  • IMAGE_FAMILY: Es la familia de imagen de SO para la VM de TPU (por ejemplo, ubuntu-accelerator-2204-amd64-with-tpu-v6e).
  • IMAGE_PROJECT: Es el proyecto de imagen de SO para la VM de TPU (por ejemplo, ubuntu-os-accelerator-images).
  • DURATION: Es la duración máxima de la ejecución. En el caso de REST, especifica este valor como una cantidad de segundos (por ejemplo, 3600 para 1 hora o 604800 para 7 días).
  • REGION: Región en la que se creará la plantilla de instancias.

Crear una política de cargas de trabajo

El siguiente comando crea una política de cargas de trabajo. Este campo es opcional para los segmentos de un solo host.

gcloud

gcloud compute resource-policies create workload-policy WORKLOAD_POLICY_NAME \
  --type=high-throughput \
  --accelerator-topology=TOPOLOGY \
  --region=REGION

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "WORKLOAD_POLICY_NAME",
    "workloadPolicy": {
      "type": "HIGH_THROUGHPUT",
      "acceleratorTopology": "TOPOLOGY"
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies"

Reemplaza los marcadores de posición que se indican más abajo:

  • PROJECT_ID: Es el ID de tu proyecto de Google Cloud .
  • WORKLOAD_POLICY_NAME: Es el nombre de tu política de carga de trabajo.
  • TOPOLOGY: Es la topología de las VMs de TPU, por ejemplo, 4x4x8.
  • REGION: Es la región en la que se creará la política de carga de trabajo.

Crea el MIG

Crea el MIG con la plantilla.

gcloud

gcloud compute instance-groups managed create MIG_NAME \
    --zone=ZONE \
    --template=INSTANCE_TEMPLATE_URL \
    --size=SIZE \
    --workload-policy=WORKLOAD_POLICY_URL \
    --default-action-on-vm-failure=do-nothing \
    --target-size-policy-mode=bulk

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "MIG_NAME",
    "targetSize": SIZE,
    "targetSizePolicy": {
      "mode": "BULK"
    },
    "instanceTemplate": "INSTANCE_TEMPLATE_URL",
    "instanceLifecyclePolicy": {
      "defaultActionOnFailure": "DO_NOTHING"
    },
    "resourcePolicies": {
      "workloadPolicy": "WORKLOAD_POLICY_URL"
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers"

Reemplaza los marcadores de posición que se indican más abajo:

  • PROJECT_ID: Es el ID de tu proyecto de Google Cloud .
  • MIG_NAME: Es el nombre de tu MIG.
  • ZONE: Es la zona de tu MIG.
  • INSTANCE_TEMPLATE_URL: Es la URL de la plantilla de instancias que deseas usar para crear instancias en el MIG. La URL puede contener el ID o el nombre de la plantilla de instancias. Especifica uno de los siguientes valores:
    • Para una plantilla de instancias regional: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • Para una plantilla de instancias global: INSTANCE_TEMPLATE_ID
  • SIZE: Es la cantidad de instancias que se crearán.
  • WORKLOAD_POLICY_URL: URL de la política de cargas de trabajo que deseas usar para crear instancias en el MIG. Por ejemplo: projects/PROJECT_ID/regions/WORKLOAD_POLICY_REGION/resourcePolicies/WORKLOAD_POLICY_NAME.

Crea VMs de TPU con inicio flexible con porciones de host único

Crea una plantilla de instancias

Crea una plantilla de instancias que especifique el modelo de aprovisionamiento FLEX_START y la duración de ejecución que elijas.

gcloud

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --machine-type=MACHINE_TYPE \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT \
    --provisioning-model=FLEX_START \
    --instance-termination-action=DELETE \
    --max-run-duration=DURATION \
    --region=REGION \
    --maintenance-policy=TERMINATE

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "INSTANCE_TEMPLATE_NAME",
    "properties": {
      "machineType": "MACHINE_TYPE",
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
          }
        }
      ],
      "scheduling": {
        "onHostMaintenance": "TERMINATE",
        "provisioningModel": "FLEX_START",
        "instanceTerminationAction": "DELETE",
        "maxRunDuration": {
          "seconds": "DURATION"
        }
      },
      "networkInterfaces": [
        {
          "network": "global/networks/default"
        }
      ]
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceTemplates"

Reemplaza los marcadores de posición que se indican más abajo:

  • PROJECT_ID: Es el ID de tu proyecto de Google Cloud .
  • INSTANCE_TEMPLATE_NAME: El nombre de tu plantilla de instancias.
  • MACHINE_TYPE: Es el tipo de máquina de la TPU VM (por ejemplo, ct6e-standard-8t).
  • IMAGE_FAMILY: Es la familia de imagen de SO para la VM de TPU (por ejemplo, ubuntu-accelerator-2204-amd64-with-tpu-v6e).
  • IMAGE_PROJECT: Es el proyecto de imagen de SO para la VM de TPU (por ejemplo, ubuntu-os-accelerator-images).
  • DURATION: Es la duración máxima de la ejecución. En el caso de REST, especifica este valor como una cantidad de segundos (por ejemplo, 3600 para 1 hora o 604800 para 7 días).
  • REGION: Es la región en la que se creará la plantilla de instancias.

Crear una política de cargas de trabajo

El siguiente comando crea una política de cargas de trabajo. Este campo es opcional para los segmentos de un solo host.

gcloud

gcloud compute resource-policies create workload-policy WORKLOAD_POLICY_NAME \
  --type=high-throughput \
  --region=REGION

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "WORKLOAD_POLICY_NAME",
    "workloadPolicy": {
      "type": "HIGH_THROUGHPUT"
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies"

Reemplaza los marcadores de posición que se indican más abajo:

  • PROJECT_ID: Es el ID de tu proyecto de Google Cloud .
  • WORKLOAD_POLICY_NAME: Es un nombre para tu política de carga de trabajo.
  • REGION: Es la región en la que se creará la política de carga de trabajo.

Crea el MIG

Crea el MIG con la plantilla.

gcloud

gcloud compute instance-groups managed create MIG_NAME \
    --zone=ZONE \
    --template=INSTANCE_TEMPLATE_URL \
    --size=SIZE \
    --workload-policy=WORKLOAD_POLICY_URL

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "MIG_NAME",
    "targetSize": SIZE,
    "instanceTemplate": "INSTANCE_TEMPLATE_URL",
    "resourcePolicies": {
      "workloadPolicy": "WORKLOAD_POLICY_URL"
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers"

Reemplaza los marcadores de posición que se indican más abajo:

  • PROJECT_ID: Es el ID de tu proyecto de Google Cloud .
  • MIG_NAME: Es el nombre de tu MIG.
  • ZONE: Es la zona de tu MIG.
  • INSTANCE_TEMPLATE_URL: Es la URL de la plantilla de instancias que deseas usar para crear instancias en el MIG. La URL puede contener el ID o el nombre de la plantilla de instancias. Especifica uno de los siguientes valores:
    • Para una plantilla de instancias regional: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • Para una plantilla de instancias global: INSTANCE_TEMPLATE_ID
  • SIZE: Es la cantidad de instancias que se crearán.
  • WORKLOAD_POLICY_URL: URL de la política de cargas de trabajo que deseas usar para crear instancias en el MIG. Por ejemplo: projects/PROJECT_ID/regions/WORKLOAD_POLICY_REGION/resourcePolicies/WORKLOAD_POLICY_NAME.