Crea una instancia de A4X Max optimizada para IA

En este documento, se describen los pasos para crear instancias independientes de Compute Engine que usan tipos de máquinas optimizados para aceleradores A4X Max. Para obtener información sobre las opciones de creación de instancias de procesamiento y clústeres, consulta la página Descripción general de las opciones de implementación.

Tipo de instancia A4X Max

Una instancia de Compute Engine, o instancia de procesamiento, es un recurso de procesamiento alojado en la infraestructura de Google que puede ser una máquina virtual (VM) o una instancia de hardware físico. Las instancias A4X Max están disponibles como instancias de Bare Metal, que se diferencian de las instancias de VM en que proporcionan acceso directo y no virtualizado al hardware físico subyacente. Para obtener más información sobre el tipo de máquina A4X Max, consulta la serie A4X Max en la documentación de Compute Engine.

Limitaciones

Cuando creas una instancia independiente de A4X Max, se aplican las siguientes limitaciones:

Antes de comenzar

Antes de crear instancias de A4X Max, si aún no lo hiciste, completa los siguientes pasos:

  1. Elige una opción de consumo: La opción de consumo que elijas determinará cómo obtendrás y usarás los recursos de GPU.

    Para obtener más información, consulta Elige una opción de consumo.

  2. Obtén capacidad: El proceso para obtener capacidad difiere para cada opción de consumo.

    Para obtener información sobre el proceso para obtener capacidad para la opción de consumo que elegiste, consulta la Descripción general de la capacidad.

Roles obligatorios

Para obtener los permisos que necesitas para crear instancias de Compute, pídele a tu administrador que te otorgue el rol de IAM Administrador de instancias de Compute (v1) (roles/compute.instanceAdmin.v1) en el proyecto. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene los permisos necesarios para crear instancias de procesamiento. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:

Permisos necesarios

Se requieren los siguientes permisos para crear instancias de procesamiento:

  • compute.instances.create en el proyecto
  • Si deseas usar una imagen personalizada para crear la VM, sigue estos pasos: compute.images.useReadOnly en la imagen
  • Para usar una instantánea a fin de crear la VM, haz lo siguiente: compute.snapshots.useReadOnly en la instantánea
  • Si quieres usar una plantilla de instancias para crear la VM, sigue estos pasos: compute.instanceTemplates.useReadOnly en la plantilla de instancias
  • A fin de especificar una subred para tu VM: compute.subnetworks.use en el proyecto o en la subred elegida
  • Si deseas especificar una dirección IP estática para la VM: compute.addresses.use en el proyecto
  • Para asignar una dirección IP externa a la VM cuando se usa una red de VPC, compute.subnetworks.useExternalIp en el proyecto o en la subred elegida.
  • Para asignar una red heredada a la VM, ejecuta compute.networks.use en el proyecto.
  • Para asignar una dirección IP externa a la VM cuando se usa una red heredada, ejecuta compute.networks.useExternalIp en el proyecto
  • Para configurar los metadatos de la instancia de VM para la VM, compute.instances.setMetadata en el proyecto.
  • Para configurar etiquetas en la VM, haz lo siguiente: compute.instances.setTags en la VM
  • Para configurar etiquetas en la VM, haz lo siguiente: compute.instances.setLabels en la VM
  • A fin de configurar una cuenta de servicio para que la VM use: compute.instances.setServiceAccount en la VM
  • Crear un disco nuevo para la VM: compute.disks.create en el proyecto
  • Para conectar un disco existente en modo de solo lectura o de lectura y escritura, usa compute.disks.use en el disco.
  • Para conectar un disco existente en modo de solo lectura, haz lo siguiente: compute.disks.useReadOnly en el disco

También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.

Conceptos básicos del A4X Max

Un clúster de A4X Max se organiza en una jerarquía de bloques y subbloques para facilitar el rendimiento de la red a gran escala y sin bloqueos. Comprender esta topología es clave a la hora de reservar capacidad y, también, de implementar cargas de trabajo.

