Crea un clúster de GKE optimizado para IA con Cluster Toolkit

En este documento, se muestra cómo crear un clúster de Google Kubernetes Engine (GKE) optimizado para IA que use instancias de Compute Engine A4X, A4, A3 Ultra, A3 Mega y A3 High (8 GPUs) para admitir tus cargas de trabajo de IA y AA.

Las series de máquinas A4X, A4, A3 Ultra, A3 Mega y A3 High (8 GPUs) están diseñadas para permitirte ejecutar clústeres de IA/AA a gran escala con funciones como la ubicación de cargas de trabajo específicas, controles avanzados de mantenimiento de clústeres y programación basada en la topología. Para obtener más información, consulta Descripción general de la administración de clústeres.

GKE proporciona una sola plataforma para ejecutar un conjunto diverso de cargas de trabajo según las necesidades de tu organización. Estas cargas de trabajo incluyen entrenamiento previo distribuido de alto rendimiento, ajuste de modelos, inferencia de modelos, entrega de aplicaciones y servicios de asistencia. GKE reduce la carga operativa de administrar varias plataformas.

Elige cómo crear un clúster de GKE optimizado para IA

Las siguientes opciones para la creación de clústeres proporcionan diferentes grados de facilidad y flexibilidad en la configuración del clúster y la programación de cargas de trabajo:

Antes de comenzar

Antes de comenzar, asegúrate de haber realizado las siguientes tareas:

  • Habilita la API de Google Kubernetes Engine.
  • Habilitar la API de Google Kubernetes Engine
  • Si deseas usar Google Cloud CLI para esta tarea, instala y, luego, inicializa gcloud CLI. Si ya instalaste gcloud CLI, ejecuta el comando gcloud components update para obtener la versión más reciente. Es posible que las versiones anteriores de gcloud CLI no admitan la ejecución de los comandos de este documento.
  • Verifica que tengas los permisos necesarios para crear y administrar el clúster de GKE y las cuentas de servicio asociadas:
    • Administrador de Kubernetes Engine (roles/container.admin)
    • Administrador de Compute (roles/compute.admin)
    • Administrador de almacenamiento (roles/storage.admin)
    • Administrador del proyecto de IAM (roles/resourcemanager.projectIamAdmin)
    • Administrador de cuenta de servicio (roles/iam.serviceAccountAdmin)
    • Usuario de la cuenta de servicio (roles/iam.serviceAccountUser)
    • Consumidor de Service Usage (roles/serviceusage.serviceUsageConsumer)
    • Administrador de roles (roles/iam.roleAdmin)
    • Administrador de versiones de secretos de Secret Manager (roles/secretmanager.secretVersionManager)
    • Para consumir una reserva para un único proyecto: Administrador de instancias de Compute (v1) (roles/compute.instanceAdmin.v1) en el proyecto
    • Para consumir una reserva compartida: Administrador de instancias de Compute (v1) (roles/compute.instanceAdmin.v1) tanto en el proyecto propietario como en cualquier proyecto consumidor en el que quieras consumir la reserva

Elige una opción de consumo y obtén capacidad

Para obtener capacidad, completa los siguientes pasos:

  1. Elige una opción de consumo: Elige según cómo quieras obtener y usar los recursos de GPU. Para obtener más información, consulta Elige una opción de consumo.

    Para GKE, ten en cuenta la siguiente información adicional cuando elijas una opción de consumo:

  2. Obtén capacidad: El proceso para obtener capacidad varía según cada opción de consumo. Para obtener información sobre el proceso de la opción de consumo que elegiste, consulta Descripción general de la capacidad.

Requisitos

