Crea un MIG con porciones de Cloud TPU de un solo host

En este documento, se describe cómo crear un grupo de instancias administrado (MIG) con varias porciones de TPU de un solo host independientes.

Requisitos previos

Completa los siguientes requisitos previos:

  1. Crea un proyecto para tus TPU como se describe en Configura un proyecto para TPU.
  2. Determina tus requisitos de TPU como se describe en Planifica tus recursos.

Crea un MIG con varias porciones de TPU de un solo host

Para crear varias VMs de TPU independientes en un MIG, haz lo siguiente:

  1. Crea una plantilla de instancias.
  2. Crea el MIG.

Crea una plantilla de instancias

Las configuraciones de la plantilla de instancias varían según la opción de consumo que uses: a pedido, de instancias Spot, de reservas o de inicio flexible. Para obtener más información sobre las opciones de consumo, consulta Planifica tus recursos de TPU .

Crea una plantilla de instancias para una TPU VM a pedido

El siguiente comando crea una plantilla de instancias que usa la opción de consumo a pedido:

gcloud

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT

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"
      },
      "networkInterfaces": [
        {
          "network": "global/networks/default"
        }
      ]
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates"

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

  • PROJECT_ID: Es el ID de tu Google Cloud proyecto.
  • INSTANCE_TEMPLATE_NAME: Es el nombre de tu plantilla de instancias.
  • MACHINE_TYPE: Es el tipo de máquina para la VM de TPU (por ejemplo, ct6e-standard-8t).
  • IMAGE_FAMILY: Es la familia de imágenes del SO para la VM de TPU. Si deseas instalar una versión específica del SO, usa la --image marca. Para obtener más información sobre las imágenes del SO, consulta Imágenes del SO.
  • IMAGE_PROJECT: Es el proyecto que contiene la imagen de SO. Para las imágenes de TPU, es ubuntu-os-accelerator-images.

Crea una plantilla de instancias para una VM de TPU de instancias Spot

El siguiente comando crea una plantilla de instancias que usa la opción de consumo de instancias Spot:

gcloud

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE \
    --instance-termination-action=STOP \
    --provisioning-model=SPOT \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT

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": "SPOT",
        "instanceTerminationAction": "STOP"
      },
      "networkInterfaces": [
        {
          "network": "global/networks/default"
        }
      ]
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates"

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

  • PROJECT_ID: Es el ID de tu Google Cloud proyecto.
  • INSTANCE_TEMPLATE_NAME: Es el nombre de tu plantilla de instancias.
  • MACHINE_TYPE: Es el tipo de máquina para la VM de TPU (por ejemplo, ct6e-standard-8t).
  • IMAGE_FAMILY: Es la familia de imágenes del SO para la VM de TPU. Si deseas instalar una versión específica del SO, usa la --image marca. Para obtener más información sobre las imágenes del SO, consulta Imágenes del SO.
  • IMAGE_PROJECT: Es el proyecto que contiene la imagen de SO. Para las imágenes de TPU, es ubuntu-os-accelerator-images.

Crea una plantilla de instancias para una VM de TPU vinculada a la reserva

El siguiente comando crea una plantilla de instancias que usa la opción de consumo vinculada a la reserva:

gcloud

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE \
    --instance-termination-action=DELETE \
    --reservation-affinity=specific \
    --provisioning-model=reservation-bound \
    --reservation=RESERVATION_NAME \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT

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": "RESERVATION_BOUND",
        "instanceTerminationAction": "DELETE"
      },
      "reservationAffinity": {
        "consumeReservationType": "SPECIFIC_RESERVATION",
        "key": "compute.googleapis.com/reservation-name",
        "values": [
          "RESERVATION_NAME"
        ]
      },
      "networkInterfaces": [
        {
          "network": "global/networks/default"
        }
      ]
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates"

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

  • PROJECT_ID: Es el ID de tu Google Cloud proyecto.
  • INSTANCE_TEMPLATE_NAME: Es el nombre de tu plantilla de instancias.
  • MACHINE_TYPE: Es el tipo de máquina para la VM de TPU (por ejemplo, ct6e-standard-8t).
  • RESERVATION_NAME: Es el nombre de una reserva específica que deseas consumir.
  • IMAGE_FAMILY: Es la familia de imágenes del SO para la VM de TPU. Si deseas instalar una versión específica del SO, usa la --image marca. Para obtener más información sobre las imágenes del SO, consulta Imágenes del SO.
  • IMAGE_PROJECT: Es el proyecto que contiene la imagen de SO. Para las imágenes de TPU, es ubuntu-os-accelerator-images.

Crea una plantilla de instancias para una VM de TPU de inicio flexible

El siguiente comando crea una plantilla de instancias que usa la opción de consumo de inicio flexible:

