Créer un cluster

Si vous êtes intéressé par les clusters d'entraînement Gemini Enterprise Agent Platform, contactez votre conseiller commercial pour y accéder.

Cette page décrit la méthode directe, basée sur l'API, pour créer et gérer un cluster d'entraînement. Vous apprendrez à définir la configuration complète de votre cluster, y compris les nœuds de connexion, les partitions GPU hautes performances comme l'A4 et les paramètres de l'orchestrateur Slurm, dans un fichier JSON. Vous découvrirez également comment utiliser curl et les appels d'API REST pour déployer cette configuration, créer le cluster et gérer son cycle de vie avec les opérations GET, LIST, UPDATE et DELETE.

Définir la configuration du cluster

Créez un fichier JSON pour définir la configuration complète de votre cluster d'entraînement.

Si votre règle d'administration interdit les adresses IP publiques sur les instances de calcul, déployez le cluster d'entraînement avec le paramètre enable_public_ips: false et utilisez Cloud NAT pour la sortie Internet.

La première étape du provisionnement d'un cluster d'entraînement consiste à définir sa configuration complète dans un fichier JSON. Ce fichier sert de plan pour votre cluster, en spécifiant tout, de son nom et de ses paramètres réseau au matériel pour ses nœuds de connexion et de calcul.

La section suivante fournit plusieurs fichiers de configuration JSON complets qui servent de modèles pratiques pour divers cas d'utilisation courants. Consultez cette liste pour trouver l'exemple qui correspond le mieux à vos besoins et utilisez-le comme point de départ.

Chaque exemple est suivi d'une description détaillée des principaux paramètres utilisés dans cette configuration spécifique.

GPU avec Filestore uniquement

Il s'agit de la configuration standard. Il fournit une instance Filestore qui sert de répertoire /home pour le cluster, adaptée à une utilisation générale et au stockage des données utilisateur.

L'exemple suivant montre le contenu de gpu-filestore.json. Cette spécification crée un cluster avec une partition de GPU. Vous pouvez l'utiliser comme modèle et modifier des valeurs telles que machineType ou nodeCount en fonction de vos besoins.