Los siguientes requisitos se aplican a un clúster de GKE optimizado para IA:

  • Para A4X Max, debes usar una de las siguientes versiones:

    • Para la versión 1.35 o posterior, usa la versión 1.35.0-gke.2745000 o posterior de GKE.
    • Para la versión 1.34, usa la versión 1.34.3-gke.1318000 o posterior de GKE.

    Estas versiones ayudan a garantizar que A4X Max use lo siguiente:

    • R580.95.05, la versión mínima del controlador de GPU para A4X Max, que está habilitada de forma predeterminada.
    • Administración de la memoria basada en controladores coherentes (CDMM), que está habilitada de forma predeterminada. NVIDIA recomienda que los clústeres de Kubernetes habiliten este modo para resolver el exceso de informes de memoria. CDMM permite que la memoria de la GPU se administre a través del controlador en lugar del sistema operativo (SO). Este enfoque te ayuda a evitar que el SO ponga en línea la memoria de la GPU y expone la memoria de la GPU como un nodo de acceso no uniforme a memoria (NUMA) para el SO. Las GPU de instancias múltiples no son compatibles cuando la CDMM está habilitada. Para obtener más información sobre CDMM, consulta Asistencia de hardware y software.
    • GPUDirect RDMA y MNNVL, que se recomiendan para habilitar los grupos de nodos de A4X Max para usar las capacidades de red de A4X Max.
  • Para A4X, debes usar una de las siguientes versiones:

    • Para la versión 1.33 o posterior, usa la versión 1.33.4-gke.1036000 o posterior de GKE.
    • Para la versión 1.32, usa la versión 1.32.8-gke.1108000 o posterior de GKE.

    Estas versiones ayudan a garantizar que A4X use lo siguiente:

    • R580, la versión mínima del controlador de GPU para A4X, que está habilitada de forma predeterminada.
    • Administración de la memoria basada en controladores coherentes (CDMM), que está habilitada de forma predeterminada. NVIDIA recomienda que los clústeres de Kubernetes habiliten este modo para resolver el exceso de informes de memoria. CDMM permite que la memoria de la GPU se administre a través del controlador en lugar del sistema operativo (SO). Este enfoque te ayuda a evitar que el SO ponga en línea la memoria de la GPU y expone la memoria de la GPU como un nodo de acceso no uniforme a memoria (NUMA) para el SO. Las GPU de instancias múltiples no son compatibles cuando la CDMM está habilitada. Para obtener más información sobre CDMM, consulta Asistencia de hardware y software.
    • GPUDirect RDMA y MNNVL, que se recomiendan para habilitar los grupos de nodos de A4X para usar las capacidades de red de A4X.
  • Asegúrate de usar la versión mínima del controlador de GPU, según el tipo de máquina:

    • A4X Max: Las GPU GB300 en las instancias de Bare Metal A4X Max requieren una versión mínima del controlador de GPU R580.95.05. Consulta los requisitos de versión mencionados anteriormente.
    • A4X: Las GPU GB200 en las instancias de A4X requieren, como mínimo, la versión R580 del controlador de GPU. Consulta los requisitos de versión mencionados anteriormente.
    • A4: Las GPU B200 en instancias A4 requieren, como mínimo, la versión del controlador de GPU R570. De forma predeterminada, GKE instala automáticamente esta versión del controlador en todos los nodos A4 que ejecutan la versión mínima requerida para A4, 1.32.1-gke.1729000 o posterior.
    • A3 Ultra: Las GPU H200 en las instancias de A3 Ultra requieren una versión mínima del controlador de GPU R550, que está disponible en GKE 1.31 como la versión del controlador latest. Para A3 Ultra, debes configurar gpu-driver-version=latest con GKE 1.31. Para la versión 1.31.5-gke.1169000 o posterior de GKE, GKE instala automáticamente las versiones del controlador de GPU R550 en los nodos A3 Ultra de forma predeterminada.
    • A3 Mega y A3 High: Las GPUs H100 en las instancias A3 High y A3 Mega son compatibles con la versión predeterminada del controlador de GPU en todas las versiones de GKE compatibles. También puedes configurar gpu-driver-version=latest para acceder a los controladores de producción más recientes disponibles en las versiones de GKE compatibles.
  • En el caso de los grupos de nodos A3 Ultra, debes establecer el tipo de disco en hyperdisk-balanced.

  • Para usar GPUDirect RDMA, usa las siguientes versiones mínimas según el tipo de máquina:

    • A4X Max: Consulta los requisitos de versión mencionados anteriormente.
    • A4X: Consulta los requisitos de versión mencionados anteriormente.
    • A4: Usa la versión 1.32.2-gke.1475000 o una posterior.
    • A3 Ultra: Usa la versión 1.31.4-gke.1183000 o una posterior.
  • Para usar GPUDirect-TCPXO (para A3 Mega) y GPUDirect-TCPX (para A3 High), usa las siguientes versiones de GKE:

    • A3 High: Usa cualquier versión de GKE disponible anterior a la 1.34.
    • A3 Mega: Usa cualquier versión de GKE disponible.
  • Para usar GPUDirect RDMA, los nodos de GKE deben usar una imagen de nodo de Container-Optimized OS. Las imágenes de nodos de Ubuntu y Windows no son compatibles.

  • Debes usar el modelo de aprovisionamiento vinculado a la reserva para crear clústeres con A4X Max y A4X. No se admiten otros modelos de aprovisionamiento.

Crea un clúster con Cluster Toolkit

Usa las siguientes instrucciones para crear un clúster con Cluster Toolkit. En esta sección, se te guiará por el proceso de creación del clúster, lo que garantizará que tu proyecto siga las prácticas recomendadas y cumpla con los requisitos de un clúster de GKE optimizado para IA. En esta sección, también se muestra cómo usar Terraform para aprovisionar y administrar la infraestructura de tu implementación.