gcloud

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

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/global/instanceTemplates"

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

  • PROJECT_ID: Es el ID de tu Google Cloud proyecto.
  • INSTANCE_TEMPLATE_NAME: Es el nombre de tu plantilla de instancias.
  • MACHINE_TYPE: Es el tipo de máquina para la VM de TPU (por ejemplo, ct6e-standard-8t).
  • DURATION: Es la duración máxima de ejecución de la VM de TPU. Para REST, especifica esto como una cadena que contenga la cantidad de segundos seguida de "s" (por ejemplo, 3600s para 1 hora o 604800s para 7 días).
  • IMAGE_FAMILY: Es la familia de imágenes del SO para la VM de TPU. Si deseas instalar una versión específica del SO, usa la --image marca. Para obtener más información sobre las imágenes del SO, consulta Imágenes del SO.
  • IMAGE_PROJECT: Es el proyecto que contiene la imagen de SO. Para las imágenes de TPU, es ubuntu-os-accelerator-images.

Crear un MIG

Para crear un MIG zonal que contenga una porción de TPU de un solo host, usa el siguiente comando:

gcloud

gcloud compute instance-groups managed create MIG_NAME \
    --size=MIG_SIZE \
    --template=INSTANCE_TEMPLATE_URL \
    --zone=ZONE

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "MIG_NAME",
    "targetSize": MIG_SIZE,
    "instanceTemplate": "INSTANCE_TEMPLATE_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 Google Cloud proyecto.
  • MIG_NAME: Es el nombre de tu MIG.
  • MIG_SIZE: Es el tamaño del 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
  • ZONE: Es la zona de tu MIG.

Para crear un MIG regional que contenga una porción de TPU de un solo host, usa el siguiente comando:

gcloud

gcloud compute instance-groups managed create MIG_NAME \
    --size=MIG_SIZE \
    --template=INSTANCE_TEMPLATE_URL \
    --region=REGION \
    --target-distribution-shape=ANY_SINGLE_ZONE \
    --instance-redistribution-type=none

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "MIG_NAME",
    "targetSize": MIG_SIZE,
    "instanceTemplate": "INSTANCE_TEMPLATE_URL",
    "distributionPolicy": {
      "targetShape": "ANY_SINGLE_ZONE"
    },
    "updatePolicy": {
      "instanceRedistributionType": "NONE"
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers"

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

  • PROJECT_ID: Es el ID de tu Google Cloud proyecto.
  • MIG_NAME: Es el nombre de tu MIG.
  • MIG_SIZE: Es la cantidad de VMs en el 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
  • ZONE: Es la zona en la que deseas que se aprovisione tu MIG.
  • REGION: Es la región en la que deseas que se aprovisione tu MIG.

Crea VMs con nombres personalizados en un MIG

Puedes crear VMs en un MIG si especificas nombres personalizados para cada VM. Esto es útil para la depuración y para garantizar que las instancias se creen en un orden específico.

gcloud

Crea una VM con un nombre personalizado usando el create-instance comando y especifica la --instance marca. Para crear varias VMs, repite el comando para cada VM. De lo contrario, usa el método de la API de REST para especificar varias VMs en una sola solicitud.

  • Para un MIG zonal, usa el siguiente comando:

    gcloud compute instance-groups managed create-instance MIG_NAME \
        --zone=ZONE \
        --instance=INSTANCE_NAME
    
  • Para un MIG regional, usa el siguiente comando:

    gcloud compute instance-groups managed create-instance MIG_NAME \
        --region=REGION \
        --instance=INSTANCE_NAME
    

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

  • MIG_NAME: Es el nombre de tu MIG.
  • ZONE: Es la zona del MIG.
  • REGION: Es la región del MIG.
  • INSTANCE_NAME: Es el nombre de la VM que se agregará al MIG especificado.

REST

Crea VMs con nombres personalizados usando uno de los siguientes métodos de la API de REST:

  • Para un MIG zonal, usa el instanceGroupManagers.createInstances.

     POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME/createInstances
     {
       "instances": [
         {
           "name": "INSTANCE_NAME_1"
         },
         {
           "name": "INSTANCE_NAME_2"
         },
         ...
       ]
     }
     

  • Para un MIG regional, usa el regionInstanceGroupManagers.createInstances.

     POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/MIG_NAME/createInstances
     {
       "instances": [
         {
           "name": "INSTANCE_NAME_1"
         },
         {
           "name": "INSTANCE_NAME_2"
         },
         ...
       ]
     }
     

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

  • PROJECT_ID: Es el ID del proyecto en el que existe el MIG.
  • ZONE: Es la zona del MIG.
  • REGION: Es la región del MIG.
  • INSTANCE_NAME_1,2,..: Son los nombres de las VMs que se agregarán al MIG especificado.

¿Qué sigue?