Instancia A4X Max
Una instancia de A4X Max es un solo tipo de máquina A4X Max que tiene 4 GPUs conectadas.
En subbloque
Un subbloque es la unidad fundamental de la capacidad máxima de A4X. En el caso de A4X Max, un subbloque consta de 18 instancias de A4X Max (72 GPUs). Estas instancias forman un dominio de NVLink y se conectan a través de un sistema de NVLink de varios nodos. Para crear un sub-bloque A4X Max, aplica una política de posición de compactación que especifique una topología 1x72.
Bloquear
Un bloque A4X Max se compone de 25 subbloques (dominios de NVLink), lo que suma hasta 450 instancias de A4X Max (1,800 GPUs). Los subbloques están alineados con los rieles para lograr un ajuste de escala eficiente. Cada subbloque requiere una política de posición compacta. Por lo tanto, para un solo bloque de A4X Max, puedes crear 25 políticas de posición compacta.

En la siguiente tabla, se muestran las opciones de topología compatibles para las instancias de A4X Max:

Topología (gpuTopology) Cantidad de GPU Cantidad de instancias
1x72 72 18

Descripción general

La creación de una instancia con el tipo de máquina A4X Max incluye los siguientes pasos:

  1. Crea redes de VPC
  2. Crea una política de posición de compactación
  3. Crea una instancia

Crea redes de VPC

Para configurar la red para los tipos de máquinas A4X Max, crea dos redes de VPC para las siguientes interfaces de red:

  • 1 red de VPC normal con dos subredes para las interfaces de red (NIC) de IDPF Se usan para la comunicación de host a host.
  • 1 red de VPC con el perfil de red RoCE para las NIC CX-8 cuando se crean varios subbloques A4X Max La red de VPC de RoCE usa una sola subred llamada default-subnet-1-RDMA_NAME_PREFIX-net que se proporciona automáticamente, y todas las ocho NIC CX-8 usan esta subred. Estas NIC usan RDMA sobre Ethernet convergente (RoCE), lo que proporciona la comunicación de alto ancho de banda y baja latencia que es esencial para escalar a varios subbloques A4X Max. En el caso de un solo subbloque A4X Max, puedes omitir esta red de VPC porque, dentro de un solo subbloque, la comunicación directa de GPU a GPU se controla con NVLink de varios nodos.

Para obtener más información sobre la disposición de las NIC, consulta Revisa el ancho de banda de la red y la disposición de las NIC.

Crea las redes de forma manual siguiendo las guías de instrucciones o automáticamente con la secuencia de comandos proporcionada.

Guías de instrucciones

Para crear las redes, puedes usar las siguientes instrucciones:

Para estas redes de VPC, te recomendamos que establezcas la unidad de transmisión máxima (MTU) en un valor mayor. Para los tipos de máquinas A4X Max, la MTU recomendada es de 8896 bytes. Para revisar la configuración de MTU recomendada para otros tipos de máquinas con GPU, consulta Configuración de MTU para tipos de máquinas con GPU.

Secuencia de comandos

Para crear las redes, sigue estos pasos.