A4X Max

  1. Inicia Cloud Shell. Aunque es posible usar un entorno diferente, te recomendamos que uses Cloud Shell, ya que las dependencias ya están preinstaladas para Cluster Toolkit. Si no quieres usar Cloud Shell, sigue las instrucciones para instalar dependencias y preparar un entorno diferente.
  2. Instala Cluster Toolkit.

  3. Crea un bucket de Cloud Storage con el control de versiones habilitado para almacenar el estado de tu implementación de Terraform:

    gcloud storage buckets create gs://BUCKET_NAME \
        --default-storage-class=STANDARD \
        --project=PROJECT_ID \
        --location=COMPUTE_REGION_TERRAFORM_STATE \
        --uniform-bucket-level-access
    gcloud storage buckets update gs://BUCKET_NAME --versioning

    Reemplaza las siguientes variables:

    • BUCKET_NAME: Es el nombre del bucket de Cloud Storage nuevo, que debe cumplir con los requisitos de nombres de buckets.
    • PROJECT_ID: Es el ID del proyecto de Google Cloud .
    • COMPUTE_REGION_TERRAFORM_STATE: Es la región de procesamiento en la que deseas almacenar el estado de la implementación de Terraform.
  4. En el plano examples/gke-a4x-max-bm/gke-a4x-max-bm-deployment.yaml del repositorio de GitHub, completa los siguientes parámetros de configuración en las secciones terraform_backend_defaults y vars para que coincidan con los valores específicos de tu implementación:

    • BUCKET: Es el nombre del bucket de Cloud Storage que creaste en el paso anterior.
    • PROJECT_ID: Es el ID del proyecto de Google Cloud .
    • DEPLOYMENT_NAME: Es un nombre único para la implementación, que debe tener entre 6 y 30 caracteres de longitud. Si el nombre de la implementación no es único dentro de un proyecto, la creación del clúster fallará. El valor predeterminado es gke-a4x-max-bm.
    • REGION: Es la región de procesamiento del clúster.
    • ZONE: Es la zona de procesamiento del grupo de nodos de máquinas A4X Max. Esta zona debe coincidir con la zona en la que las máquinas están disponibles en tu reserva.
    • STATIC_NODE_COUNT: Es la cantidad de nodos A4X Max en el grupo de nodos del clúster, que debe ser de 18 nodos o menos. Te recomendamos que uses 18 nodos para obtener la topología de GPU de 1x72 en un subbloque con un dominio de NVLink.
    • AUTHORIZED_CIDR: Es el rango de direcciones IP que deseas permitir que se conecte al clúster. Este bloque CIDR debe incluir la dirección IP de la máquina que llama a Terraform. Para obtener más información, consulta Cómo funcionan las redes autorizadas.
    • En el campo reservation, usa una de las siguientes opciones, según si deseas orientar a bloques específicos en una reserva cuando aprovisionas el grupo de nodos:

    • Para colocar el grupo de nodos en cualquier lugar de la reserva, proporciona el nombre de tu reserva (RESERVATION_NAME).

    • Para segmentar un bloque específico dentro de tu reserva, usa los nombres de la reserva y del bloque con el siguiente formato:

      RESERVATION_NAME/reservationBlocks/BLOCK_NAME
      

      Si no sabes qué bloques están disponibles en tu reserva, consulta Visualiza la topología de una reserva.

    • RESERVATION_PROJECT_ID: el ID del proyecto de Google Cloud que tiene la reserva. Es posible que tu reserva exista en un proyecto diferente de PROJECT_ID.

    • NUM_NODE_POOLS: Es la cantidad de grupos de nodos que se habilitarán en tu clúster. Si deseas un clúster de más de 18 nodos, puedes especificar varios grupos de nodos. El valor predeterminado es 1.

    Para modificar la configuración avanzada, edita el archivo del plano de examples/gke-a4x-max-bm/gke-a4x-max-bm.yaml.

  5. Genera credenciales predeterminadas de la aplicación (ADC) para proporcionar acceso a Terraform. Si usas Cloud Shell, usa el comando gcloud auth application-default login:

    gcloud auth application-default login
    
  6. Usa el comando gcluster deploy para implementar el plano y aprovisionar la infraestructura de GKE con los tipos de máquinas A4X Max:

    cd ~/cluster-toolkit
    ./gcluster deploy -d \
        examples/gke-a4x-max-bm/gke-a4x-max-bm-deployment.yaml \
        examples/gke-a4x-max-bm/gke-a4x-max-bm.yaml
    
  7. Cuando se te solicite, selecciona (A)pply para implementar el plano.

    • El plano crea redes de VPC, una red de VPC de RDMA de GPU, cuentas de servicio, un clúster y un grupo de nodos.
    • Para admitir la plantilla de trabajo de fio-bench-job-template en el plano, se crean buckets deGoogle Cloud , almacenamiento de red y recursos de volumen persistente.

