Choisir la bonne configuration de stockage est essentiel pour les performances et la stabilité de votre cluster d'entraînement. Le service s'intègre à deux solutions de stockage distinctes et hautes performances :
- Filestore : service de fichiers géré obligatoire qui fournit les répertoires
/homepartagés pour tous les nœuds du cluster. - Google Cloud Managed Lustre : système de fichiers parallèle facultatif conçu pour des performances d'E/S extrêmes, idéal pour l'entraînement sur des ensembles de données volumineux. Considérez-le comme un espace de stockage de travail hautes performances plutôt que comme un système d'enregistrement, et conservez Cloud Storage comme source fiable. Pour en savoir plus, consultez Sauvegarder des données Managed Lustre dans Cloud Storage.
Cette page présente un aperçu de leurs principales utilisations et décrit les exigences spécifiques en matière de mise en réseau et de déploiement pour une intégration réussie à votre cluster.
Intégration du stockage pour les clusters d'entraînement
Les clusters d'entraînement Gemini Enterprise Agent Platform s'appuient sur des solutions de stockage spécifiques en réseau pour leur fonctionnement. Filestore est nécessaire pour fournir les répertoires /home partagés pour le cluster, tandis que Managed Lustre est un système de fichiers hautes performances facultatif pour les charges de travail exigeantes.
Il est essentiel de configurer correctement la mise en réseau de ces services de stockage avant de déployer votre cluster.
Filestore pour les répertoires d'accueil
Ce service utilise une instance Filestore pour fournir le répertoire /home partagé pour le cluster. Pour garantir une connectivité appropriée, vous devez créer vos ressources cloud dans cet ordre spécifique :
- Créez le réseau VPC : commencez par déployer un réseau VPC configuré avec la MTU recommandée (par exemple, 8896).
- Créez l'instance Filestore : ensuite, déployez l'instance Filestore dans le VPC que vous venez de créer.
- Créez le cluster d'entraînement : enfin, déployez le cluster, qui pourra ensuite se connecter à l'instance Filestore au sein du même réseau.
Google Cloud Managed Lustre pour les charges de travail hautes performances
Pour les charges de travail qui nécessitent des performances d'E/S maximales, vous pouvez associer un système de fichiers Managed Lustre. Ce service se connecte à votre VPC à l'aide de l'accès aux services privés.
Managed Lustre est optimisé pour le débit plutôt que pour la durabilité. Une instance est zonale et ne dispose pas de fonctionnalité d'instantané, de sauvegarde ou de restauration. Sauvegardez dans Cloud Storage tout ce que vous ne pouvez pas régénérer. Pour en savoir plus, consultez Sauvegarder des données Managed Lustre dans Cloud Storage.
Sauvegarder des données Managed Lustre dans Cloud Storage
Conservez Cloud Storage comme source fiable derrière Managed Lustre. Cela protège vos points de contrôle et vous permet de récupérer rapidement les données en cas d'échec ou de suppression d'une instance.
Managed Lustre inclut un transfert intégré à haut débit qui exporte directement vers Cloud Storage. Les transferts sont incrémentiels : chaque exécution ne copie que les fichiers qui n'existent pas déjà dans la destination ou qui ont été modifiés depuis le dernier transfert.
Deux identités ont besoin d'autorisations. L'utilisateur ou le compte de service qui démarre l'
exportation a besoin de lustre.instances.exportData, qui est inclus dans le
roles/lustre.admin rôle ou que vous pouvez accorder via un
rôle personnalisé. L'agent de service Managed Lustre a besoin d'un accès en écriture distinct au bucket de destination.
Accordez à l'agent de service Managed Lustre un accès en écriture au bucket de destination. Vous n'aurez besoin d'effectuer cette opération qu'une fois par bucket :
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-lustre.s3ns-system.iam.gserviceaccount.com \ --role=roles/storage.objectUserOù :
- BUCKET_NAME est le bucket de destination.
- PROJECT_NUMBER est le numéro du projet contenant l' instance Managed Lustre. Pour en savoir plus, consultez Autorisations pour l'agent de service Managed Lustre.
Exportez le système de fichiers vers le bucket :
gcloud lustre instances export-data INSTANCE_ID \ --location=ZONE \ --lustre-path="/" \ --gcs-path-uri="gs://BUCKET_NAME/INSTANCE_ID/"Où :
- INSTANCE_ID est le nom de l' instance Managed Lustre à sauvegarder.
- ZONE est la zone de l'instance, par exemple
us-central1-a.
La valeur
--gcs-path-uripeut être un bucket seul ou un chemin d'accès dans un bucket. Si vous incluez un chemin d'accès, il doit se terminer par une barre oblique. L'exportation de chaque instance vers un chemin d'accès portant son nom permet de les séparer : si vous associez plusieurs instances Managed Lustre au cluster, attribuez à chacune son propre chemin d'accès, car deux instances qui exportent vers le même chemin d'accès écrasent les fichiers de l'autre.
Pour que la sauvegarde soit à jour, exécutez l'exportation selon une planification. Par exemple, vous pouvez exécuter un job Cron quotidien sur un nœud de connexion au lieu de l'exécuter uniquement à la fin d'un cycle d'entraînement. Étant donné que les transferts sont incrémentiels, chaque exécution après la première ne copie que les éléments modifiés.
Tenez compte des points suivants lorsque vous planifiez une sauvegarde :
- Une seule opération de transfert par instance peut être active à la fois. Un transfert démarré alors qu'un autre est toujours en cours échoue avec le message
ABORTED: unable to queue the operation. - L'exportation ne supprime jamais d'objets de la destination. Par conséquent, un fichier que vous supprimez sur Managed Lustre reste dans le bucket. Activez la gestion des versions des objets sur le bucket de destination afin de pouvoir également récupérer un fichier qui a été écrasé par du contenu indésirable.
- Les liens symboliques, les répertoires vides et les mises en page en bandes définies avec
lfs setstripene sont pas conservés, et les liens physiques sont exportés en tant qu'objets distincts. Par conséquent, un fichier lié physiquement consomme de l'espace une fois par lien dans le bucket. L'UID, le GID, le mode et le mtime POSIX sont conservés en tant que métadonnées d'objet personnalisées. - Écrivez les points de contrôle de manière atomique : écrivez dans un chemin d'accès temporaire, puis renommez le fichier sur place. Ainsi, une exportation en cours d'écriture capture soit le fichier précédent, soit le nouveau fichier complet, et jamais un fichier partiel.
Pour effectuer une restauration, créez une instance Managed Lustre et chargez les données avec gcloud lustre instances import-data. Pour en savoir plus, consultez
Transférer des données vers ou depuis Cloud Storage.
Limitation critique de la mise en réseau : pas d'appairage transitif
Une limitation critique pour Filestore et Google Cloud Managed Lustre est qu'ils ne sont pas compatibles avec l'appairage transitif. Cela signifie que seules les ressources du VPC directement connecté peuvent accéder au service de stockage. Par exemple, si le VPC de votre cluster (N1) est appairé avec le service de stockage, un autre VPC (N2) appairé avec N1 n'y aura pas accès.
Intégration du stockage pour les clusters d'entraînement
Les clusters d'entraînement Gemini Enterprise Agent Platform s'appuient sur des solutions de stockage spécifiques en réseau pour leur fonctionnement. Filestore est nécessaire pour fournir les répertoires /home partagés pour le cluster, tandis que Google Cloud Managed Lustre est un système de fichiers hautes performances facultatif pour les charges de travail exigeantes.
Il est essentiel de configurer correctement la mise en réseau de ces services de stockage avant de déployer votre cluster.
Filestore
Principales utilisations de Filestore avec les clusters d'entraînement
Au-delà de son rôle de répertoire d'accueil obligatoire, Filestore offre un moyen flexible de partager des données avec votre cluster.
Espace de stockage partagé supplémentaire : vous pouvez associer une ou plusieurs instances Filestore
supplémentaires à n'importe quel pool de nœuds. Cela est utile pour fournir des ensembles de données partagés, des binaires d'application,
ou d'autres fichiers courants à vos jobs d'entraînement. Lorsqu'ils sont spécifiés dans la configuration du pool de nœuds,
les clusters d'entraînement installent automatiquement ces instances dans le
/mnt/filestore répertoire de chaque nœud.
Exigences de Filestore
Pour que l'intégration de Filestore aux clusters d'entraînement soit réussie, la configuration suivante est requise :
- Activer l'API : l'API Filestore doit être activée dans votre projet Google Cloud avant de pouvoir créer le cluster.
- Répertoire
/homeobligatoire : chaque cluster d'entraînement nécessite une instance Filestore dédiée pour servir de répertoire/homepartagé. Cette instance présente des exigences de configuration spécifiques :- Réseau : elle doit résider dans le même réseau VPC que les nœuds de calcul et de connexion du cluster.
- Emplacement : elle doit se trouver dans la même région ou zone que le cluster.
- Configuration : vous devez spécifier le nom complet de la ressource de cette instance dans le champ
lorsque vous créez le cluster via l'API.orchestrator_spec.slurm_spec.home_directory_storage
Configurer le stockage Filestore
Créez une instance Filestore zonale ou régionale dans la zone où vous souhaitez créer le cluster. L'API Agent Platform nécessite qu'un Filestore soit associé au cluster pour servir de répertoire /home.
Ce Filestore doit se trouver dans la même zone ou région et dans le même réseau que tous les nœuds de calcul et de connexion. Dans l'exemple ci-dessous, 172.16.10.0/24 est utilisé pour le déploiement Filestore.
SERVICE_TIER=ZONAL # Can use BASIC_SSD # Create reserved IP address range gcloud compute addresses create CLUSTER_IDfs-ip-range \ --project=PROJECT_ID \ --global \ --purpose=VPC_PEERING \ --addresses=172.16.10.0 \ --prefix-length=24 \ --description="Filestore instance reserved IP range" \ --network=NETWORK # Get the CIDR range FS_IP_RANGE=$( gcloud compute addresses describe CLUSTER_IDfs-ip-range \ --global \ --format="value[separator=/](address, prefixLength)" ) # Create the Filestore instance gcloud filestore instances create FS_INSTANCE_ID \ --project=PROJECT_ID \ --location=ZONE \ --tier=ZONAL \ --file-share=name="nfsshare",capacity=1024 \ --network=name=NETWORK,connect-mode=DIRECT_PEERING,reserved-ip-range="${FS_IP_RANGE}"
Lustre
Google Cloud Managed Lustre fournit un système de fichiers parallèle hautes performances et entièrement géré, optimisé pour les applications d'IA et de HPC. Avec une capacité de plusieurs pétaoctets et un débit allant jusqu'à 1 Tbit/s, Managed Lustre facilite la migration des charges de travail exigeantes vers le cloud.
Les instances Managed Lustre résident dans
des zones à l'intérieur de régions. Une région est un emplacement géographique spécifique au sein duquel vous pouvez exécuter vos ressources. Chaque région est subdivisée en plusieurs zones. Par exemple, la région us-central1 du centre des États-Unis comporte les zones
us-central1-a, us-central1-b, us-central1-c et us-central1-f. Pour en savoir plus, consultez
Zones géographiques et régions.
Pour réduire la latence du réseau, nous vous recommandons de créer une instance Managed Lustre dans une région et une zone proches de l'endroit où vous prévoyez de l'utiliser.
Lorsque vous créez une instance Managed Lustre, vous devez définir les propriétés suivantes :
- Nom de l'instance utilisé par Google Cloud.
- Nom du système de fichiers utilisé par les outils côté client, par exemple
lfs. - Capacité de stockage en gibioctets (Gio). La capacité peut aller de 9 000 Gio à environ 8 Pio (7 632 000 Gio). La taille maximale d'une instance dépend de son niveau de performances.
- Managed Lustre propose des niveaux de performances allant de 125 Mo/s par Tio à 1 000 Mo/s par Tio.
- Pour des performances optimales, créez votre instance dans la même zone que votre cluster d'entraînement.
- Le réseau VPC de cette instance doit être le même que celui utilisé par votre cluster d'entraînement.
Managed Lustre propose quatre niveaux de performances, chacun avec une vitesse de débit maximale différente par Tio. Les niveaux de performances affectent également la taille minimale et maximale de l'instance, ainsi que la taille d'incrément entre les valeurs de capacité acceptables. Vous ne pouvez pas modifier le niveau de performances d'une instance après sa création.
Le déploiement de Managed Lustre nécessite l'accès aux services privés, qui établit l'appairage de VPC entre le VPC du cluster d'entraînement et le VPC hébergeant Managed Lustre, à l'aide d'un sous-réseau /20 dédié.
Configurer l'instance Managed Lustre (facultatif)
N'utilisez Google Cloud Managed Lustre que si vous souhaitez utiliser Managed Lustre dans Model Development Service.
Google Cloud Managed Lustre est un service de système de fichiers parallèle hautes performances entièrement géré sur Google Cloud. Il est spécialement conçu pour accélérer les charges de travail exigeantes dans les domaines de l'IA/du machine learning et du calcul hautes performances (HPC).
Pour des performances optimales lors de l'utilisation de clusters d'entraînement, Google Cloud Managed Lustre doit être déployé à partir du même VPC et de la même zone que votre cluster d'entraînement à l'aide de l'appairage de VPC pour la mise en réseau des services.
Créer une instance Lustre
gcloud lustre instances create LUSTRE_INSTANCE_ID \
--project=PROJECT_ID \
--location=ZONE \
--filesystem=lustrefs \
--per-unit-storage-throughput=500 \
--capacity-gib=36000 \
--network=NETWORK_NAME
Installation de Cloud Storage
Comme condition préalable, assurez-vous que le compte de service de la VM dispose du rôle Utilisateur d'objets Storage.
Installation par défaut
Les clusters d'entraînement Gemini Enterprise Agent Platform utilisent Cloud Storage FUSE pour installer dynamiquement vos buckets Cloud Storage sur tous les nœuds de connexion et de calcul, ce qui les rend accessibles dans le répertoire /gcs. Les buckets installés de manière dynamique ne peuvent pas être répertoriés à partir du point d'installation racine /gcs. Vous pouvez accéder aux buckets installés de manière dynamique en tant que sous-répertoires :
user@testcluster:$ ls /gcs/your-bucket-name
user@testcluster:$ cd /gcs/your-bucket-name
Installation personnalisée
Pour installer un bucket Cloud Storage spécifique dans un répertoire local avec des options personnalisées, utilisez la structure de commande suivante en la transmettant dans le cadre du script de démarrage lors de la création du cluster ou en l'exécutant directement sur le nœud après la création du cluster.
sudo mkdir -p $MOUNT_DIR
echo "$GCS_BUCKET $MOUNT_DIR gcsfuse $OPTION_1,$OPTION_2,..." | sudo tee -a /etc/fstab
sudo mount -a
Par exemple, pour installer le bucket mtdata dans le répertoire /data, utilisez la commande suivante :
sudo mkdir -p /data
echo "mtdata /data gcsfuse defaults,_netdev,implicit_dirs,allow_other,dir_mode=777,file-mode=777,metadata_cache_negative_ttl_secs=0,metadata_cache_ttl_secs=-1,stat_cache_max_size_mb=-1,type_cache_max_size_mb=-1,enable_streaming_writes=true" | sudo tee -a /etc/fstab
sudo mount -a
Pour une configuration entièrement automatisée et cohérente, incluez vos scripts d'installation personnalisés dans les scripts de démarrage du cluster. Cette pratique garantit que vos buckets Cloud Storage sont automatiquement installés sur tous les nœuds au démarrage, ce qui élimine le besoin de configuration manuelle.
Pour obtenir des recommandations de configuration supplémentaires adaptées aux charges de travail d'IA/de ML, consultez le guide Bonnes pratiques d'optimisation des performances. Il fournit des conseils spécifiques pour optimiser Cloud Storage FUSE pour l'entraînement, l'inférence et la création de points de contrôle.
Étape suivante
Les étapes suivantes se concentrent sur l'utilisation efficace de votre cluster pour l'entraînement à grande échelle.
- Adaptez votre code pour l'entraînement distribué : pour tirer pleinement parti d'un cluster à plusieurs nœuds et d'un stockage hautes performances, adaptez votre code d'entraînement à un environnement distribué.
- Orchestrez vos jobs avec Gemini Enterprise Agent Platform Pipelines : pour les workflows de production, automatisez le processus de préparation des données, d'envoi des jobs et d'enregistrement des modèles à l'aide d'Agent Platform Pipelines.
- Surveillez et déboguez vos jobs d'entraînement : suivez la progression et l'utilisation des ressources de vos jobs d'entraînement distribués pour identifier et résoudre les problèmes.