Para estas redes de VPC, te recomendamos que establezcas la unidad de transmisión máxima (MTU) en un valor mayor. Para los tipos de máquinas A4X Max, la MTU recomendada es de 8896 bytes. Para revisar la configuración de MTU recomendada para otros tipos de máquinas con GPU, consulta Configuración de MTU para tipos de máquinas con GPU.

  1. Usa la siguiente secuencia de comandos para crear redes de VPC regulares para las NIC del IDPF.

      
        #!/bin/bash
    
        # Create regular VPC network for the IDPF NICs
        gcloud compute networks create IDPF_NETWORK_PREFIX-net \
          --subnet-mode=custom \
          --mtu=8896 \
          --enable-ula-internal-ipv6
    
        # Create subnets for the IDPF NICs
        for N in $(seq 0 1); do
          gcloud compute networks subnets create IDPF_NETWORK_PREFIX-$N \
            --network=IDPF_NETWORK_PREFIX-net \
            --region=REGION \
            --stack-type=IPV6_ONLY \
            --ipv6-access-type=INTERNAL
        done
    
        gcloud compute firewall-rules create IDPF_NETWORK_PREFIX-internal \
          --network=IDPF_NETWORK_PREFIX-net \
          --action=ALLOW \
          --rules=tcp:0-65535,udp:0-65535,58 \
          --source-ranges=IP_RANGE
    
    
      
  2. Si necesitas varios subbloques A4X Max, usa la siguiente secuencia de comandos para crear la red de VPC y las subredes de RoCE para las cuatro NIC CX-8 en cada instancia de A4X Max.

      
        #!/bin/bash
    
        # List and make sure network profiles exist in the machine type's zone
        gcloud compute network-profiles list --filter "location.name=ZONE"
    
        # Create network for RDMA NICs
        gcloud compute networks create RDMA_NAME_PREFIX-net \
          --network-profile=ZONE-vpc-roce-metal \
          --subnet-mode custom \
          --mtu=8896
    
        # For RoCE VPC networks for bare metal instances, a single subnet named
        # default-subnet-1-RDMA_NAME_PREFIX-net is automatically provided.
        # For more details, see https://cloud.google.com/vpc/docs/rdma-network-profiles.
    
      

    Reemplaza lo siguiente:

    • IDPF_NETWORK_PREFIX: Es el prefijo de nombre personalizado que se usará para las subredes y las redes de VPC normales de las NIC de IDPF.
    • RDMA_NAME_PREFIX: Es el prefijo de nombre personalizado que se usará para la red de VPC y las subredes de RoCE para las NIC CX-8.
    • ZONE: Especifica una zona en la que esté disponible el tipo de máquina que deseas usar, como us-central1-a. Para obtener información sobre las regiones, consulta Disponibilidad de GPU por regiones y zonas.
    • REGION: Es la región en la que deseas crear las subredes. Esta región debe corresponder a la zona especificada. Por ejemplo, si tu zona es us-central1-a, tu región es us-central1.
    • IP_RANGE: Es el rango de IP que se usará para las reglas de firewall de SSH.
  3. Opcional: Para verificar que los recursos de la red de VPC se hayan creado correctamente, consulta la configuración de la red en la consola de Google Cloud :
    1. En la consola de Google Cloud , ve a la página Redes de VPC.

      Ir a las redes de VPC

    2. Busca en la lista las redes que creaste en el paso anterior.
    3. Para ver las subredes, las reglas de firewall y otros parámetros de configuración de la red, haz clic en el nombre de la red.

Crea una política de posición de compactación

Para crear una política de posición compacta, selecciona una de las siguientes opciones:

gcloud

Para crear una política de posición de compactación, usa el comando gcloud beta compute resource-policies create group-placement:

gcloud beta compute resource-policies create group-placement POLICY_NAME \
    --collocation=collocated \
    --gpu-topology=1x72 \
    --region=REGION

Reemplaza lo siguiente:

  • POLICY_NAME: el nombre de la política de posición compacta.
  • REGION: la región en la que deseas crear la política de posición compacta. Especifica una región en la que esté disponible el tipo de máquina que deseas usar. Para obtener información sobre las regiones, consulta Disponibilidad de GPU por regiones y zonas.

REST

Para crear una política de posición compacta, realiza una solicitud POST al método resourcePolicies.insert de la versión beta.

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/resourcePolicies
  {
    "name": "POLICY_NAME",
    "groupPlacementPolicy": {
      "collocation": "COLLOCATED",
      "gpuTopology": "1x72"
    }
  }

Reemplaza lo siguiente:

  • PROJECT_ID: el ID de tu proyecto
  • POLICY_NAME: el nombre de la política de posición compacta.
  • REGION: la región en la que deseas crear la política de posición compacta. Especifica una región en la que esté disponible el tipo de máquina que deseas usar. Para obtener información sobre las regiones, consulta Disponibilidad de GPU por regiones y zonas.

Crea una instancia de A4X Max