A4X

  1. Inicia Cloud Shell. Aunque es posible usar un entorno diferente, te recomendamos que uses Cloud Shell, ya que las dependencias ya están preinstaladas para Cluster Toolkit. Si no quieres usar Cloud Shell, sigue las instrucciones para instalar dependencias y preparar un entorno diferente.
  2. Instala Cluster Toolkit.

  3. Crea un bucket de Cloud Storage con el control de versiones habilitado para almacenar el estado de tu implementación de Terraform:

    gcloud storage buckets create gs://BUCKET_NAME \
        --default-storage-class=STANDARD \
        --project=PROJECT_ID \
        --location=COMPUTE_REGION_TERRAFORM_STATE \
        --uniform-bucket-level-access
    gcloud storage buckets update gs://BUCKET_NAME --versioning

    Reemplaza las siguientes variables:

    • BUCKET_NAME: Es el nombre del bucket de Cloud Storage nuevo, que debe cumplir con los requisitos de nombres de buckets.
    • PROJECT_ID: Es el ID del proyecto de Google Cloud .
    • COMPUTE_REGION_TERRAFORM_STATE: Es la región de procesamiento en la que deseas almacenar el estado de la implementación de Terraform.
  4. En el plano examples/gke-a4x/gke-a4x-deployment.yaml del repositorio de GitHub, completa los siguientes parámetros de configuración en las secciones terraform_backend_defaults y vars para que coincidan con los valores específicos de tu implementación:

    • BUCKET: Es el nombre del bucket de Cloud Storage que creaste en el paso anterior.
    • PROJECT_ID: Es el ID del proyecto de Google Cloud .
    • DEPLOYMENT_NAME: Es un nombre único para la implementación, que debe tener entre 6 y 30 caracteres de longitud. Si el nombre de la implementación no es único dentro de un proyecto, la creación del clúster fallará. El valor predeterminado es gke-a4x.
    • REGION: Es la región de procesamiento del clúster.
    • ZONE: Es la zona de procesamiento del grupo de nodos de las máquinas A4X. Esta zona debe coincidir con la zona en la que las máquinas están disponibles en tu reserva.
    • STATIC_NODE_COUNT: Es la cantidad de nodos A4X en el grupo de nodos del clúster, que debe ser de 18 nodos o menos. Te recomendamos que uses 18 nodos para obtener la topología de GPU de 1x72 en un subbloque con un dominio de NVLink.
    • AUTHORIZED_CIDR: Es el rango de direcciones IP que deseas permitir que se conecte al clúster. Este bloque CIDR debe incluir la dirección IP de la máquina que llama a Terraform. Para obtener más información, consulta Cómo funcionan las redes autorizadas.
    • En el campo reservation, usa una de las siguientes opciones, según si deseas orientar a bloques específicos en una reserva cuando aprovisionas el grupo de nodos:

    • Para colocar el grupo de nodos en cualquier lugar de la reserva, proporciona el nombre de tu reserva (RESERVATION_NAME).

    • Para segmentar un bloque específico dentro de tu reserva, usa los nombres de la reserva y del bloque con el siguiente formato:

      RESERVATION_NAME/reservationBlocks/BLOCK_NAME
      

      Si no sabes qué bloques están disponibles en tu reserva, consulta Visualiza la topología de una reserva.

    • RESERVATION_PROJECT_ID: el ID del proyecto de Google Cloud que tiene la reserva. Es posible que tu reserva exista en un proyecto diferente de PROJECT_ID.

    • NUM_NODE_POOLS: Es la cantidad de grupos de nodos que se habilitarán en tu clúster. Si deseas un clúster de más de 18 nodos, puedes especificar varios grupos de nodos. El valor predeterminado es 1.

    Para modificar la configuración avanzada, edita el archivo del plano de examples/gke-a4x/gke-a4x.yaml.

  5. Genera credenciales predeterminadas de la aplicación (ADC) para proporcionar acceso a Terraform. Si usas Cloud Shell, usa el comando gcloud auth application-default login:

    gcloud auth application-default login
    
  6. Usa el comando gcluster deploy para implementar el plano y aprovisionar la infraestructura de GKE con los tipos de máquinas A4X:

    cd ~/cluster-toolkit
    ./gcluster deploy -d \
        examples/gke-a4x/gke-a4x-deployment.yaml \
        examples/gke-a4x/gke-a4x.yaml
    
  7. Cuando se te solicite, selecciona (A)pply para implementar el plano.

    • El plano crea redes de VPC, una red de VPC de RDMA de GPU, cuentas de servicio, un clúster y un grupo de nodos.
    • Para admitir la plantilla de trabajo de fio-bench-job-template en el plano, se crean buckets deGoogle Cloud , almacenamiento de red y recursos de volumen persistente.

