Ce document explique comment créer un cluster Google Kubernetes Engine (GKE) optimisé pour l'IA qui utilise des instances Compute Engine A4X, A4, A3 Ultra, A3 Mega et A3 High (8 GPU) pour prendre en charge vos charges de travail d'IA et de ML.
Les séries de machines A4X, A4, A3 Ultra, A3 Mega et A3 High (8 GPU) sont conçues pour vous permettre d'exécuter des clusters d'IA/de ML à grande échelle avec des fonctionnalités telles que le placement ciblé des charges de travail, des contrôles avancés de maintenance des clusters et la planification tenant compte de la topologie. Pour en savoir plus, consultez la présentation de la gestion des clusters.
GKE fournit une plate-forme unique pour exécuter un ensemble diversifié de charges de travail répondant aux besoins de votre organisation. Ces charges de travail incluent le pré-entraînement distribué hautes performances, l'affinage de modèles, l'inférence de modèles, la diffusion d'applications et les services d'assistance. GKE réduit la charge opérationnelle liée à la gestion de plusieurs plates-formes.
Choisir comment créer un cluster GKE optimisé pour l'IA
Les options de création de cluster suivantes offrent chacune différents niveaux de facilité et de flexibilité pour la configuration des clusters et la planification des charges de travail :
- Utilisez Cluster Toolkit pour créer des clusters avec la configuration par défaut pour les ressources de calcul, de stockage et de mise en réseau, et avec GPUDirect RDMA-over-Converged-Ethernet (RoCE) activé.
Vous pouvez également créer votre cluster GKE manuellement pour personnaliser ou étendre précisément les environnements GKE de production existants. Pour créer manuellement un cluster GKE optimisé pour l'IA, consultez l'une des pages suivantes :
- A4X Max : créez un cluster GKE optimisé pour l'IA qui utilise A4X Max.
- A4X : créez un cluster GKE optimisé pour l'IA qui utilise A4X.
- A4 ou A3 Ultra : créez un cluster GKE optimisé pour l'IA qui utilise des VM A4 ou A3 Ultra.
- A3 Mega ou A3 High : Créez un cluster GKE Standard qui utilise A3 Mega ou A3 High ou Créez un cluster GKE Autopilot qui utilise A3 Mega ou A3 High.
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 la 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 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.
- Vérifiez que vous disposez des autorisations requises pour créer et gérer le cluster GKE et les comptes de service associés :
- Administrateur Kubernetes Engine (
roles/container.admin) - Administrateur de Compute (
roles/compute.admin) - Administrateur de l'espace de stockage (
roles/storage.admin) - Administrateur de projet IAM (
roles/resourcemanager.projectIamAdmin) - Administrateur de compte de service (
roles/iam.serviceAccountAdmin) - Utilisateur du compte de service (
roles/iam.serviceAccountUser) - Consommateur Service Usage (
roles/serviceusage.serviceUsageConsumer) - Administrateur des rôles (
roles/iam.roleAdmin) - Gestionnaire des versions de secrets Secret Manager (
roles/secretmanager.secretVersionManager) - Pour utiliser une réservation monoprojet : Administrateur d'instances Compute (v1) (
roles/compute.instanceAdmin.v1) sur le projet - Pour utiliser une réservation partagée : Administrateur d'instances Compute (v1) (
roles/compute.instanceAdmin.v1) sur le projet propriétaire et sur tout projet client dans lequel vous souhaitez utiliser la réservation
- Administrateur Kubernetes Engine (
Choisir une option de consommation et obtenir de la capacité
Pour obtenir de la capacité, procédez comme suit :
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.
Pour GKE, tenez compte des informations supplémentaires suivantes lorsque vous choisissez une option d'utilisation :
- Les instances de calcul A4X Max et A4X ne peuvent pas être provisionnées à l'aide du démarrage flexible.
- Pour en savoir plus sur le mode de provisionnement Démarrage flexible (preview) et GKE, consultez À propos de l'obtention de GPU avec le démarrage flexible.
- Le démarrage flexible utilise un emplacement compact de la façon la plus optimale possible. Pour examiner votre topologie, consultez Afficher la topologie physique des nœuds de votre cluster GKE.
- Vous ne pouvez obtenir des informations de topologie lorsque vous utilisez des VM Spot que si vous configurez l'emplacement compact.
- Pour en savoir plus sur la configuration de ces options de consommation dans les plans Cluster Toolkit, consultez Options de consommation GKE.
Obtenir de la capacité : le processus d'obtention de la capacité diffère pour chaque option de consommation. Pour en savoir plus sur le processus de l'option de consommation que vous avez choisie, consultez Présentation de la capacité.
Conditions requises
Les exigences suivantes s'appliquent à un cluster GKE optimisé pour l'IA :
Pour A4X Max, vous devez utiliser l'une des versions suivantes :
- Pour la version 1.35 ou ultérieure, utilisez GKE version 1.35.0-gke.2745000 ou ultérieure.
- Pour la version 1.34, utilisez GKE version 1.34.3-gke.1318000 ou ultérieure.
Ces versions permettent de s'assurer qu'A4X Max utilise les éléments suivants :
- R580.95.05, la version minimale du pilote de GPU pour A4X Max, qui est activée par défaut.
- La gestion de la mémoire basée sur un pilote cohérent (CDMM), qui est activée par défaut. NVIDIA recommande aux clusters Kubernetes d'activer ce mode pour résoudre les problèmes de sur-reporting de la mémoire. CDMM permet de gérer la mémoire du GPU via le pilote plutôt que via le système d'exploitation (OS). Cette approche vous permet d'éviter la mise en ligne de la mémoire GPU par l'OS et expose la mémoire GPU à l'OS en tant que nœud NUMA (Non-Uniform Memory Access). Les GPU multi-instances ne sont pas compatibles lorsque le CDMM est activé. Pour en savoir plus sur le CDMM, consultez Compatibilité matérielle et logicielle.
- GPUDirect RDMA et MNNVL, qui sont recommandés pour permettre aux pools de nœuds A4X Max d'utiliser les fonctionnalités de mise en réseau d'A4X Max.
Pour A4X, vous devez utiliser l'une des versions suivantes :
- Pour la version 1.33 ou ultérieure, utilisez GKE version 1.33.4-gke.1036000 ou ultérieure.
- Pour la version 1.32, utilisez GKE version 1.32.8-gke.1108000 ou ultérieure.
Ces versions permettent de s'assurer qu'A4X utilise les éléments suivants :
- R580, la version minimale du pilote GPU pour A4X, qui est activée par défaut.
- La gestion de la mémoire basée sur un pilote cohérent (CDMM), qui est activée par défaut. NVIDIA recommande aux clusters Kubernetes d'activer ce mode pour résoudre les problèmes de sur-reporting de la mémoire. CDMM permet de gérer la mémoire du GPU via le pilote plutôt que via le système d'exploitation (OS). Cette approche vous permet d'éviter la mise en ligne de la mémoire GPU par l'OS et expose la mémoire GPU à l'OS en tant que nœud NUMA (Non-Uniform Memory Access). Les GPU multi-instances ne sont pas compatibles lorsque le CDMM est activé. Pour en savoir plus sur le CDMM, consultez Compatibilité matérielle et logicielle.
- GPUDirect RDMA et MNNVL, qui sont recommandés pour permettre aux pools de nœuds A4X d'utiliser les fonctionnalités de mise en réseau d'A4X.
Assurez-vous d'utiliser la version minimale du pilote de GPU, en fonction du type de machine :
- A4X Max : les GPU GB300 des instances Bare Metal A4X Max nécessitent au moins la version R580.95.05 du pilote GPU. Consultez les exigences de version mentionnées précédemment.
- A4X : les GPU GB200 des instances A4X nécessitent au moins la version R580 du pilote de GPU. Consultez les exigences de version mentionnées précédemment.
- A4 : les GPU B200 des instances A4 nécessitent au moins la version R570 du pilote GPU. Par défaut, GKE installe automatiquement cette version du pilote sur tous les nœuds A4 exécutant la version minimale requise pour A4, à savoir 1.32.1-gke.1729000 ou une version ultérieure.
- A3 Ultra : les GPU H200 des instances A3 Ultra nécessitent au moins la version R550 du pilote de GPU, qui est disponible dans GKE 1.31 en tant que version de pilote
latest. Pour A3 Ultra, vous devez définirgpu-driver-version=latestavec GKE 1.31. Pour GKE 1.31.5-gke.1169000 ou version ultérieure, GKE installe automatiquement par défaut les versions de pilote de GPU R550 sur les nœuds A3 Ultra. - A3 Mega et A3 High : les GPU H100 des instances A3 High et A3 Mega sont compatibles avec la version du pilote de GPU par défaut dans toutes les versions de GKE compatibles. Vous pouvez également définir
gpu-driver-version=latestpour accéder aux pilotes de production plus récents disponibles sur les versions de GKE compatibles.
Pour les pools de nœuds A3 Ultra, vous devez définir le type de disque sur
hyperdisk-balanced.Pour utiliser GPUDirect RDMA, utilisez les versions minimales suivantes en fonction du type de machine :
- A4X Max : consultez les exigences de version mentionnées précédemment.
- A4X : consultez les exigences de version mentionnées précédemment.
- A4 : utilisez la version 1.32.2-gke.1475000 ou une version ultérieure.
- A3 Ultra : utilisez la version 1.31.4-gke.1183000 ou une version ultérieure.
Pour utiliser GPUDirect-TCPXO (pour A3 Mega) et GPUDirect-TCPX (pour A3 High), utilisez les versions de GKE suivantes :
- A3 High : utilisez n'importe quelle version de GKE disponible antérieure à la version 1.34.
- A3 Mega : utilisez n'importe quelle version de GKE disponible.
Pour utiliser GPUDirect RDMA, les nœuds GKE doivent utiliser une image de nœud Container-Optimized OS. Les images de nœuds Ubuntu et Windows ne sont pas acceptées.
Vous devez utiliser le modèle de provisionnement lié à la réservation pour créer des clusters avec A4X Max et A4X. Les autres modèles de provisionnement ne sont pas acceptés.
Créer un cluster avec Cluster Toolkit
Suivez les instructions ci-dessous pour créer un cluster à l'aide de Cluster Toolkit. Cette section vous guide tout au long du processus de création de cluster, en veillant à ce que votre projet suive les bonnes pratiques et réponde aux exigences d'un cluster GKE optimisé pour l'IA. Cette section vous explique également comment utiliser Terraform pour provisionner et gérer l'infrastructure de votre déploiement.
A4X Max
- Lancez Cloud Shell. Bien qu'il soit possible d'utiliser un autre environnement, nous vous recommandons d'utiliser Cloud Shell, car les dépendances sont déjà préinstallées pour Cluster Toolkit. Si vous ne souhaitez pas utiliser Cloud Shell, suivez les instructions pour installer les dépendances afin de préparer un autre environnement.
Créez un bucket Cloud Storage avec la gestion des versions activée pour stocker l'état de votre déploiement 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
Remplacez les variables suivantes :
BUCKET_NAME: nom du nouveau bucket Cloud Storage, qui doit respecter les exigences de dénomination des buckets.PROJECT_ID: ID de votre projet Google Cloud .COMPUTE_REGION_TERRAFORM_STATE: région de calcul dans laquelle vous souhaitez stocker l'état du déploiement Terraform.
Dans le plan
examples/gke-a4x-max-bm/gke-a4x-max-bm-deployment.yamldu dépôt GitHub, renseignez les paramètres suivants dans les sectionsterraform_backend_defaultsetvarspour qu'ils correspondent aux valeurs spécifiques de votre déploiement :BUCKET: nom du bucket Cloud Storage que vous avez créé à l'étape précédente.PROJECT_ID: ID de votre projet Google Cloud .DEPLOYMENT_NAME: nom unique du déploiement, qui doit comporter entre 6 et 30 caractères. Si le nom du déploiement n'est pas unique dans un projet, la création du cluster échoue. La valeur par défaut estgke-a4x-max-bm.REGION: région de calcul du cluster.ZONE: zone de calcul du pool de nœuds des machines A4X Max. Cette zone doit correspondre à celle où les machines sont disponibles dans votre réservation.STATIC_NODE_COUNT: nombre de nœuds A4X Max dans le pool de nœuds de votre cluster, qui doit être inférieur ou égal à 18. Nous vous recommandons d'utiliser 18 nœuds pour obtenir la topologie GPU de1x72dans un sous-bloc à l'aide d'un domaine NVLink.AUTHORIZED_CIDR: plage d'adresses IP que vous souhaitez autoriser à se connecter au cluster. Ce bloc CIDR doit inclure l'adresse IP de la machine qui appelle Terraform. Pour en savoir plus, consultez Fonctionnement des réseaux autorisés.Pour le champ
reservation, utilisez l'une des options suivantes, selon que vous souhaitez cibler des blocs spécifiques dans une réservation lorsque vous provisionnez le pool de nœuds :Pour placer le pool de nœuds n'importe où dans la réservation, indiquez le nom de votre réservation (
RESERVATION_NAME).Pour cibler un bloc spécifique dans votre réservation, utilisez les noms de la réservation et du bloc au format suivant :
RESERVATION_NAME/reservationBlocks/BLOCK_NAMESi vous ne savez pas quels blocs sont disponibles dans votre réservation, consultez Afficher la topologie d'une réservation.
RESERVATION_PROJECT_ID: ID du projet Google Cloudcontenant la réservation. Votre réservation peut exister dans un projet différent dePROJECT_ID.NUM_NODE_POOLS: nombre de pools de nœuds à activer dans votre cluster. Si vous souhaitez un cluster de plus de 18 nœuds, vous pouvez spécifier plusieurs pools de nœuds. La valeur par défaut est1.
Pour modifier les paramètres avancés, modifiez le fichier du plan
examples/gke-a4x-max-bm/gke-a4x-max-bm.yaml.Générez des identifiants par défaut de l'application (ADC) pour fournir un accès à Terraform. Si vous utilisez Cloud Shell, exécutez la commande
gcloud auth application-default login:gcloud auth application-default loginUtilisez la commande
gcluster deploypour déployer le plan et provisionner l'infrastructure GKE à l'aide des types de machines 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.yamlLorsque vous y êtes invité, sélectionnez (A)pply pour déployer le plan.
- Le plan crée des réseaux VPC, un réseau VPC GPU RDMA, des comptes de service, un cluster et un pool de nœuds.
- Pour prendre en charge le modèle de job
fio-bench-job-templatedans le plan, des ressources de buckets, de stockage réseau et de volumes persistantsGoogle Cloud sont créées.
A4X
- Lancez Cloud Shell. Bien qu'il soit possible d'utiliser un autre environnement, nous vous recommandons d'utiliser Cloud Shell, car les dépendances sont déjà préinstallées pour Cluster Toolkit. Si vous ne souhaitez pas utiliser Cloud Shell, suivez les instructions pour installer les dépendances afin de préparer un autre environnement.
Créez un bucket Cloud Storage avec la gestion des versions activée pour stocker l'état de votre déploiement 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
Remplacez les variables suivantes :
BUCKET_NAME: nom du nouveau bucket Cloud Storage, qui doit respecter les exigences de dénomination des buckets.PROJECT_ID: ID de votre projet Google Cloud .COMPUTE_REGION_TERRAFORM_STATE: région de calcul dans laquelle vous souhaitez stocker l'état du déploiement Terraform.
Dans le plan
examples/gke-a4x/gke-a4x-deployment.yamldu dépôt GitHub, renseignez les paramètres suivants dans les sectionsterraform_backend_defaultsetvarspour qu'ils correspondent aux valeurs spécifiques de votre déploiement :BUCKET: nom du bucket Cloud Storage que vous avez créé à l'étape précédente.PROJECT_ID: ID de votre projet Google Cloud .DEPLOYMENT_NAME: nom unique du déploiement, qui doit comporter entre 6 et 30 caractères. Si le nom du déploiement n'est pas unique dans un projet, la création du cluster échoue. La valeur par défaut estgke-a4x.REGION: région de calcul du cluster.ZONE: zone de calcul du pool de nœuds de machines A4X. Cette zone doit correspondre à la zone où les machines sont disponibles dans votre réservation.STATIC_NODE_COUNT: nombre de nœuds A4X dans le pool de nœuds de votre cluster, qui doit être inférieur ou égal à 18 nœuds. Nous vous recommandons d'utiliser 18 nœuds pour obtenir la topologie GPU de1x72dans un sous-bloc à l'aide d'un domaine NVLink.AUTHORIZED_CIDR: plage d'adresses IP que vous souhaitez autoriser à se connecter au cluster. Ce bloc CIDR doit inclure l'adresse IP de la machine qui appelle Terraform. Pour en savoir plus, consultez Fonctionnement des réseaux autorisés.Pour le champ
reservation, utilisez l'une des options suivantes, selon que vous souhaitez cibler des blocs spécifiques dans une réservation lorsque vous provisionnez le pool de nœuds :Pour placer le pool de nœuds n'importe où dans la réservation, indiquez le nom de votre réservation (
RESERVATION_NAME).Pour cibler un bloc spécifique dans votre réservation, utilisez les noms de la réservation et du bloc au format suivant :
RESERVATION_NAME/reservationBlocks/BLOCK_NAMESi vous ne savez pas quels blocs sont disponibles dans votre réservation, consultez Afficher la topologie d'une réservation.
RESERVATION_PROJECT_ID: ID du projet Google Cloudcontenant la réservation. Votre réservation peut exister dans un projet différent dePROJECT_ID.NUM_NODE_POOLS: nombre de pools de nœuds à activer dans votre cluster. Si vous souhaitez un cluster de plus de 18 nœuds, vous pouvez spécifier plusieurs pools de nœuds. La valeur par défaut est1.
Pour modifier les paramètres avancés, modifiez le fichier du plan
examples/gke-a4x/gke-a4x.yaml.Générez des identifiants par défaut de l'application (ADC) pour fournir un accès à Terraform. Si vous utilisez Cloud Shell, exécutez la commande
gcloud auth application-default login:gcloud auth application-default loginUtilisez la commande
gcluster deploypour déployer le plan et provisionner l'infrastructure GKE à l'aide des types de machines A4X :cd ~/cluster-toolkit ./gcluster deploy -d \ examples/gke-a4x/gke-a4x-deployment.yaml \ examples/gke-a4x/gke-a4x.yamlLorsque vous y êtes invité, sélectionnez (A)pply pour déployer le plan.
- Le plan crée des réseaux VPC, un réseau VPC GPU RDMA, des comptes de service, un cluster et un pool de nœuds.
- Pour prendre en charge le modèle de job
fio-bench-job-templatedans le plan, des buckets, un espace de stockage réseau et des ressources de volume persistantGoogle Cloud sont créés.
A4
- Lancez Cloud Shell. Bien qu'il soit possible d'utiliser un autre environnement, nous vous recommandons d'utiliser Cloud Shell, car les dépendances sont déjà préinstallées pour Cluster Toolkit. Si vous ne souhaitez pas utiliser Cloud Shell, suivez les instructions pour installer les dépendances afin de préparer un autre environnement.
Créez un bucket Cloud Storage avec la gestion des versions activée pour stocker l'état de votre déploiement 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
Remplacez les variables suivantes :
BUCKET_NAME: nom du nouveau bucket Cloud Storage, qui doit respecter les exigences de dénomination des buckets.PROJECT_ID: ID de votre projet Google Cloud .COMPUTE_REGION_TERRAFORM_STATE: région de calcul dans laquelle vous souhaitez stocker l'état du déploiement Terraform.
Choisissez une option de consommation pour votre déploiement GKE :
Par défaut, le fichier de déploiement est configuré pour consommer des réservations spécifiques. Pour utiliser un autre modèle de consommation (comme les VM Spot ou le mode de provisionnement à démarrage flexible), mettez à jour votre fichier YAML de déploiement. Pour en savoir plus, consultez Options de consommation GKE.
Dans le plan
examples/gke-a4/gke-a4-deployment.yamldu dépôt GitHub, renseignez les paramètres suivants dans les sectionsterraform_backend_defaultsetvarspour qu'ils correspondent aux valeurs spécifiques de votre déploiement :BUCKET: nom du bucket Cloud Storage que vous avez créé à l'étape précédente.PROJECT_ID: ID de votre projet Google Cloud .DEPLOYMENT_NAME: nom unique du déploiement, qui doit comporter entre 6 et 30 caractères. Si le nom du déploiement n'est pas unique dans un projet, la création du cluster échoue. La valeur par défaut estgke-a4.REGION: région de calcul du cluster.ZONE: zone de calcul du pool de nœuds de machines A4. Cette zone doit correspondre à la zone où les machines sont disponibles dans votre réservation.AUTHORIZED_CIDR: plage d'adresses IP que vous souhaitez autoriser à se connecter au cluster. Ce bloc CIDR doit inclure l'adresse IP de la machine qui appelle Terraform. Pour en savoir plus, consultez Fonctionnement des réseaux autorisés.- Dans la section de réservation spécifique, configurez les paramètres suivants :
Dans le bloc
reservation_affinity, dans la listespecific_reservations, spécifiez le champ de réservationname:- Pour placer le pool de nœuds n'importe où dans la réservation, indiquez le nom de votre réservation (
RESERVATION_NAME). - Pour cibler un bloc spécifique dans votre réservation, utilisez les noms de la réservation et du bloc au format suivant :
RESERVATION_NAME/reservationBlocks/BLOCK_NAMESi vous ne savez pas quels blocs sont disponibles dans votre réservation, consultez Afficher la topologie d'une réservation.
- Pour placer le pool de nœuds n'importe où dans la réservation, indiquez le nom de votre réservation (
STATIC_NODE_COUNT: nombre de nœuds A4 dans votre cluster.
Pour modifier les paramètres avancés, modifiez le fichier du plan
examples/gke-a4/gke-a4.yaml.Générez des identifiants par défaut de l'application (ADC) pour fournir un accès à Terraform. Si vous utilisez Cloud Shell, exécutez la commande
gcloud auth application-default login:gcloud auth application-default loginUtilisez la commande
gcluster deploypour déployer le plan et provisionner l'infrastructure GKE à l'aide de types de machines A4 :cd ~/cluster-toolkit ./gcluster deploy -d \ examples/gke-a4/gke-a4-deployment.yaml \ examples/gke-a4/gke-a4.yamlLorsque vous y êtes invité, sélectionnez (A)pply pour déployer le plan.
- Le plan crée des réseaux VPC, un réseau VPC GPU RDMA, des comptes de service, un cluster et un pool de nœuds.
- Pour prendre en charge le modèle de job
fio-bench-job-templatedans le plan, des buckets, un espace de stockage réseau et des ressources de volume persistantGoogle Cloud sont créés.
A3 Ultra
- Lancez Cloud Shell. Bien qu'il soit possible d'utiliser un autre environnement, nous vous recommandons d'utiliser Cloud Shell, car les dépendances sont déjà préinstallées pour Cluster Toolkit. Si vous ne souhaitez pas utiliser Cloud Shell, suivez les instructions pour installer les dépendances afin de préparer un autre environnement.
Créez un bucket Cloud Storage avec la gestion des versions activée pour stocker l'état de votre déploiement 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
Remplacez les variables suivantes :
BUCKET_NAME: nom du nouveau bucket Cloud Storage, qui doit respecter les exigences de dénomination des buckets.PROJECT_ID: ID de votre projet Google Cloud .COMPUTE_REGION_TERRAFORM_STATE: région de calcul dans laquelle vous souhaitez stocker l'état du déploiement Terraform.
Choisissez une option de consommation pour votre déploiement GKE :
Par défaut, le fichier de déploiement est configuré pour consommer des réservations spécifiques. Pour utiliser un autre modèle de consommation (comme les VM Spot ou le mode de provisionnement à démarrage flexible), mettez à jour votre fichier YAML de déploiement. Pour en savoir plus, consultez Options de consommation GKE.
Dans le plan
examples/gke-a3-ultragpu/gke-a3-ultragpu-deployment.yamldu dépôt GitHub, renseignez les paramètres suivants dans les sectionsterraform_backend_defaultsetvarspour qu'ils correspondent aux valeurs spécifiques de votre déploiement :BUCKET: nom du bucket Cloud Storage que vous avez créé à l'étape précédente.PROJECT_ID: ID de votre projet Google Cloud .DEPLOYMENT_NAME: nom unique du déploiement, qui doit comporter entre 6 et 30 caractères. Si le nom du déploiement n'est pas unique dans un projet, la création du cluster échoue. La valeur par défaut estgke-a3-ultragpu.REGION: région de calcul du cluster.ZONE: zone de calcul du pool de nœuds des machines A3 Ultra. Cette zone doit correspondre à la zone où les machines sont disponibles dans votre réservation.AUTHORIZED_CIDR: plage d'adresses IP que vous souhaitez autoriser à se connecter au cluster. Ce bloc CIDR doit inclure l'adresse IP de la machine qui appelle Terraform. Pour en savoir plus, consultez Fonctionnement des réseaux autorisés.- Dans la section de réservation spécifique, configurez les paramètres suivants :
Dans le bloc
reservation_affinity, dans la listespecific_reservations, spécifiez le champ de réservationname:- Pour placer le pool de nœuds n'importe où dans la réservation, indiquez le nom de votre réservation (
RESERVATION_NAME). - Pour cibler un bloc spécifique dans votre réservation, utilisez les noms de la réservation et du bloc au format suivant :
RESERVATION_NAME/reservationBlocks/BLOCK_NAMESi vous ne savez pas quels blocs sont disponibles dans votre réservation, consultez Afficher la topologie d'une réservation.
- Pour placer le pool de nœuds n'importe où dans la réservation, indiquez le nom de votre réservation (
STATIC_NODE_COUNT: nombre de nœuds A3 Ultra dans votre cluster.
Pour modifier les paramètres avancés, modifiez le fichier du plan
examples/gke-a3-ultragpu/gke-a3-ultragpu.yaml.Générez des identifiants par défaut de l'application (ADC) pour fournir un accès à Terraform. Si vous utilisez Cloud Shell, exécutez la commande
gcloud auth application-default login:gcloud auth application-default loginUtilisez la commande
gcluster deploypour déployer le plan et provisionner l'infrastructure GKE à l'aide de types de machines A3 Ultra :cd ~/cluster-toolkit ./gcluster deploy -d \ examples/gke-a3-ultragpu/gke-a3-ultragpu-deployment.yaml \ examples/gke-a3-ultragpu/gke-a3-ultragpu.yamlLorsque vous y êtes invité, sélectionnez (A)pply pour déployer le plan.
- Le plan crée des réseaux VPC, un réseau VPC GPU RDMA, des comptes de service, un cluster et un pool de nœuds.
- Pour prendre en charge le modèle de job
fio-bench-job-templatedans le plan, des ressources de buckets, de stockage réseau et de volumes persistantsGoogle Cloud sont créées.
A3 Mega
- Lancez Cloud Shell. Bien qu'il soit possible d'utiliser un autre environnement, nous vous recommandons d'utiliser Cloud Shell, car les dépendances sont déjà préinstallées pour Cluster Toolkit. Si vous ne souhaitez pas utiliser Cloud Shell, préparez un autre environnement en suivant les instructions pour installer les dépendances.
Créez un bucket Cloud Storage avec la gestion des versions activée pour stocker l'état de votre déploiement 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
Remplacez les variables suivantes :
BUCKET_NAME: nom du nouveau bucket Cloud Storage, qui doit respecter les exigences de dénomination des buckets.PROJECT_ID: ID de votre projet Google Cloud .COMPUTE_REGION_TERRAFORM_STATE: région de calcul dans laquelle vous souhaitez stocker l'état du déploiement Terraform.
Dans le plan
examples/gke-a3-megagpu/gke-a3-megagpu-deployment.yamldu dépôt GitHub, remplacez les variables suivantes dans les sectionsterraform_backend_defaultsetvarspour qu'elles correspondent aux valeurs spécifiques de votre déploiement :BUCKET: nom du bucket Cloud Storage que vous avez créé à l'étape précédente.DEPLOYMENT_NAME: nom unique du déploiement, qui doit comporter entre 6 et 30 caractères. Si le nom du déploiement n'est pas unique dans un projet, la création du cluster échoue.PROJECT_ID: ID de votre projet Google Cloud .REGION: région de calcul du cluster.ZONE: zone de calcul du pool de nœuds de machines A3 Mega. Cette zone doit correspondre à la zone où les machines sont disponibles dans votre réservation.AUTHORIZED_CIDR: plage d'adresses IP que vous souhaitez autoriser à se connecter au cluster. Ce bloc CIDR doit inclure l'adresse IP de la machine qui appelle Terraform. Pour en savoir plus, consultez Fonctionnement des réseaux autorisés. Pour obtenir l'adresse IP de votre machine hôte, exécutez la commandecurl -s https://ifconfig.me.
Choisissez une option de consommation pour votre déploiement GKE :
Par défaut, le fichier de déploiement est configuré pour utiliser des réservations standards ou futures. Pour utiliser un autre modèle de consommation (comme la capacité à la demande, les VM Spot ou le mode de provisionnement à démarrage flexible), mettez à jour votre fichier YAML de déploiement. Pour en savoir plus, consultez Options de consommation GKE.
Pour configurer une réservation, définissez les valeurs suivantes dans la section de réservation spécifique :
- Dans le bloc
reservation_affinity, dans la listespecific_reservations, spécifiez le champ de réservationname: - Pour placer le pool de nœuds n'importe où dans la réservation, indiquez le nom de votre réservation (
RESERVATION_NAME). Pour cibler un bloc spécifique dans votre réservation, utilisez les noms de la réservation et du bloc au format suivant :
RESERVATION_NAME/reservationBlocks/BLOCK_NAMESi vous ne savez pas quels blocs sont disponibles dans votre réservation, consultez Afficher la topologie d'une réservation.
STATIC_NODE_COUNT: nombre de nœuds A3 Mega dans votre cluster.
Pour modifier les paramètres avancés, modifiez le plan
examples/gke-a3-megagpu/gke-a3-megagpu.yamlà partir du dépôt GitHub.- Dans le bloc
Générez des identifiants par défaut de l'application (ADC) pour fournir un accès à Terraform. Si vous utilisez Cloud Shell, exécutez la commande
gcloud auth application-default login:gcloud auth application-default loginUtilisez la commande
gcluster deploypour déployer le plan et provisionner l'infrastructure GKE à l'aide des types de machines A3 Mega :cd ~/cluster-toolkit ./gcluster deploy -d \ examples/gke-a3-megagpu/gke-a3-megagpu-deployment.yaml \ examples/gke-a3-megagpu/gke-a3-megagpu.yamlLorsque vous y êtes invité, sélectionnez (A)pply pour déployer le plan. Le plan crée des réseaux VPC, des comptes de service, un cluster et un pool de nœuds.
A3 High
- Lancez Cloud Shell. Bien qu'il soit possible d'utiliser un autre environnement, nous vous recommandons d'utiliser Cloud Shell, car les dépendances sont déjà préinstallées pour Cluster Toolkit. Si vous ne souhaitez pas utiliser Cloud Shell, préparez un autre environnement en suivant les instructions pour installer les dépendances.
Créez un bucket Cloud Storage avec la gestion des versions activée pour stocker l'état de votre déploiement 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
Remplacez les variables suivantes :
BUCKET_NAME: nom du nouveau bucket Cloud Storage, qui doit respecter les exigences de dénomination des buckets.PROJECT_ID: ID de votre projet Google Cloud .COMPUTE_REGION_TERRAFORM_STATE: région de calcul dans laquelle vous souhaitez stocker l'état du déploiement Terraform.
Dans le plan
examples/gke-a3-highgpu/gke-a3-highgpu-deployment.yamldu dépôt GitHub, remplacez les variables suivantes dans les sectionsterraform_backend_defaultsetvarspour qu'elles correspondent aux valeurs spécifiques de votre déploiement :BUCKET: nom du bucket Cloud Storage que vous avez créé à l'étape précédente.DEPLOYMENT_NAME: nom unique du déploiement, qui doit comporter entre 6 et 30 caractères. Si le nom du déploiement n'est pas unique dans un projet, la création du cluster échoue.PROJECT_ID: ID de votre projet Google Cloud .REGION: région de calcul du cluster.ZONE: zone de calcul du pool de nœuds des machines A3 High. Cette zone doit correspondre à la zone où les machines sont disponibles dans votre réservation.AUTHORIZED_CIDR: plage d'adresses IP que vous souhaitez autoriser à se connecter au cluster. Ce bloc CIDR doit inclure l'adresse IP de la machine qui appelle Terraform. Pour en savoir plus, consultez Fonctionnement des réseaux autorisés. Pour obtenir l'adresse IP de votre machine hôte, exécutez la commandecurl -s https://ifconfig.me.
Choisissez une option de consommation pour votre déploiement GKE :
Par défaut, le fichier de déploiement est configuré pour utiliser des réservations standards ou futures. Pour utiliser un autre modèle de consommation (comme la capacité à la demande, les VM Spot ou le mode de provisionnement à démarrage flexible), mettez à jour votre fichier YAML de déploiement. Pour en savoir plus, consultez Options de consommation GKE.
Pour configurer une réservation, définissez les valeurs suivantes dans la section de réservation spécifique :
- Dans le bloc
reservation_affinity, dans la listespecific_reservations, spécifiez le champ de réservationname: - Pour placer le pool de nœuds n'importe où dans la réservation, indiquez le nom de votre réservation (
RESERVATION_NAME). Pour cibler un bloc spécifique dans votre réservation, utilisez les noms de la réservation et du bloc au format suivant :
RESERVATION_NAME/reservationBlocks/BLOCK_NAMESi vous ne savez pas quels blocs sont disponibles dans votre réservation, consultez Afficher la topologie d'une réservation.
STATIC_NODE_COUNT: nombre de nœuds A3 High dans votre cluster.
Pour modifier les paramètres avancés, modifiez le plan
examples/gke-a3-highgpu/gke-a3-highgpu.yamlà partir du dépôt GitHub.- Dans le bloc
Générez des identifiants par défaut de l'application (ADC) pour fournir un accès à Terraform. Si vous utilisez Cloud Shell, exécutez la commande
gcloud auth application-default login:gcloud auth application-default loginUtilisez la commande
gcluster deploypour déployer le plan et provisionner l'infrastructure GKE à l'aide de types de machines A3 High :cd ~/cluster-toolkit ./gcluster deploy -d \ examples/gke-a3-highgpu/gke-a3-highgpu-deployment.yaml \ examples/gke-a3-highgpu/gke-a3-highgpu.yamlLorsque vous y êtes invité, sélectionnez (A)pply pour déployer le plan. Le plan crée des réseaux VPC, des comptes de service, un cluster et un pool de nœuds.
Exécuter des exemples de jobs Dynamic Workload Scheduler
Si vous avez provisionné votre cluster à l'aide de Dynamic Workload Scheduler (provisionnement à démarrage flexible ou en file d'attente), vous pouvez valider la planification des charges de travail en envoyant des exemples de jobs Kubernetes.
Pour en savoir plus sur les modes de provisionnement de Dynamic Workload Scheduler, consultez Démarrage flexible de Dynamic Workload Scheduler avec provisionnement en file d'attente.
Envoyer un exemple de job
Sélectionnez l'onglet correspondant à votre option de consommation :
Démarrage flexible
Cette tâche est facultative et ne s'applique que si vous avez provisionné votre cluster avec le démarrage flexible. Les charges de travail configurées pour le démarrage flexible nécessitent le sélecteur de nœud cloud.google.com/gke-flex-start: "true" dans leur spécification de pod.
Envoyez l'exemple de job à démarrage flexible :
kubectl apply -f examples/dws-sample-workloads/sample-job-flex.yamlSurveillez l'état de votre job et de vos pods :
kubectl get jobs kubectl describe job JOB_NAME kubectl get pods kubectl describe pod POD_NAMERemplacez les éléments suivants :
JOB_NAME: nom de votre job.POD_NAME: nom de votre pod.
Une fois le job terminé, supprimez les ressources du job :
kubectl delete -f examples/dws-sample-workloads/sample-job-flex.yaml
Provisionnement en file d'attente
Cette tâche est facultative et ne s'applique que si vous avez provisionné votre cluster avec le provisionnement en file d'attente. Les charges de travail configurées pour le provisionnement en file d'attente nécessitent l'étiquette et l'annotation suivantes dans leur spécification de pod :
- Libellé :
kueue.x-k8s.io/queue-name: dws-local-queue - Annotation :
provreq.kueue.x-k8s.io/maxRunDurationSeconds: "MAX_RUN_DURATION"
Pour en savoir plus, consultez Exigences concernant le fichier manifeste de charge de travail pour le provisionnement en file d'attente.
Envoyez l'exemple de job de provisionnement en file d'attente :
kubectl apply -f examples/dws-sample-workloads/sample-job-flex-queue.yamlSurveillez l'état de votre job et de vos pods :
kubectl get jobs kubectl describe job JOB_NAME kubectl get pods kubectl describe pod POD_NAMERemplacez les éléments suivants :
JOB_NAME: nom de votre job.POD_NAME: nom de votre pod.
Une fois le job terminé, supprimez les ressources du job :
kubectl delete -f examples/dws-sample-workloads/sample-job-flex-queue.yaml
Testez les performances des réseaux
Nous vous recommandons de valider le fonctionnement des clusters provisionnés. Pour ce faire, utilisez les tests NCCL, qui sont des tests NVIDIA Collective Communications Library (NCCL) optimisés pour l'environnement Google.
Exécuter des benchmarks reproductibles
Après avoir créé un cluster à l'aide de Cluster Toolkit, vous pouvez reproduire des benchmarks de pré-entraînement pour de grands modèles ouverts de machine learning sur la série de machines de votre choix en suivant les recettes fournies sur GitHub.
Chaque recette vous fournit les instructions pour effectuer les tâches suivantes :
- Préparez votre environnement.
- Exécutez le benchmark.
- Analysez les résultats du benchmark. Cet examen inclut les résultats du benchmark et des journaux détaillés pour une analyse plus approfondie.
Pour afficher toutes les recettes disponibles pour l'entraînement et d'autres types de charges de travail, consultez le dépôt GitHub Recettes GPU.
Nettoyer les ressources créées par Cluster Toolkit
Pour éviter que les ressources utilisées sur cette page ne soient facturées de manière récurrente, utilisez la commande gcluster destroy pour nettoyer les ressources provisionnées par Cluster Toolkit, y compris les réseaux VPC et le cluster GKE :
cd ~/cluster-toolkit
./gcluster destroy CLUSTER_NAME/
Remplacez CLUSTER_NAME par le nom de votre cluster.
Pour les clusters créés avec Cluster Toolkit, le nom du cluster est basé sur le nom DEPLOYMENT_NAME.
Étapes suivantes
- Pour en savoir plus sur la planification des charges de travail sur vos clusters GKE à l'aide de l'ordonnancement basé sur la topologie (TAS) et de Kueue, consultez Planifier des charges de travail GKE avec l'ordonnancement basé sur la topologie.
- Pour en savoir plus sur la gestion des événements courants liés aux clusters GKE et aux charges de travail d'IA, consultez Gérer les clusters GKE optimisés pour l'IA.
- Pour savoir comment tester la configuration et l'optimisation de votre environnement, consultez Présentation de l'optimisation de la mise en réseau des clusters.
- Pour découvrir tous les modèles de consommation compatibles avec les clusters GKE, consultez Options de consommation GKE.