Para obtener una topología de GPU de 1x72, crea 18 instancias de A4X Max. Cuando crees las instancias, aplica la política de posición de compactación que especifica el campo gpuTopology. Aplicar la política garantiza que Compute Engine cree las 18 instancias de A4X Max en un subbloque para usar un dominio de NVLink. Si un subbloque no tiene capacidad para una instancia de A4X Max, falla la solicitud para crear la instancia.

Para crear una instancia de A4X Max, selecciona una de las siguientes opciones.

Los siguientes comandos también establecen el permiso de acceso para tus instancias. Para simplificar la administración de permisos, Google recomienda que configures el permiso de acceso en una instancia como acceso cloud-platform y, luego, uses roles de IAM para definir a qué servicios puede acceder la instancia. Para obtener más información, consulta Prácticas recomendadas para los permisos.

gcloud

Para crear la instancia de A4X Max, usa el comando gcloud compute instances create.

gcloud compute instances create INSTANCE_NAME  \
    --machine-type=a4x-maxgpu-4g-metal \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT \
    --zone=ZONE \
    --boot-disk-type=hyperdisk-balanced \
    --boot-disk-size=DISK_SIZE \
    --scopes=cloud-platform \
    --network-interface=nic-type=IDPF,network=IDPF_NETWORK_PREFIX-net,stack-type=IPV6_ONLY,subnet=IDPF_NETWORK_PREFIX-sub-0 \
    --network-interface=nic-type=IDPF,network=IDPF_NETWORK_PREFIX-net,stack-type=IPV6_ONLY,subnet=IDPF_NETWORK_PREFIX-sub-1,no-address \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --reservation-affinity=specific \
    --reservation=RESERVATION \
    --provisioning-model=RESERVATION_BOUND \
    --instance-termination-action=TERMINATION_ACTION \
    --maintenance-policy=TERMINATE \
    --restart-on-failure \
    --resource-policies=POLICY_NAME

Reemplaza lo siguiente:

  • INSTANCE_NAME: Es el nombre de la instancia de A4X Max.
  • IMAGE_FAMILY: Es la familia de imágenes de la imagen de SO que deseas usar. Para obtener una lista de los sistemas operativos compatibles, consulta Detalles de los sistemas operativos.
  • IMAGE_PROJECT: Es el ID del proyecto de la imagen de SO.
  • ZONE: Es la zona en la que está disponible el tipo de máquina que deseas usar. Debes usar una zona en la misma región que la política de posición compacta. Para obtener información sobre las regiones, consulta Disponibilidad de GPU por regiones y zonas.
  • DISK_SIZE: Es el tamaño del disco de arranque en GB.
  • IDPF_NETWORK_PREFIX: Es el prefijo del nombre que especificaste cuando creaste las redes de VPC y las subredes que usan NIC de IDPF.
  • RDMA_NAME_PREFIX: Es el prefijo del nombre que especificaste cuando creaste las redes de VPC y las subredes que usan NIC de RDMA.
  • RESERVATION: Es el nombre de la reserva, un bloque o un subbloque dentro de una reserva. Para obtener el nombre de la reserva o los bloques disponibles, consulta Cómo ver la capacidad reservada. Según tus requisitos de ubicación de la instancia, elige una de las siguientes opciones:
    • Para crear instancias de A4X Max en cualquier bloque individual, haz lo siguiente:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME
          
    • Para crear instancias de A4X Max en un bloque específico, sigue estos pasos:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME
          
    • Para crear instancias de A4X Max en un subbloque específico, sigue estos pasos:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME/reservationSubBlocks/RESERVATION_SUBBLOCK_NAME
          
  • TERMINATION_ACTION: Indica si Compute Engine detiene (STOP) o borra (DELETE) la instancia de A4X Max al final del período de reserva.

  • POLICY_NAME: el nombre de la política de posición compacta.

REST

