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

Ce document explique comment créer des clusters Google Kubernetes Engine (GKE) personnalisés qui utilisent la série de machines à usage général N1 avec des GPU NVIDIA T4 ou V100 associés pour prendre en charge vos charges de travail d'intelligence artificielle (IA) et de machine learning (ML). Les machines N1 avec GPU associés sont considérées comme des GPU généraux, qui fournissent des ressources de calcul indépendantes conçues pour les tâches d'IA courantes telles que l'inférence de petite à moyenne taille et les applications graphiques intensives.

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 N1, 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
  • Si vous souhaitez utiliser Google Cloud CLI pour cette tâche, installez puis initialisez la gcloud CLI. Si vous avez déjà installé la gcloud CLI, obtenez la dernière version en exécutant la gcloud components update commande. 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 via des rôles personnalisés ou d'autres rôles prédéfinis.

Choisir une option de consommation et obtenir de la capacité

  1. Choisissez une option de consommation. Faites votre choix en fonction de la manière dont vous souhaitez obtenir et utiliser les ressources GPU. Pour en savoir plus, consultez Choisir une option de consommation.

  2. Obtenez 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 N1, vos nœuds doivent utiliser le pilote NVIDIA version 535 ou ultérieure.

Limites

Les limites suivantes s'appliquent à N1 en tant que série de machines GPU générales :

  • GPU multi-instances (NVIDIA) : la série de machines N1 n'est pas compatible avec les GPU multi-instances (NVIDIA).
  • NCCL Fast Socket : vous ne pouvez pas utiliser NCCL Fast Socket avec les machines N1 sur GKE. Bien que les machines N1 soient compatibles avec la communication multi-nœuds, elles utilisent la mise en réseau VPC standard. Pour l'entraînement distribué à grande échelle qui nécessite un débit réseau maximal, nous vous recommandons d'utiliser une série de machines GPU en cluster, telle que A3 High ou A3 Mega (qui utilisent GPUDirect TCPX) ou A3 Ultra et A4 (qui utilisent GPUDirect RDMA).

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. Une fois votre cluster créé, vous pouvez ajouter un pool de nœuds avec des machines N1 avec des GPU T4 ou V100 associés.

    Pour créer un pool de nœuds, exécutez la commande suivante :

    N1 avec GPU T4 associés

    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 avec GPU V100 associés

    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
    

    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. Cela est nécessaire lorsque vous utilisez un placement compact.
    • NODE_POOL_NAME : nom de votre pool de nœuds
    • MACHINE_TYPE: type de machine N1 pour vos nœuds, par exemple n1-standard-4.
    • 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 votre fichier manifeste de pod (Autopilot uniquement)

Si vous avez créé un cluster Autopilot, vous devez sélectionner les GPU appropriés dans vos fichiers manifestes de pod afin 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 : accélérateur que vous souhaitez utiliser Utilisez nvidia-tesla-t4 pour les GPU T4 ou nvidia-tesla-v100 pour les GPU V100.
    • 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 de chemin d'accès 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.

Étape suivante