Créer un cluster GKE optimisé pour l'IA qui utilise A2

Ce document explique comment créer des clusters Google Kubernetes Engine (GKE) personnalisés qui utilisent les types de machines optimisés pour les accélérateurs A2 Standard (A100 40 Go) ou A2 Ultra (A100 80 Go) pour prendre en charge vos charges de travail d'intelligence artificielle (IA) et de machine learning (ML). A2 est une série de machines GPU à usage général qui fournit des ressources de calcul indépendantes conçues pour les tâches d'IA courantes, telles que l'entraînement de modèles plus petits et l'inférence à hôte unique.

GKE fournit une plate-forme unique pour exécuter un ensemble varié de charges de travail pour votre organisation, ce qui réduit la charge opérationnelle liée à la gestion de plusieurs plates-formes.

Pour créer un cluster GKE optimisé pour l'IA qui utilise la série de machines A2, procédez comme suit :

  1. Créer l'environnement GKE
  2. Vous connecter à votre cluster
  3. Configurer vos fichiers manifestes de pod

Avant de commencer

Avant de commencer, effectuez les tâches suivantes :

  • Activez l'API Google Kubernetes Engine.
  • Activer l'API Google Kubernetes Engine
  • Pour utiliser Google Cloud CLI pour cette tâche, installez puis initialisez gcloud CLI. Si vous avez déjà installé la gcloud CLI, obtenez la dernière version en exécutant la commande gcloud components update. Il est possible que les versions antérieures de la gcloud CLI ne permettent pas d'exécuter les commandes de ce document.

Rôles requis

Pour obtenir les autorisations nécessaires pour créer et gérer un cluster GKE, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le projet :

Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.

Choisir une option de consommation et obtenir de la capacité

  1. Sélectionnez une option de consommation. Faites votre choix en fonction de la façon dont vous souhaitez obtenir et utiliser les ressources GPU. Pour en savoir plus, consultez Choisir une option de consommation.

    Pour GKE, tenez compte des informations supplémentaires suivantes lorsque vous choisissez une option de consommation :

  2. Obtenir de la capacité Découvrez comment obtenir de la capacité pour votre option de consommation.

Conditions requises

Pour un cluster GKE optimisé pour l'IA qui utilise des machines A2, vos nœuds GPU doivent utiliser le pilote NVIDIA version 450.80.02 ou ultérieure.

Limites

Les limites suivantes s'appliquent aux machines A2 en tant que GPU à usage général :

  • GPU multi-instances : bien que les A2 (GPU A100) soient compatibles avec le partitionnement matériel, les GPU multi-instances (NVIDIA) ne sont pas compatibles avec GKE Autopilot. Pour les charges de travail nécessitant le partitionnement de GPU A100, vous devez utiliser GKE Standard.

Créer l'environnement GKE

Vous pouvez créer un cluster en mode Autopilot ou Standard.

Autopilot

Pour créer un cluster Autopilot, exécutez la commande suivante :

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

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du cluster
  • REGION : région de votre cluster.

Standard

Créez un cluster Standard et un pool de nœuds GPU :

  1. Pour créer un cluster Standard, exécutez la commande suivante :

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

    Remplacez les éléments suivants :

    • CLUSTER_NAME : nom du cluster
    • REGION : région de votre cluster.
  2. Créez le pool de nœuds. Après avoir créé votre cluster, vous pouvez ajouter un pool de nœuds avec des GPU A2.

    Veuillez noter les points suivants :

    • Les types de machines A2 standards (a2-highgpu) vous obligent à associer manuellement des disques SSD locaux à vos nœuds pour les utiliser comme espace de travail ou pour la mise en cache. Utilisez l'option --local-ssd-count.
    • Les types de machines A2 Ultra (a2-ultragpu) incluent automatiquement un nombre fixe de disques SSD locaux par défaut.
    • Pour les charges de travail d'entraînement multinœuds, nous vous recommandons d'utiliser une stratégie d'emplacement compact afin de minimiser la latence réseau entre les nœuds.
    • Pour les charges de travail d'entraînement multinœuds, nous vous recommandons également d'activer NCCL Fast Socket afin d'améliorer les performances du réseau.

    A2 Standard (A100 40 Go)

    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 Go)

    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"
    

    Remplacez les éléments suivants :

    • CLUSTER_NAME : nom du cluster
    • REGION : région de votre cluster.
    • ZONE : une ou plusieurs zones de votre région dans lesquelles les GPU demandés sont disponibles, par exemple us-central1-a. Ce champ est obligatoire lorsque vous utilisez un emplacement compact.
    • NODE_POOL_NAME : nom de votre pool de nœuds.
    • MACHINE_TYPE : type de machine pour vos nœuds, par exemple a2-highgpu-1g.
    • AMOUNT : nombre de GPU à associer à chaque nœud.
    • LOCAL_SSD_COUNT : nombre de volumes SSD locaux à provisionner sur chaque nœud.

Vous connecter à votre cluster

Connectez-vous à votre cluster pour pouvoir exécuter les commandes kubectl dans les sections suivantes :

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

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du cluster
  • REGION : région de votre cluster.

Pour en savoir plus, consultez Installer kubectl et configurer l'accès au cluster.

Configurer le fichier manifeste de votre pod (Autopilot uniquement)

Si vous avez créé un cluster Autopilot, vous devez sélectionner les GPU appropriés dans vos fichiers manifestes de pod pour que GKE provisionne le matériel.

  1. Spécifiez le type de GPU choisi et la réservation spécifique à l'aide de sélecteurs de nœuds :

    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"
    

    Remplacez les éléments suivants :

    • ACCELERATOR : l'accélérateur que vous avez réservé. Vous devez utiliser nvidia-tesla-a100 (pour A2 Standard) ou nvidia-a100-80gb (pour A2 Ultra).
    • RESERVATION_NAME : nom de la réservation de capacité Compute Engine. Pour consommer des réservations partagées, ou des blocs et sous-blocs spécifiques de réservations, consultez les sections correspondantes dans Consommer des ressources zonales réservées.
  2. Ajoutez les ressources suivantes au conteneur qui demande des GPU :

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

    Remplacez AMOUNT par le nombre de GPU à associer à chaque nœud.

Étapes suivantes