Crea un clúster de GKE optimizado para IA que use A2

En este documento, se describe cómo puedes crear clústeres personalizados de Google Kubernetes Engine (GKE) que usan los tipos de máquinas optimizados para aceleradores A2 Standard (A100 de 40 GB) o A2 Ultra (A100 de 80 GB) para admitir tus cargas de trabajo de inteligencia artificial (IA) y aprendizaje automático (AA). A2 es una serie de máquinas con GPU de uso general que proporciona recursos de procesamiento independientes diseñados para tareas de IA convencionales, como el entrenamiento de modelos más pequeños y la inferencia de un solo host.

GKE proporciona una sola plataforma para ejecutar un conjunto diverso de cargas de trabajo para tu organización, lo que reduce la carga operativa de administrar varias plataformas.

Para crear un clúster de GKE optimizado para IA que use la serie de máquinas A2, haz lo siguiente:

  1. Crea el entorno de GKE
  2. Conéctate a tu clúster.
  3. Configura tus manifiestos de Pod

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 la 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 que se indican en este documento.

Roles obligatorios

Para obtener los permisos que necesitas para crear y administrar un clúster de GKE, pídele a tu administrador que te otorgue los siguientes roles de IAM en el proyecto:

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.

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

  1. Elige una opción de consumo. Elige en función de cómo deseas obtener y usar los recursos de GPU. Para obtener más información, consulta Elige una opción de consumo.

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

  2. Obtener capacidad Obtén más información para obtener capacidad para tu opción de consumo.

Requisitos

En el caso de un clúster de GKE optimizado para IA que usa máquinas A2, los nodos de GPU deben usar la versión 450.80.02 o posterior del controlador NVIDIA.

Limitaciones

Las siguientes limitaciones se aplican a las máquinas A2 como GPU general:

  • GPU de varias instancias: Si bien las máquinas A2 (con GPU A100) admiten la partición de hardware, la GPU de varias instancias (NVIDIA) no se admite cuando se usa GKE Autopilot. Para las cargas de trabajo que requieren la partición de GPU A100, debes usar GKE Standard.

Crea el entorno de GKE

Puedes crear un clúster en modo Autopilot o Standard.

Autopilot

Para crear un clúster de Autopilot, ejecuta el siguiente comando:

  gcloud container clusters create-auto CLUSTER_NAME \
      --region=REGION

Reemplaza lo siguiente:

  • CLUSTER_NAME: El nombre de tu clúster.
  • REGION: Es la región de tu clúster.

Estándar

Crea un clúster de Standard y un grupo de nodos de GPU:

  1. Para crear un clúster de Standard, ejecuta el siguiente comando:

    gcloud container clusters create CLUSTER_NAME \
        --region=REGION \
        --enable-ip-alias
    

    Reemplaza lo siguiente:

    • CLUSTER_NAME: El nombre de tu clúster.
    • REGION: Es la región de tu clúster.
  2. Crea el grupo de nodos. Después de crear el clúster, puedes agregar un grupo de nodos con GPUs A2.

    Ten en cuenta lo siguiente:

    • Los tipos de máquinas A2 estándar (a2-highgpu) requieren que conectes manualmente discos SSD locales a tus nodos para usarlos como espacio de trabajo o almacenamiento en caché. Usa la marca --local-ssd-count.
    • Los tipos de máquinas A2 Ultra (a2-ultragpu) incluyen automáticamente una cantidad fija de discos SSD locales de forma predeterminada.
    • Para las cargas de trabajo de entrenamiento de varios nodos, recomendamos usar una política de posición compacta para minimizar la latencia de red entre los nodos.
    • Para las cargas de trabajo de entrenamiento con varios nodos, también recomendamos habilitar NCCL Fast Socket para mejorar el rendimiento de la red.

    A2 estándar (A100 de 40 GB)

    gcloud container node-pools create NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --region=REGION \
        --node-locations=ZONE \
        --machine-type=MACHINE_TYPE \
        --accelerator=type=nvidia-tesla-a100,count=AMOUNT,gpu-driver-version=LATEST \
        --placement-type=COMPACT \
        --scopes="https://www.googleapis.com/auth/cloud-platform" \
        --local-ssd-count=LOCAL_SSD_COUNT
    

    A2 Ultra (A100 80 GB)

    gcloud container node-pools create NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --region=REGION \
        --node-locations=ZONE \
        --machine-type=MACHINE_TYPE \
        --accelerator=type=nvidia-a100-80gb,count=AMOUNT,gpu-driver-version=LATEST \
        --placement-type=COMPACT \
        --scopes="https://www.googleapis.com/auth/cloud-platform"
    

    Reemplaza lo siguiente:

    • CLUSTER_NAME: El nombre de tu clúster.
    • REGION: Es la región de tu clúster.
    • ZONE: Una o más zonas dentro de tu región que tienen las GPUs solicitadas disponibles, por ejemplo, us-central1-a. Esto es obligatorio cuando se usa la posición compacta.
    • NODE_POOL_NAME: es el nombre de tu grupo de nodos.
    • MACHINE_TYPE: Es el tipo de máquina para tus nodos, por ejemplo, a2-highgpu-1g.
    • AMOUNT: Es la cantidad de GPUs que se deben adjuntar a cada nodo.
    • LOCAL_SSD_COUNT: Es la cantidad de volúmenes de SSD locales que se aprovisionarán en cada nodo.

Conéctate a tu clúster.

Conéctate a tu clúster para poder ejecutar los comandos de kubectl en las siguientes secciones:

gcloud container clusters get-credentials CLUSTER_NAME \
    --region=REGION

Reemplaza lo siguiente:

  • CLUSTER_NAME: El nombre de tu clúster.
  • REGION: Es la región de tu clúster.

Para obtener más información, consulta Instala kubectl y configura el acceso al clúster.

Configura el manifiesto de tu Pod (solo para Autopilot)

Si creaste un clúster de Autopilot, debes seleccionar las GPUs adecuadas en los manifiestos de tu Pod para que GKE aprovisione el hardware.

  1. Especifica el tipo de GPU elegido y la reserva específica con selectores de nodos:

    spec:
      nodeSelector:
        cloud.google.com/gke-accelerator: ACCELERATOR
        cloud.google.com/gke-gpu-driver-version: latest
        # Optional: Include if using reserved capacity
        cloud.google.com/reservation-name: RESERVATION_NAME
        cloud.google.com/reservation-affinity: "specific"
    

    Reemplaza lo siguiente:

    • ACCELERATOR: Es el acelerador que reservaste. Debes usar nvidia-tesla-a100 (para A2 estándar) o nvidia-a100-80gb (para A2 Ultra).
    • RESERVATION_NAME: Es el nombre de la reserva de capacidad de Compute Engine. Para consumir reservas compartidas o bloques y subbloques específicos de reservas, consulta las secciones correspondientes en Consume recursos de ruta de zona reservados.
  2. Agrega los siguientes recursos al contenedor que solicita GPUs:

    containers:
      - name: my-container
        resources:
          limits:
            nvidia.com/gpu: AMOUNT
    

    Reemplaza AMOUNT por la cantidad de GPU que se adjuntarán a cada nodo.

¿Qué sigue?