A4

  1. Inicia Cloud Shell. Aunque es posible usar un entorno diferente, te recomendamos que uses Cloud Shell, ya que las dependencias ya están preinstaladas para Cluster Toolkit. Si no quieres usar Cloud Shell, sigue las instrucciones para instalar dependencias y preparar un entorno diferente.
  2. Instala Cluster Toolkit.

  3. Crea un bucket de Cloud Storage con el control de versiones habilitado para almacenar el estado de tu implementación de Terraform:

    gcloud storage buckets create gs://BUCKET_NAME \
        --default-storage-class=STANDARD \
        --project=PROJECT_ID \
        --location=COMPUTE_REGION_TERRAFORM_STATE \
        --uniform-bucket-level-access
    gcloud storage buckets update gs://BUCKET_NAME --versioning

    Reemplaza las siguientes variables:

    • BUCKET_NAME: Es el nombre del bucket de Cloud Storage nuevo, que debe cumplir con los requisitos de nombres de buckets.
    • PROJECT_ID: Es el ID del proyecto de Google Cloud .
    • COMPUTE_REGION_TERRAFORM_STATE: Es la región de procesamiento en la que deseas almacenar el estado de la implementación de Terraform.
  4. Elige una opción de consumo para tu implementación de GKE:

    De forma predeterminada, el archivo de implementación está configurado para consumir reservas específicas. Para usar un modelo de consumo alternativo (como las VMs Spot o el modo de aprovisionamiento de inicio flexible), actualiza el archivo YAML de implementación. Para obtener más información, consulta Opciones de consumo de GKE.

  5. En el plano examples/gke-a4/gke-a4-deployment.yaml del repositorio de GitHub, completa los siguientes parámetros de configuración en las secciones terraform_backend_defaults y vars para que coincidan con los valores específicos de tu implementación:

    • BUCKET: Es el nombre del bucket de Cloud Storage que creaste en el paso anterior.
    • PROJECT_ID: Es el ID del proyecto de Google Cloud .
    • DEPLOYMENT_NAME: Es un nombre único para la implementación, que debe tener entre 6 y 30 caracteres de longitud. Si el nombre de la implementación no es único dentro de un proyecto, la creación del clúster fallará. El valor predeterminado es gke-a4.
    • REGION: Es la región de procesamiento del clúster.
    • ZONE: Es la zona de procesamiento del grupo de nodos de máquinas A4. Esta zona debe coincidir con la zona en la que las máquinas están disponibles en tu reserva.
    • AUTHORIZED_CIDR: Es el rango de direcciones IP que deseas permitir que se conecte al clúster. Este bloque CIDR debe incluir la dirección IP de la máquina que llama a Terraform. Para obtener más información, consulta Cómo funcionan las redes autorizadas.
    • En la sección de reserva específica, establece los siguientes parámetros de configuración:
    • En el bloque reservation_affinity, en la lista specific_reservations, especifica el campo name de la reserva:

      • Para colocar el grupo de nodos en cualquier lugar de la reserva, proporciona el nombre de tu reserva (RESERVATION_NAME).
      • Para segmentar un bloque específico dentro de tu reserva, usa los nombres de la reserva y del bloque con el siguiente formato:
      RESERVATION_NAME/reservationBlocks/BLOCK_NAME
      

      Si no sabes qué bloques están disponibles en tu reserva, consulta Visualiza la topología de una reserva.

    • STATIC_NODE_COUNT: Es la cantidad de nodos A4 en tu clúster.

    Para modificar la configuración avanzada, edita el archivo del plano de examples/gke-a4/gke-a4.yaml.

  6. Genera credenciales predeterminadas de la aplicación (ADC) para proporcionar acceso a Terraform. Si usas Cloud Shell, usa el comando gcloud auth application-default login:

    gcloud auth application-default login
    
  7. Usa el comando gcluster deploy para implementar el plano y aprovisionar la infraestructura de GKE con los tipos de máquinas A4:

    cd ~/cluster-toolkit
    ./gcluster deploy -d \
        examples/gke-a4/gke-a4-deployment.yaml \
        examples/gke-a4/gke-a4.yaml
    
  8. Cuando se te solicite, selecciona (A)pply para implementar el plano.

    • El plano crea redes de VPC, una red de VPC de RDMA de GPU, cuentas de servicio, un clúster y un grupo de nodos.
    • Para admitir la plantilla de trabajo de fio-bench-job-template en el plano, se crean buckets deGoogle Cloud , almacenamiento de red y recursos de volumen persistente.

A3 Ultra

  1. Inicia Cloud Shell. Aunque es posible usar un entorno diferente, te recomendamos que uses Cloud Shell, ya que las dependencias ya están preinstaladas para Cluster Toolkit. Si no quieres usar Cloud Shell, sigue las instrucciones para instalar dependencias y preparar un entorno diferente.
  2. Instala Cluster Toolkit.

  3. Crea un bucket de Cloud Storage con el control de versiones habilitado para almacenar el estado de tu implementación de Terraform:

    gcloud storage buckets create gs://BUCKET_NAME \
        --default-storage-class=STANDARD \
        --project=PROJECT_ID \
        --location=COMPUTE_REGION_TERRAFORM_STATE \
        --uniform-bucket-level-access
    gcloud storage buckets update gs://BUCKET_NAME --versioning

    Reemplaza las siguientes variables:

    • BUCKET_NAME: Es el nombre del bucket de Cloud Storage nuevo, que debe cumplir con los requisitos de nombres de buckets.
    • PROJECT_ID: Es el ID del proyecto de Google Cloud .
    • COMPUTE_REGION_TERRAFORM_STATE: Es la región de procesamiento en la que deseas almacenar el estado de la implementación de Terraform.
  4. Elige una opción de consumo para tu implementación de GKE:

    De forma predeterminada, el archivo de implementación está configurado para consumir reservas específicas. Para usar un modelo de consumo alternativo (como las VMs Spot o el modo de aprovisionamiento de inicio flexible), actualiza el archivo YAML de implementación. Para obtener más información, consulta Opciones de consumo de GKE.

  5. En el plano examples/gke-a3-ultragpu/gke-a3-ultragpu-deployment.yaml del repositorio de GitHub, completa los siguientes parámetros de configuración en las secciones terraform_backend_defaults y vars para que coincidan con los valores específicos de tu implementación:

    • BUCKET: Es el nombre del bucket de Cloud Storage que creaste en el paso anterior.
    • PROJECT_ID: Es el ID del proyecto de Google Cloud .
    • DEPLOYMENT_NAME: Es un nombre único para la implementación, que debe tener entre 6 y 30 caracteres de longitud. Si el nombre de la implementación no es único dentro de un proyecto, la creación del clúster fallará. El valor predeterminado es gke-a3-ultragpu.
    • REGION: Es la región de procesamiento del clúster.
    • ZONE: Es la zona de procesamiento del grupo de nodos de máquinas A3 Ultra. Esta zona debe coincidir con la zona en la que las máquinas están disponibles en tu reserva.
    • AUTHORIZED_CIDR: Es el rango de direcciones IP que deseas permitir que se conecte al clúster. Este bloque CIDR debe incluir la dirección IP de la máquina que llama a Terraform. Para obtener más información, consulta Cómo funcionan las redes autorizadas.
    • En la sección de reserva específica, establece los siguientes parámetros de configuración:
    • En el bloque reservation_affinity, en la lista specific_reservations, especifica el campo name de la reserva:

      • Para colocar el grupo de nodos en cualquier lugar de la reserva, proporciona el nombre de tu reserva (RESERVATION_NAME).
      • Para segmentar un bloque específico dentro de tu reserva, usa los nombres de la reserva y del bloque con el siguiente formato:
      RESERVATION_NAME/reservationBlocks/BLOCK_NAME
      

      Si no sabes qué bloques están disponibles en tu reserva, consulta Visualiza la topología de una reserva.

    • STATIC_NODE_COUNT: Es la cantidad de nodos de A3 Ultra en tu clúster.

    Para modificar la configuración avanzada, edita el archivo del plano de examples/gke-a3-ultragpu/gke-a3-ultragpu.yaml.

  6. Genera credenciales predeterminadas de la aplicación (ADC) para proporcionar acceso a Terraform. Si usas Cloud Shell, usa el comando gcloud auth application-default login:

    gcloud auth application-default login
    
  7. Usa el comando gcluster deploy para implementar el plano y aprovisionar la infraestructura de GKE con tipos de máquinas A3 Ultra:

    cd ~/cluster-toolkit
    ./gcluster deploy -d \
        examples/gke-a3-ultragpu/gke-a3-ultragpu-deployment.yaml \
        examples/gke-a3-ultragpu/gke-a3-ultragpu.yaml
    
  8. Cuando se te solicite, selecciona (A)pply para implementar el plano.

    • El plano crea redes de VPC, una red de VPC de RDMA de GPU, cuentas de servicio, un clúster y un grupo de nodos.
    • Para admitir la plantilla de trabajo de fio-bench-job-template en el plano, se crean buckets deGoogle Cloud , almacenamiento de red y recursos de volumen persistente.