Para crear la instancia de A4X Max, realiza una solicitud POST al método instances.insert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  "machineType": "projects/PROJECT_ID/zones/ZONE/machineTypes/a4x-maxgpu-4g-metal",
  "name": "INSTANCE_NAME",
  "disks":[
    {
      "boot":true,
      "initializeParams":{
        "diskSizeGb": "DISK_SIZE",
        "diskType": "hyperdisk-balanced",
        "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
      },
      "mode": "READ_WRITE",
      "type": "PERSISTENT"
    }
  ],
  "serviceAccounts": [
    {
      "email": "default",
      "scopes": [
        "https://www.googleapis.com/auth/cloud-platform"
      ]
    }
  ],
  "networkInterfaces": [
    {
      "accessConfigs": [
        {
          "name": "external-nat",
          "type": "ONE_TO_ONE_NAT"
        }
      ],
      "network": "projects/NETWORK_PROJECT_ID/global/networks/IDPF_NETWORK_PREFIX-net",
      "nicType": "IDPF",
      "stackType": "IPV6_ONLY",
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/IDPF_NETWORK_PREFIX-sub-0"
    },
    {
      "network": "projects/NETWORK_PROJECT_ID/global/networks/IDPF_NETWORK_PREFIX-net",
      "nicType": "IDPF",
      "stackType": "IPV6_ONLY",
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/IDPF_NETWORK_PREFIX-sub-1"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    }
  ],
  "reservationAffinity":{
    "consumeReservationType": "SPECIFIC_RESERVATION",
    "key": "compute.googleapis.com/reservation-name",
    "values":[
      "RESERVATION"
    ]
  },
  "scheduling":{
    "provisioningModel": "RESERVATION_BOUND",
    "instanceTerminationAction": "TERMINATION_ACTION",
    "onHostMaintenance": "TERMINATE",
    "automaticRestart": true
  },
  "resourcePolicies": [
    "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
  ]
}

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto en el que deseas crear la instancia de A4X Max.
  • ZONE: Es la zona en la que está disponible el tipo de máquina que deseas usar. Debes usar una zona en la misma región que la política de posición compacta. Para obtener información sobre las regiones, consulta Disponibilidad de GPU por regiones y zonas.
  • INSTANCE_NAME: Es el nombre de la instancia de A4X Max.
  • DISK_SIZE: Es el tamaño del disco de arranque en GB.
  • IMAGE_PROJECT: Es el ID del proyecto de la imagen de SO.
  • IMAGE_FAMILY: Es la familia de imágenes de la imagen de SO que deseas usar. Para obtener una lista de los sistemas operativos compatibles, consulta Detalles de los sistemas operativos.
  • NETWORK_PROJECT_ID: Es el ID del proyecto de la red.
  • IDPF_NETWORK_PREFIX: Es el prefijo del nombre que especificaste cuando creaste las redes de VPC y las subredes que usan NIC de IDPF.
  • REGION: Es la región de la subred.
  • RDMA_NAME_PREFIX: Es el prefijo del nombre que especificaste cuando creaste las redes de VPC y las subredes que usan NIC de RDMA.
  • RESERVATION: Es el nombre de la reserva, un bloque o un subbloque dentro de una reserva. Para obtener el nombre de la reserva o los bloques disponibles, consulta Cómo ver la capacidad reservada. Según tus requisitos de ubicación de la instancia, elige una de las siguientes opciones:
    • Para crear instancias de A4X Max en cualquier bloque individual, haz lo siguiente:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME
          
    • Para crear instancias de A4X Max en un bloque específico, sigue estos pasos:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME
          
    • Para crear instancias de A4X Max en un subbloque específico, sigue estos pasos:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME/reservationSubBlocks/RESERVATION_SUBBLOCK_NAME
          
  • TERMINATION_ACTION: Indica si Compute Engine detiene (STOP) o borra (DELETE) la instancia de A4X Max al final del período de reserva.

  • PROJECT_ID: Es el ID del proyecto de la política de posición compacta.
  • REGION: Es la región de la política de posición compacta.
  • POLICY_NAME: el nombre de la política de posición compacta.

¿Qué sigue?