Pour obtenir la liste des paramètres, consultez la documentation de référence sur les paramètres.

 {
  "display_name": "DISPLAY_NAME",
  "network": {
    "network": "projects/PROJECT_ID/global/networks/NETWORK",
    "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK"
  },
  "node_pools": [
    {
      "id": "login",
      "machine_spec": {
        "machine_type": "n2-standard-8"
      },
      "scaling_spec": {
        "min_node_count": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "enable_public_ips": true,
      "zone": "ZONE",
      "boot_disk": {
        "boot_disk_type": "pd-standard",
        "boot_disk_size_gb": 200
      },
      "labels": { "example-key": "example-value" }
    },
    {
      "id": "a4",
      "machine_spec": {
        "machine_type": "a4-highgpu-8g",
        "accelerator_type": "NVIDIA_B200",
        "accelerator_count": 8,
        "reservation_affinity": {
          "reservationAffinityType": "RESERVATION_AFFINITY_TYPE",
          "key": "compute.googleapis.com/reservation-name",
          "values": [
            "projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME"
          ]
        }
      },
      "provisioning_model": "RESERVATION",
      "scaling_spec": {
        "min_node_count": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "enable_public_ips": true,
      "zone": "ZONE",
      "boot_disk": {
        "boot_disk_type": "hyperdisk-balanced",
        "boot_disk_size_gb": 200
      },
      "labels": { "example-key": "example-value" }
    }
  ],
  "orchestrator_spec": {
    "slurm_spec": {
      "home_directory_storage": "projects/PROJECT_ID/locations/ZONE/instances/FILESTORE",
      "partitions": [
        {
          "id": "a4",
          "node_pool_ids": [
            "a4"
          ]
        }
      ],
      "login_node_pool_id": "login"
    }
  }
}

GPU avec Filestore et Managed Lustre

Cette configuration avancée inclut l'instance Filestore standard en plus d'un système de fichiers Lustre hautes performances. Choisissez cette option si vos jobs d'entraînement nécessitent un accès à haut débit à de grands ensembles de données.

Pour obtenir la liste des paramètres, consultez la documentation de référence sur les paramètres.

{
  "display_name": "DISPLAY_NAME",
  "network": {
    "network": "projects/PROJECT_ID/global/networks/NETWORK",
    "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK"
  },
  "node_pools": [
    {
      "id": "login",
      "machine_spec": {
        "machine_type": "n2-standard-8"
      },
      "scaling_spec": {
        "min_node_count": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "enable_public_ips": true,
      "zone": "ZONE",
      "boot_disk": {
        "boot_disk_type": "pd-standard",
        "boot_disk_size_gb": 200
      },
      "lustres": [
        "projects/PROJECT_ID/locations/ZONE/instances/LUSTRE"
      ]
    },
    {
      "id": "a4",
      "machine_spec": {
        "machine_type": "a4-highgpu-8g",
        "accelerator_type": "NVIDIA_B200",
        "accelerator_count": 8,
        "reservation_affinity": {
          "reservationAffinityType": "RESERVATION_AFFINITY_TYPE",
          "key": "compute.googleapis.com/reservation-name",
          "values": [
            "projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME"
          ]
        }
      },
      "provisioning_model": "RESERVATION",
      "scaling_spec": {
        "min_node_count": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "enable_public_ips": true,
      "zone": "ZONE",
      "boot_disk": {
        "boot_disk_type": "hyperdisk-balanced",
        "boot_disk_size_gb": 200
      },
      "lustres": [
        "projects/PROJECT_ID/locations/ZONE/instances/LUSTRE"
      ]
    }
  ],
  "orchestrator_spec": {
    "slurm_spec": {
      "home_directory_storage": "projects/PROJECT_ID/locations/ZONE/instances/FILESTORE",
      "partitions": [
        {
          "id": "a4",
          "node_pool_ids": [
            "a4"
          ]
        }
      ],
      "login_node_pool_id": "login"
    }
  }
}
  

GPU avec script de démarrage

Cet exemple montre comment ajouter un script personnalisé à un pool de nœuds. Ce script s'exécute sur tous les nœuds de ce pool au démarrage. Pour ce faire, ajoutez les champs appropriés à la définition de votre pool de nœuds en plus des paramètres généraux. Pour obtenir la liste des paramètres et leur description, consultez la documentation de référence sur les paramètres.

{
  "display_name": "DISPLAY_NAME",
  "network": {
    "network": "projects/PROJECT_ID/global/networks/NETWORK",
    "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK"
  },
  "node_pools": [
    {
      "id": "login",
      "machine_spec": {
        "machine_type": "n2-standard-8"
      },
      "scaling_spec": {
        "min_node_count": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "enable_public_ips": true,
      "zone": "ZONE",
      "boot_disk": {
        "boot_disk_type": "pd-standard",
        "boot_disk_size_gb": 200
      },
      "startup_script" : "#Example script\nsudo mkdir -p /data\necho 'Script Finished'\n"
    },
    {
      "id": "a4",
      "machine_spec": {
        "machine_type": "a4-highgpu-8g",
        "accelerator_type": "NVIDIA_B200",
        "accelerator_count": 8,
        "reservation_affinity": {
          "reservationAffinityType": "RESERVATION_AFFINITY_TYPE",
          "key": "compute.googleapis.com/reservation-name",
          "values": [
            "projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME"
          ]
        }
      },
      "provisioning_model": "PROVISIONING_MODEL",
      "scaling_spec": {
        "min_node_count": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "enable_public_ips": true,
      "zone": "ZONE",
      "boot_disk": {
        "boot_disk_type": "hyperdisk-balanced",
        "boot_disk_size_gb": 200
      },
      "startup_script" : "#Example script\nsudo mkdir -p /data\necho 'Script Finished'\n"
    }
  ],
  "orchestrator_spec": {
    "slurm_spec": {
      "home_directory_storage": "projects/PROJECT_ID/locations/ZONE/instances/FILESTORE",
      "partitions": [
        {
          "id": "a4",
          "node_pool_ids": [
            "a4"
          ]
        }
      ],
      "login_node_pool_id": "login"
    }
  }
}

Cluster CPU uniquement

Pour provisionner un environnement de cluster d'entraînement, vous devez d'abord définir sa configuration complète dans un fichier JSON. Ce fichier sert de modèle pour votre cluster. Il spécifie tout, de son nom et de ses paramètres réseau au matériel de ses nœuds de connexion et de calcul.

Pour obtenir la liste des paramètres, consultez la documentation de référence sur les paramètres.

{
  "display_name": "DISPLAY_NAME",
  "network": {
    "network": "projects/PROJECT_ID/global/networks/NETWORK",
    "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK"
  },
  "node_pools": [
    {
      "id": "cpu",
      "machine_spec": {
        "machine_type": "n2-standard-8"
      },
      "scaling_spec": {
        "min_node_count": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "zone": "ZONE",
      "enable_public_ips": true,
      "boot_disk": {
        "boot_disk_type": "pd-standard",
        "boot_disk_size_gb": 120
      }
    },
    {
      "id": "login",
      "machine_spec": {
        "machine_type": "n2-standard-8"
      },
      "scaling_spec": {
        "min_node_count": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "zone": "ZONE",
      "enable_public_ips": true,
      "boot_disk": {
        "boot_disk_type": "pd-standard",
        "boot_disk_size_gb": 120
      }
    }
  ],
  "orchestrator_spec": {
    "slurm_spec": {
      "home_directory_storage": "projects/PROJECT_ID/locations/ZONE/instances/FILESTORE",
      "partitions": [
        {
          "id": "cpu",
          "node_pool_ids": [
            "cpu"
          ]
        }
      ],
      "login_node_pool_id": "login"
    }
  }
}

Configuration Slurm avancée

Cet exemple permet de contrôler précisément Slurm en définissant les paramètres slurm.conf par nom, et en exécutant des scripts prolog et epilog pour configurer et nettoyer automatiquement les jobs. Les paramètres peuvent être définis à l'échelle du cluster, pour une seule partition ou pour un seul pool de nœuds.

Il existe trois mappages de configuration, un pour chaque enregistrement slurm.conf :

  • config dans la spécification Slurm pour les paramètres à l'échelle du cluster
  • config sur une partition
  • Entrée node_sets pour un pool de nœuds

Pour connaître les règles concernant les noms et les valeurs des paramètres, ainsi que les paramètres refusés, consultez ConfigMaps Slurm.

Vous n'avez pas besoin de les définir au moment de la création. Les trois mappages peuvent être modifiés sur un cluster en cours d'exécution, sans redémarrer les nœuds ni interrompre les tâches en file d'attente. Consultez Mettre à jour les paramètres de configuration de Slurm.

{
  "display_name": "DISPLAY_NAME",
  "network": {
    "network": "projects/PROJECT_ID/global/networks/NETWORK",
    "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK"
  },
  "node_pools": [
    {
      "id": "cpu",
      "machine_spec": {
        "machine_type": "n2-standard-8"
      },
      "scaling_spec": {
        "min_node_count": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "zone": "ZONE",
      "enable_public_ips": true,
      "boot_disk": {
        "boot_disk_type": "pd-standard",
        "boot_disk_size_gb": 120
      }
    },
    {
      "id": "login",
      "machine_spec": {
        "machine_type": "n2-standard-8"
      },
      "scaling_spec": {
        "min_node_count": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "zone": "ZONE",
      "enable_public_ips": true,
      "boot_disk": {
        "boot_disk_type": "pd-standard",
        "boot_disk_size_gb": 120
      }
    }
  ],
  "orchestrator_spec": {
    "slurm_spec": {
      "home_directory_storage": "projects/PROJECT_ID/locations/ZONE/instances/FILESTORE",
      "config": {
        "PriorityType": "priority/multifactor",
        "PriorityWeightAge": "1000",
        "PriorityWeightFairshare": "10000",
        "PreemptType": "preempt/partition_prio",
        "PreemptMode": "SUSPEND,GANG",
        "SchedulerParameters": "bf_continue,bf_window=1440,bf_resolution=600",
        "AccountingStorageEnforce": "limits,qos"
      },
      "prolog_bash_scripts": [
        "#!/bin/bash\necho 'Prolog script running'"
      ],
      "epilog_bash_scripts": [
        "#!/bin/bash\necho 'Epilog script running'"
      ],
      "partitions": [
        {
          "id": "cpu",
          "node_pool_ids": [
            "cpu"
          ],
          "config": {
            "MaxTime": "4-00:00:00",
            "DefMemPerCPU": "4096",
            "PriorityTier": "20"
          }
        }
      ],
      "node_sets": [
        {
          "node_pool_id": "cpu",
          "config": {
            "Weight": "10",
            "Features": "cpu,spot"
          }
        }
      ],
      "login_node_pool_id": "login"
    }
  }
}

La carte au niveau du cluster définit la priorité multifactorielle, la préemption de priorité de partition et SchedulerParameters, dont le terme bf_continue affiche la forme composite : un terme nu active un indicateur et les termes sont séparés par une virgule. La partition limite l'environnement d'exécution du job et la mémoire par défaut pour la partition cpu uniquement, et l'entrée node_sets étiquette les nœuds de ce pool afin que les jobs puissent les sélectionner avec --constraint.

Une fois votre cluster défini dans un fichier JSON, utilisez les commandes de l'API REST suivantes pour le déployer et le gérer. Les exemples utilisent un alias gcurl, qui est un raccourci authentifié pratique pour interagir avec les points de terminaison de l'API. Ces commandes couvrent l'intégralité du cycle de vie, du déploiement initial de votre cluster à la mise à jour d'un cluster, en passant par l'obtention de son état, l'affichage de tous les clusters et, enfin, la suppression du cluster.

Authentification

alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'

Créer un fichier JSON

Créez un fichier JSON (par exemple, @cpu-cluster.json) pour spécifier la configuration de votre cluster d'entraînement de modèle.

Déployer le cluster

Une fois le fichier de configuration JSON créé, vous pouvez déployer le cluster à l'aide de l'API REST.

Définir des variables d'environnement

Avant d'exécuter la commande, définissez les variables d'environnement suivantes. Cela rend la commande d'API plus claire et plus facile à gérer.

  • PROJECT_ID : ID du projet Google Cloud dans lequel le cluster sera créé.
  • REGION : région Google Cloud du cluster et de ses ressources.
  • ZONE : Google Cloud zone dans laquelle les ressources du cluster seront provisionnées.
  • CLUSTER_ID : identifiant unique de votre cluster d'entraînement, qui est également utilisé comme préfixe pour nommer les ressources associées.

Exécuter la commande de création

Exécutez maintenant la commande gcurl suivante. Il utilise le fichier JSON (dans cet exemple, cpu-cluster.json) comme corps de la requête, ainsi que les variables d'environnement que vous venez de définir pour construire le point de terminaison de l'API et les paramètres de requête.

  gcurl -X POST -d @cpu-cluster.json https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/modelDevelopmentClusters?model_development_cluster_id=CLUSTER_ID
    

Une fois le déploiement lancé, un ID d'opération est généré. Veillez à copier cet ID. Vous en aurez besoin pour valider votre cluster à l'étape suivante.

  gcurl -X POST -d @cpu-cluster.json https://us-central1-aiplatform.googleapis.com/v1beta1/projects/managedtraining-project/locations/us-central1/modelDevelopmentClusters?model_development_cluster_id=training
  {
      "name": "projects/1059558423163/locations/us-central1/operations/2995239222190800896",
      "metadata": {
      "@type": "type.googleapis.com/google.cloud.aiplatform.v1beta1.CreateModelDevelopmentClusterOperationMetadata",
      "genericMetadata": {
        "createTime": "2025-10-24T14:16:59.233332Z",
        "updateTime": "2025-10-24T14:16:59.233332Z"
      },
      "progressMessage": "Create Model Development Cluster request received, provisioning..."
  }
    

Valider le déploiement du cluster

Suivez la progression du déploiement à l'aide de l'ID d'opération fourni lors du déploiement du cluster. Par exemple, 2995239222190800896 est l'ID d'opération dans l'exemple cité précédemment.

    gcurl https://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
    

En résumé

L'envoi de la configuration de votre cluster à l'aide de la commande POST gcurl lance le provisionnement de votre cluster, qui est une opération asynchrone de longue durée. L'API renvoie immédiatement une réponse contenant un Operation ID. Il est essentiel d'enregistrer cet ID, car vous l'utiliserez dans les étapes suivantes pour surveiller la progression du déploiement, vérifier que le cluster a bien été créé et gérer son cycle de vie.

Référence de paramètre

La liste suivante décrit tous les paramètres utilisés dans les exemples de configuration. Les paramètres sont organisés en groupes logiques en fonction de la ressource qu'ils configurent.

Paramètres généraux et réseau

  • DISPLAY_NAME : nom unique de votre cluster d'entraînement. La chaîne ne peut contenir que des caractères alphanumériques minuscules, doit commencer par une lettre et est limitée à 10 caractères.
  • PROJECT_ID : ID de votre projet Google Cloud .
  • REGION : région Google Cloud dans laquelle se trouveront le cluster et ses ressources.
  • NETWORK : réseau cloud privé virtuel à utiliser pour les ressources du cluster.
  • ZONE : Google Cloud zone du cluster et de ses ressources.
  • SUBNETWORK : sous-réseau à utiliser pour les ressources du cluster.

Configuration du pool de nœuds

Les paramètres suivants permettent de définir les pools de nœuds pour les nœuds de connexion et les nœuds de calcul.

Paramètres courants des pools de nœuds

  • ID : identifiant unique du pool de nœuds dans le cluster (par exemple, "login", "a4", "cpu").
  • PROVISIONING_MODEL : modèle de provisionnement du nœud de calcul (par exemple, ON_DEMAND, SPOT, RESERVATION, FLEX_START).
  • MACHINE_TYPE : type de machine pour le nœud de calcul (par exemple, a3-highgpu-8g, a3-megagpu-8g, a3-ultragpu-8g, a4-highgpu-8g). Pour obtenir la liste complète des types de machines compatibles, consultez Ressources de calcul.
  • MIN_NODE_COUNT : MIN_NODE_COUNT doit être identique à MAX_NODE_COUNT.
  • MAX_NODE_COUNT : pour le pool de nœuds de connexion, la valeur de MAX_NODE_COUNT doit être identique à celle de MIN_NODE_COUNT.
  • ENABLE_PUBLIC_IPS : valeur booléenne (true ou false) permettant de déterminer si le nœud de connexion possède une adresse IP publique.
  • BOOT_DISK_TYPE : type de disque de démarrage du nœud de connexion (par exemple, pd-standard, pd-ssd).
  • BOOT_DISK_SIZE_GB : taille du disque de démarrage en Go pour le nœud de connexion.
  • LABELS : ensemble de paires clé/valeur pour étiqueter le pool de nœuds.
  • NODE_IMAGE (correspond à node_image dans un objet node_pools) : image de VM à partir de laquelle les nœuds du pool de nœuds démarrent, en tant que chemin d'accès complet à la ressource d'image ou de famille d'images (par exemple, projects/IMAGE_PROJECT/global/images/IMAGE ou projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY ). Si vous l'omettez, le pool de nœuds utilise l'image par défaut actuelle pour son type de machine, qui évolue au fil du temps. Définissez-le pour conserver le pool de nœuds sur une image spécifique. La modification de l'image d'un pool de nœuds recrée ses nœuds.

Paramètres de stockage supplémentaire

  • FILESTORES (correspond à filestores dans un objet node_pools) : liste des instances Filestore préexistantes à installer sur le pool de nœuds pour l'accès aux fichiers partagés.
  • LUSTRES (correspond à lustres dans un objet node_pools) : liste des instances Lustre préexistantes à installer sur le pool de nœuds pour un accès aux fichiers hautes performances.

Paramètres spécifiques aux nœuds de calcul

  • ACCELERATOR_TYPE : accélérateur GPU correspondant à associer aux nœuds de calcul. Voici les valeurs acceptées :
    • NVIDIA_H100_80GB
    • NVIDIA_H100_MEGA_80GB
    • NVIDIA_H200_141GB
    • NVIDIA_B200
  • ACCELERATOR_COUNT : nombre d'accélérateurs à associer à chaque nœud de calcul.
  • RESERVATION_AFFINITY_TYPE (correspond à machine_spec.reservation_affinity.reservationAffinityType) : affinité de réservation pour le pool de nœuds. Ce paramètre doit être SPECIFIC_RESERVATION, qui est la seule valeur acceptée. Lorsque SPECIFIC_RESERVATION est utilisé, vous devez spécifier la réservation dans machine_spec.reservation_affinity.values.
  • RESERVATION_NAME : nom de la réservation à utiliser pour le pool de nœuds. Il est utilisé dans le nom complet de la ressource de réservation fourni dans machine_spec.reservation_affinity.values, par exemple projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME. Une réservation est requise lorsque RESERVATION_AFFINITY_TYPE est défini sur SPECIFIC_RESERVATION.

Configuration de l'outil d'orchestration et du stockage

Ces champs sont définis dans le bloc orchestrator_spec.slurm_spec du fichier JSON.

Paramètres principaux de Slurm et de Storage

  • HOME_DIRECTORY_STORAGE (correspond à home_directory_storage) : nom complet de la ressource de l'instance Filestore préexistante à installer en tant que répertoire /home.
  • LOGIN_NODE_POOL_ID (correspond à login_node_pool_id) : ID du pool de nœuds à utiliser pour les nœuds de connexion.
  • partitions : liste d'objets de partition, où chaque objet nécessite un id et une liste de node_pool_ids.
  • default_partition_id (facultatif) : id de la partition utilisée pour exécuter les jobs Slurm lorsqu'aucune partition n'est explicitement spécifiée (par exemple, lors de l'exécution de sbatch sans l'option --partition). Si ce champ n'est pas défini, la première partition de la liste des partitions devient la partition par défaut. Par conséquent, la réorganisation de la liste modifie la partition par défaut.

Paramètres Slurm avancés

  • prolog_bash_scripts : liste de chaînes, où chaque chaîne contient l'intégralité du contenu d'un script Bash à exécuter avant le début d'un job.
  • epilog_bash_scripts : liste de chaînes, où chaque chaîne contient le contenu complet d'un script Bash à exécuter une fois qu'un job est terminé.
  • config, partitions[].config et node_sets : paramètres Slurm définis par nom. Consultez ConfigMaps Slurm.
  • scheduling et accounting : remplacés. Ces deux objets exposent un ensemble fixe de paramètres de priorité, de préemption et de comptabilité, chacun pouvant être défini par son nom dans la carte config au niveau du cluster (priority_type en tant que "PriorityType", preempt_mode en tant que "PreemptMode", etc.). Elles fonctionnent toujours pour les clusters qui les utilisent, mais les nouveaux clusters doivent utiliser config, qui accepte beaucoup plus de paramètres slurm.conf que ce sous-ensemble.

ConfigMaps Slurm

Les paramètres Slurm sont définis par nom, dans trois mappages, un pour chaque enregistrement slurm.conf :

  • config : paramètres à l'échelle du cluster, écrits sous forme de lignes Key=Value globales.
  • partitions[].config : paramètres d'une partition, écrits sous forme de paires supplémentaires sur la ligne PartitionName= de cette partition.
  • node_sets : liste d'objets, chacun avec un mappage node_pool_id et config. Les paramètres sont écrits sous forme de paires supplémentaires sur la ligne NodeName= pour les nœuds de ce pool de nœuds. Une entrée au maximum par pool de nœuds. Le pool doit être un pool de calcul du cluster, et non le pool de connexion.

Dans les trois cas, les clés sont des noms de paramètres Slurm, tels que documentés par SchedMD, sans correspondance de casse et en ignorant les traits de soulignement. Ainsi, DefMemPerCPU, defmempercpu et def_mem_per_cpu désignent tous le même paramètre. Les valeurs sont écrites de la même manière que slurm.conf les écrit, y compris les listes d'éléments séparés par une virgule telles que "PreemptMode": "SUSPEND,GANG" et les valeurs composites telles que "SchedulerParameters": "bf_window=1440,bf_resolution=600".

Chaque mappage accepte un sous-ensemble des paramètres slurm.conf valides pour son enregistrement, mais pas tous. Si vous avez besoin d'un paramètre non compatible, contactez votre contact pour les clusters d'entraînement Gemini Enterprise Agent Platform.

Un paramètre qui n'est pas accepté dans le champ d'application que vous avez défini, ou une valeur qui n'est pas autorisée pour ce paramètre, est rejeté lorsque vous effectuez la requête, et l'erreur nomme le paramètre. Rien n'est supprimé de manière silencieuse. Certains paramètres sont refusés pour une raison spécifique :

  • Le service gère la vérification de l'état des nœuds et la remise en file d'attente des jobs. Par conséquent, HealthCheckProgram, HealthCheckInterval, HealthCheckNodeState et RequeueExit ne peuvent pas être définis.
  • Prolog et Epilog sont définis via prolog_bash_scripts et epilog_bash_scripts à la place.
  • Les paramètres slurmdbd.conf, tels que StorageHost et PurgeJobAfter, ne sont pas configurables : la base de données de comptabilité est gérée par le service.
  • Au niveau de la partition, Default est refusé. La partition par défaut est un choix à l'échelle du cluster, défini avec default_partition_id.

Configuration de l'environnement d'exécution

Ces champs sont définis dans le bloc runtime_spec du fichier JSON.

  • service_account : compte de service par défaut utilisé par le cluster lors de l'exécution de charges de travail. Si aucune valeur n'est spécifiée, le compte de service Compute Engine par défaut est utilisé. Ce champ ne peut pas être modifié après la création du cluster.

Étapes suivantes

Utilisez votre cluster d'entraînement persistant actif pour exécuter vos charges de travail de machine learning.