A3 Mega

  1. Inicia Cloud Shell. Aunque es posible usar un entorno diferente, te recomendamos que uses Cloud Shell, ya que las dependencias ya están preinstaladas para Cluster Toolkit. Si no quieres usar Cloud Shell, prepara un entorno diferente siguiendo las instrucciones para instalar dependencias.
  2. Instala Cluster Toolkit.

  3. Crea un bucket de Cloud Storage con el control de versiones habilitado para almacenar el estado de tu implementación de Terraform:

    gcloud storage buckets create gs://BUCKET_NAME \
        --default-storage-class=STANDARD \
        --project=PROJECT_ID \
        --location=COMPUTE_REGION_TERRAFORM_STATE \
        --uniform-bucket-level-access
    gcloud storage buckets update gs://BUCKET_NAME --versioning

    Reemplaza las siguientes variables:

    • BUCKET_NAME: Es el nombre del bucket de Cloud Storage nuevo, que debe cumplir con los requisitos de nombres de buckets.
    • PROJECT_ID: Es el ID del proyecto de Google Cloud .
    • COMPUTE_REGION_TERRAFORM_STATE: Es la región de procesamiento en la que deseas almacenar el estado de la implementación de Terraform.
  4. En el plano examples/gke-a3-megagpu/gke-a3-megagpu-deployment.yaml del repositorio de GitHub, reemplaza las siguientes variables en las secciones terraform_backend_defaults y vars para que coincidan con los valores específicos de tu implementación:

    • BUCKET: Es el nombre del bucket de Cloud Storage que creaste en el paso anterior.
    • DEPLOYMENT_NAME: Es un nombre único para la implementación, que debe tener entre 6 y 30 caracteres de longitud. Si el nombre de la implementación no es único dentro de un proyecto, la creación del clúster fallará.
    • PROJECT_ID: Es el ID del proyecto de Google Cloud .
    • REGION: Es la región de procesamiento del clúster.
    • ZONE: Es la zona de procesamiento del grupo de nodos de máquinas A3 Mega. Esta zona debe coincidir con la zona en la que las máquinas están disponibles en tu reserva.
    • AUTHORIZED_CIDR: Es el rango de direcciones IP que deseas permitir que se conecte al clúster. Este bloque CIDR debe incluir la dirección IP de la máquina que llama a Terraform. Para obtener más información, consulta Cómo funcionan las redes autorizadas. Para obtener la dirección IP de tu máquina anfitrión, ejecuta el comando curl -s https://ifconfig.me.
  5. Elige una opción de consumo para tu implementación de GKE:

    De forma predeterminada, el archivo de implementación está configurado para consumir reservas estándar o futuras. Para usar un modelo de consumo alternativo (como la capacidad on demand, las VMs Spot o el modo de aprovisionamiento de inicio flexible), actualiza el archivo YAML de implementación. Para obtener más información, consulta Opciones de consumo de GKE.

    Para configurar una reserva, establece los siguientes valores en la sección de reserva específica:

    • En el bloque reservation_affinity, en la lista specific_reservations, especifica el campo name de la reserva:
    • Para colocar el grupo de nodos en cualquier lugar de la reserva, proporciona el nombre de tu reserva (RESERVATION_NAME).
    • Para segmentar un bloque específico dentro de tu reserva, usa los nombres de la reserva y del bloque con el siguiente formato:

      RESERVATION_NAME/reservationBlocks/BLOCK_NAME
      

      Si no sabes qué bloques están disponibles en tu reserva, consulta Visualiza la topología de una reserva.

    • STATIC_NODE_COUNT: Es la cantidad de nodos A3 Mega en tu clúster.

    Para modificar la configuración avanzada, edita el plano de examples/gke-a3-megagpu/gke-a3-megagpu.yaml desde el repositorio de GitHub.

  6. Genera credenciales predeterminadas de la aplicación (ADC) para proporcionar acceso a Terraform. Si usas Cloud Shell, usa el comando gcloud auth application-default login:

    gcloud auth application-default login
    
  7. Usa el comando gcluster deploy para implementar el plano y aprovisionar la infraestructura de GKE con los tipos de máquinas A3 Mega:

    cd ~/cluster-toolkit
    ./gcluster deploy -d \
        examples/gke-a3-megagpu/gke-a3-megagpu-deployment.yaml \
        examples/gke-a3-megagpu/gke-a3-megagpu.yaml
    
  8. Cuando se te solicite, selecciona (A)pply para implementar el plano. El plano crea redes de VPC, cuentas de servicio, un clúster y un grupo de nodos.

