Crea un clúster de GKE personalizado y optimizado para IA que use N1

En este documento, se describe cómo puedes crear clústeres personalizados de Google Kubernetes Engine (GKE) que usan la serie de máquinas de uso general N1 con GPUs NVIDIA T4 o V100 conectadas para admitir tus cargas de trabajo de inteligencia artificial (IA) y aprendizaje automático (AA). Las máquinas N1 con GPUs conectadas se consideran GPUs generales, que proporcionan recursos de procesamiento independientes diseñados para tareas de IA convencionales, como la inferencia de pequeña a mediana escala y las aplicaciones de alto contenido gráfico.

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 N1, haz lo siguiente:

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

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 the 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.

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 mediante roles personalizados o cualquier otro rol predefinido.

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

  1. Elige una opción de consumo. Toma una decisión 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.

  2. Obtén capacidad. Obtén información para obtener capacidad para tu opción de consumo.

Requisitos

Para un clúster de GKE optimizado para IA que use N1, tus nodos deben usar la versión 535 o posterior del controlador NVIDIA.

Limitaciones

Las siguientes limitaciones se aplican a N1 como una serie de máquinas de GPU generales:

  • GPU de instancias múltiples (NVIDIA): La serie de máquinas N1 no admite GPUs de instancias múltiples (NVIDIA).
  • Fast Socket de NCCL: No puedes usar Fast Socket de NCCL con máquinas N1 en GKE. Si bien las máquinas N1 admiten la comunicación de varios nodos, usan redes de VPC estándar. Para el entrenamiento distribuido a gran escala que requiere un máximo de capacidad de procesamiento de red, te recomendamos que uses una serie de máquinas de GPU en clúster, como A3 High o A3 Mega (que usan GPUDirect TCPX) o A3 Ultra y A4 (que usan GPUDirect RDMA).

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: La región de tu clúster.

Estándar

Crea un clúster estándar y un grupo de nodos de GPU:

  1. Para crear un clúster estándar, 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: 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 máquinas N1 con GPUs T4 o V100 conectadas.

    Para crear un grupo de nodos, usa el siguiente comando:

    N1 con GPUs T4 conectadas

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

    N1 con GPUs V100 conectadas

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

    Reemplaza lo siguiente:

    • CLUSTER_NAME: El nombre de tu clúster.
    • REGION: La región de tu clúster.
    • ZONE: Una o más zonas dentro de tu región que tienen disponibles las GPUs solicitadas, por ejemplo, us-central1-a. Esto es obligatorio cuando se usa la colocación compacta.
    • NODE_POOL_NAME: Es el nombre de tu grupo de nodos.
    • MACHINE_TYPE: El tipo de máquina N1 para tus nodos, por ejemplo, n1-standard-4.
    • AMOUNT: La cantidad de GPUs que se conectarán a cada nodo.
    • LOCAL_SSD_COUNT: Es la cantidad de volúmenes 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 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: La región de tu clúster.

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

Configura tu manifiesto de Pods (solo Autopilot)

Si creaste un clúster de Autopilot, debes seleccionar las GPUs adecuadas en tus manifiestos de Pods 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: El acelerador que deseas usar. Usa nvidia-tesla-t4 para las GPUs T4 o nvidia-tesla-v100 para las GPUs V100.
    • RESERVATION_NAME: 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 respectivas en Consume recursos zonales 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 GPUs que se conectarán a cada nodo.

¿Qué sigue?