A3 High

  1. Inicia Cloud Shell. Aunque es posible usar un entorno diferente, te recomendamos que uses Cloud Shell, ya que las dependencias ya están preinstaladas para Cluster Toolkit. Si no quieres usar Cloud Shell, prepara un entorno diferente siguiendo las instrucciones para instalar dependencias.
  2. Instala Cluster Toolkit.

  3. Crea un bucket de Cloud Storage con el control de versiones habilitado para almacenar el estado de tu implementación de Terraform:

    gcloud storage buckets create gs://BUCKET_NAME \
        --default-storage-class=STANDARD \
        --project=PROJECT_ID \
        --location=COMPUTE_REGION_TERRAFORM_STATE \
        --uniform-bucket-level-access
    gcloud storage buckets update gs://BUCKET_NAME --versioning

    Reemplaza las siguientes variables:

    • BUCKET_NAME: Es el nombre del bucket de Cloud Storage nuevo, que debe cumplir con los requisitos de nombres de buckets.
    • PROJECT_ID: Es el ID del proyecto de Google Cloud .
    • COMPUTE_REGION_TERRAFORM_STATE: Es la región de procesamiento en la que deseas almacenar el estado de la implementación de Terraform.
  4. En el plano examples/gke-a3-highgpu/gke-a3-highgpu-deployment.yaml del repositorio de GitHub, reemplaza las siguientes variables en las secciones terraform_backend_defaults y vars para que coincidan con los valores específicos de tu implementación:

    • BUCKET: Es el nombre del bucket de Cloud Storage que creaste en el paso anterior.
    • DEPLOYMENT_NAME: Es un nombre único para la implementación, que debe tener entre 6 y 30 caracteres de longitud. Si el nombre de la implementación no es único dentro de un proyecto, la creación del clúster fallará.
    • PROJECT_ID: Es el ID del proyecto de Google Cloud .
    • REGION: Es la región de procesamiento del clúster.
    • ZONE: Es la zona de procesamiento del grupo de nodos de las máquinas A3 High. Esta zona debe coincidir con la zona en la que las máquinas están disponibles en tu reserva.
    • AUTHORIZED_CIDR: Es el rango de direcciones IP que deseas permitir que se conecte al clúster. Este bloque CIDR debe incluir la dirección IP de la máquina que llama a Terraform. Para obtener más información, consulta Cómo funcionan las redes autorizadas. Para obtener la dirección IP de tu máquina anfitrión, ejecuta el comando curl -s https://ifconfig.me.
  5. Elige una opción de consumo para tu implementación de GKE:

    De forma predeterminada, el archivo de implementación está configurado para consumir reservas estándar o futuras. Para usar un modelo de consumo alternativo (como la capacidad a pedido, las VMs Spot o el modo de aprovisionamiento de inicio flexible), actualiza el archivo YAML de implementación. Para obtener más información, consulta Opciones de consumo de GKE.

    Para configurar una reserva, establece los siguientes valores en la sección de reserva específica:

    • En el bloque reservation_affinity, en la lista specific_reservations, especifica el campo name de la reserva:
    • Para colocar el grupo de nodos en cualquier lugar de la reserva, proporciona el nombre de tu reserva (RESERVATION_NAME).
    • Para segmentar un bloque específico dentro de tu reserva, usa los nombres de la reserva y del bloque con el siguiente formato:

      RESERVATION_NAME/reservationBlocks/BLOCK_NAME
      

      Si no sabes qué bloques están disponibles en tu reserva, consulta Visualiza la topología de una reserva.

    • STATIC_NODE_COUNT: Es la cantidad de nodos A3 High en tu clúster.

    Para modificar la configuración avanzada, edita el plano de examples/gke-a3-highgpu/gke-a3-highgpu.yaml desde el repositorio de GitHub.

  6. Genera credenciales predeterminadas de la aplicación (ADC) para proporcionar acceso a Terraform. Si usas Cloud Shell, usa el comando gcloud auth application-default login:

    gcloud auth application-default login
    
  7. Usa el comando gcluster deploy para implementar el plano y aprovisionar la infraestructura de GKE con tipos de máquinas A3 High:

    cd ~/cluster-toolkit
    ./gcluster deploy -d \
        examples/gke-a3-highgpu/gke-a3-highgpu-deployment.yaml \
        examples/gke-a3-highgpu/gke-a3-highgpu.yaml
    
  8. Cuando se te solicite, selecciona (A)pply para implementar el plano. El plano crea redes de VPC, cuentas de servicio, un clúster y un grupo de nodos.

Ejecuta trabajos de muestra del programador dinámico de cargas de trabajo

Si aprovisionaste tu clúster con el Programador dinámico de cargas de trabajo (ya sea con inicio flexible o aprovisionamiento en cola), puedes validar la programación de las cargas de trabajo enviando trabajos de Kubernetes de muestra.

Para obtener más información sobre los modos de aprovisionamiento de Dynamic Workload Scheduler, consulta Inicio flexible de Dynamic Workload Scheduler con aprovisionamiento en cola.

Envía un trabajo de muestra

Selecciona la pestaña que corresponda a tu opción de consumo:

Inicio flexible

Esta tarea es opcional y solo se aplica si aprovisionaste tu clúster con el inicio flexible. Las cargas de trabajo configuradas para el inicio flexible requieren el selector de nodos cloud.google.com/gke-flex-start: "true" en su especificación de Pod.

  1. Envía el trabajo de inicio flexible de muestra:

    kubectl apply -f examples/dws-sample-workloads/sample-job-flex.yaml
    
  2. Supervisa el estado de tu trabajo y tus Pods:

    kubectl get jobs
    kubectl describe job JOB_NAME
    kubectl get pods
    kubectl describe pod POD_NAME
    

    Reemplaza lo siguiente:

    • JOB_NAME: el nombre de tu trabajo.
    • POD_NAME: es el nombre del Pod.
  3. Cuando se complete el trabajo, borra los recursos del trabajo:

    kubectl delete -f examples/dws-sample-workloads/sample-job-flex.yaml
    

Aprovisionamiento en cola

Esta tarea es opcional y solo se aplica si aprovisionaste tu clúster con el aprovisionamiento en cola. Las cargas de trabajo configuradas para el aprovisionamiento en cola requieren la siguiente etiqueta y anotación en su especificación de Pod:

  • Etiqueta: kueue.x-k8s.io/queue-name: dws-local-queue
  • Anotación: provreq.kueue.x-k8s.io/maxRunDurationSeconds: "MAX_RUN_DURATION"

Para obtener más información, consulta Requisitos del manifiesto de carga de trabajo para el aprovisionamiento en cola.

  1. Envía el trabajo de aprovisionamiento en cola de muestra:

    kubectl apply -f examples/dws-sample-workloads/sample-job-flex-queue.yaml
    
  2. Supervisa el estado de tu trabajo y tus Pods:

    kubectl get jobs
    kubectl describe job JOB_NAME
    kubectl get pods
    kubectl describe pod POD_NAME
    

    Reemplaza lo siguiente:

    • JOB_NAME: el nombre de tu trabajo.
    • POD_NAME: es el nombre del Pod.
  3. Cuando se complete el trabajo, borra los recursos del trabajo:

    kubectl delete -f examples/dws-sample-workloads/sample-job-flex-queue.yaml
    

Prueba el rendimiento de las redes

Te recomendamos que valides la funcionalidad de los clústeres aprovisionados. Para ello, usa las pruebas de NCCL, que son pruebas de la biblioteca de comunicaciones colectivas de NVIDIA (NCCL) optimizadas para el entorno de Google.

Ejecuta comparativas reproducibles

Después de crear un clúster con Cluster Toolkit, puedes reproducir comparativas de entrenamiento previo para modelos abiertos de aprendizaje automático grandes en la serie de máquinas que elijas siguiendo las recetas que se proporcionan en GitHub.

Cada receta te proporciona las instrucciones para completar las siguientes tareas:

  • Prepara tu entorno.
  • Ejecuta la comparativa.
  • Analiza los resultados de la comparativa. Esta revisión incluye los resultados de la comparativa y los registros detallados para un análisis más detallado.

Para ver todas las recetas disponibles para el entrenamiento y otros tipos de cargas de trabajo, consulta el repositorio de GitHub de recetas de GPU.

Borra los recursos creados por Cluster Toolkit

Para evitar que se generen cargos recurrentes por los recursos que se usan en esta página, usa el comando gcluster destroy para limpiar los recursos aprovisionados por Cluster Toolkit, incluidas las redes de VPC y el clúster de GKE:

   cd ~/cluster-toolkit
   ./gcluster destroy CLUSTER_NAME/

Reemplaza CLUSTER_NAME por el nombre del clúster. Para los clústeres creados con Cluster Toolkit, el nombre del clúster se basa en el nombre de DEPLOYMENT_NAME.

¿Qué sigue?