Die Auswahl der richtigen Speicherkonfiguration ist entscheidend für die Leistung und Stabilität Ihres Trainingsclusters. Der Dienst lässt sich in zwei verschiedene, leistungsstarke Speicherlösungen einbinden:
- Filestore: Ein erforderlicher verwalteter Dateidienst, der die freigegebenen
/home-Verzeichnisse für alle Knoten im Cluster bereitstellt. - Google Cloud Managed Lustre: Ein optionales paralleles Dateisystem, das für extreme E/A-Leistung entwickelt wurde und sich ideal für das Training mit riesigen Datasets eignet. Behandeln Sie ihn als leistungsstarken Arbeitsspeicher und nicht als Erfassungssystem und behalten Sie Cloud Storage als Source of Truth bei. Weitere Informationen finden Sie unter Managed Lustre-Daten in Cloud Storage sichern.
Auf dieser Seite finden Sie eine Übersicht über die wichtigsten Anwendungsfälle sowie die spezifischen Netzwerk- und Bereitstellungsanforderungen für eine erfolgreiche Integration in Ihren Cluster.
Speicherintegration für Trainingscluster
Die Trainingscluster der Gemini Enterprise Agent Platform sind für den Betrieb auf bestimmte vernetzte Speicherlösungen angewiesen. Filestore ist erforderlich, um die freigegebenen /home-Verzeichnisse für den Cluster bereitzustellen. Managed Lustre ist ein optionales Hochleistungs-Dateisystem für anspruchsvolle Arbeitslasten.
Es ist wichtig, das Netzwerk für diese Speicherdienste vor der Bereitstellung des Clusters richtig zu konfigurieren.
Filestore für Basisverzeichnisse
Dieser Dienst verwendet eine Filestore-Instanz, um das freigegebene Verzeichnis /home für den Cluster bereitzustellen. Damit die Verbindung ordnungsgemäß funktioniert, müssen Sie Ihre Cloud-Ressourcen in dieser bestimmten Reihenfolge erstellen:
- VPC-Netzwerk erstellen: Stellen Sie zuerst ein VPC-Netzwerk bereit, das mit der empfohlenen MTU (z. B. 8896) konfiguriert ist.
- Filestore-Instanz erstellen: Stellen Sie als Nächstes die Filestore-Instanz in der gerade erstellten VPC bereit.
- Trainingscluster erstellen: Stellen Sie schließlich den Cluster bereit, der dann eine Verbindung zur Filestore-Instanz im selben Netzwerk herstellen kann.
Google Cloud Managed Lustre für Hochleistungslasten
Für Arbeitslasten, die eine maximale E/A-Leistung erfordern, können Sie ein Managed Lustre-Dateisystem anhängen. Dieser Dienst stellt über den Zugriff auf private Dienste eine Verbindung zu Ihrer VPC her.
Managed Lustre ist für den Durchsatz und nicht für die Langlebigkeit optimiert. Eine Instanz ist zonal und hat keine Snapshot-, Sicherungs- oder Wiederherstellungsfunktion. Sichern Sie alles, was Sie nicht neu generieren können, in Cloud Storage. Weitere Informationen finden Sie unter Managed Lustre-Daten in Cloud Storage sichern.
Managed Lustre-Daten in Cloud Storage sichern
Cloud Storage als „Source of Truth“ hinter Managed Lustre beibehalten. Dadurch werden Ihre Prüfpunkte geschützt und Sie können sie schnell wiederherstellen, wenn eine Instanz ausfällt oder gelöscht wird.
Managed Lustre umfasst eine integrierte Übertragung mit hohem Durchsatz, die direkt in Cloud Storage exportiert. Übertragungen sind inkrementell: Bei jeder Ausführung werden nur die Dateien kopiert, die noch nicht im Ziel vorhanden sind oder sich seit der letzten Übertragung geändert haben.
Zwei Identitäten benötigen Berechtigungen. Das Nutzer- oder Dienstkonto, das den Export startet, benötigt die Berechtigung lustre.instances.exportData, die in der Rolle roles/lustre.admin enthalten ist oder die Sie über eine benutzerdefinierte Rolle gewähren können. Der Managed Lustre-Dienst-Agent benötigt separat Schreibzugriff auf den Ziel-Bucket.
Gewähren Sie dem Managed Lustre-Dienst-Agent Schreibzugriff auf den Ziel-Bucket. Dies ist nur einmal pro Bucket erforderlich:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-lustre.iam.gserviceaccount.com \ --role=roles/storage.objectUserWobei:
- BUCKET_NAME ist der Ziel-Bucket.
- PROJECT_NUMBER ist die Nummer des Projekts, das die Managed Lustre-Instanz enthält. Weitere Informationen finden Sie unter Berechtigungen für den Managed Lustre-Dienst-Agent.
Exportieren Sie das Dateisystem in den Bucket:
gcloud lustre instances export-data INSTANCE_ID \ --location=ZONE \ --lustre-path="/" \ --gcs-path-uri="gs://BUCKET_NAME/INSTANCE_ID/"Wobei:
- INSTANCE_ID ist der Name der Managed Lustre-Instanz, die gesichert werden soll.
- ZONE ist die Zone der Instanz, z. B.
us-central1-a.
Der Wert
--gcs-path-urikann ein Bucket oder ein Pfad innerhalb eines Buckets sein. Wenn Sie einen Pfad angeben, muss dieser mit einem Schrägstrich enden. Wenn Sie jede Instanz in einen Pfad exportieren, der nach ihr benannt ist, bleiben die Instanzen getrennt. Wenn Sie mehr als eine Managed Lustre-Instanz an den Cluster anhängen, geben Sie jeder Instanz einen eigenen Pfad, da zwei Instanzen, die in denselben Pfad exportieren, die Dateien der jeweils anderen Instanz überschreiben.
Damit die Sicherung aktuell bleibt, sollten Sie den Export nach einem Zeitplan ausführen. Sie können beispielsweise einen täglichen Cronjob auf einem Login-Knoten ausführen, anstatt ihn nur am Ende eines Trainingslaufs auszuführen. Da Übertragungen inkrementell sind, werden bei jeder Ausführung nach der ersten nur die Änderungen kopiert.
Beachten Sie bei der Planung einer Sicherung Folgendes:
- Pro Instanz kann jeweils nur ein Übertragungsvorgang aktiv sein. Eine Übertragung, die gestartet wird, während eine andere noch ausgeführt wird, schlägt mit
ABORTED: unable to queue the operationfehl. - Beim Export werden nie Objekte aus dem Ziel gelöscht. Eine Datei, die Sie in Managed Lustre löschen, bleibt also im Bucket. Aktivieren Sie die Objektversionsverwaltung für den Ziel-Bucket, damit Sie auch Dateien wiederherstellen können, die mit unerwünschten Inhalten überschrieben wurden.
- Symbolische Links, leere Verzeichnisse und mit
lfs setstripefestgelegte Striping-Layouts werden nicht beibehalten. Hardlinks werden als separate Objekte exportiert, sodass eine Datei mit Hardlink pro Link im Bucket einmal Speicherplatz belegt. POSIX-UID, -GID, -Modus und -mtime werden als benutzerdefinierte Objektmetadaten beibehalten. - Schreiben Sie Prüfpunkte atomar. Schreiben Sie in einen temporären Pfad und benennen Sie die Datei dann um, sodass ein Export, der während eines Schreibvorgangs ausgeführt wird, entweder die vorherige Datei oder die vollständige neue Datei erfasst, aber nie eine Teildatei.
Erstellen Sie zum Wiederherstellen eine neue Managed Lustre-Instanz und laden Sie die Daten mit gcloud lustre instances import-data zurück. Weitere Informationen finden Sie unter Daten in oder aus Cloud Storage übertragen.
Kritische Netzwerkeinschränkung: kein transitives Peering
Eine wichtige Einschränkung sowohl für Filestore als auch für Google Cloud Managed Lustre ist, dass sie kein transitives Peering unterstützen. Das bedeutet, dass nur Ressourcen innerhalb der direkt verbundenen VPC auf den Speicherdienst zugreifen können. Wenn beispielsweise die VPC (N1) Ihres Clusters mit dem Speicherdienst verbunden ist, hat eine andere VPC (N2), die mit N1 verbunden ist, keinen Zugriff.
Speicherintegration für Trainingscluster
Die Trainingscluster der Gemini Enterprise Agent Platform sind für ihren Betrieb auf bestimmte, vernetzte Speicherlösungen angewiesen. Filestore ist erforderlich, um die freigegebenen /home-Verzeichnisse für den Cluster bereitzustellen. Google Cloud Managed Lustre ist ein optionales Hochleistungs-Dateisystem für anspruchsvolle Arbeitslasten.
Es ist wichtig, das Netzwerk für diese Speicherdienste vor der Bereitstellung des Clusters richtig zu konfigurieren.
Filestore
Wichtige Anwendungsfälle für Filestore mit Trainingsclustern
Neben seiner Rolle als obligatorisches Basisverzeichnis bietet Filestore eine flexible Möglichkeit, Daten mit Ihrem Cluster zu teilen.
Zusätzlicher freigegebener Speicher: Sie können jedem Knotenpool eine oder mehrere zusätzliche Filestore-Instanzen hinzufügen. Dies ist nützlich, um Ihren Trainingsjobs freigegebene Datasets, Anwendungsbinärdateien oder andere gängige Dateien zur Verfügung zu stellen. Wenn diese Instanzen in der Knotenpoolkonfiguration angegeben sind, werden sie von Trainingsclustern automatisch im Verzeichnis /mnt/filestore auf jedem Knoten bereitgestellt.
Filestore-Anforderungen
Für eine erfolgreiche Filestore-Integration in Trainingscluster ist die folgende Konfiguration erforderlich:
- API aktivieren: Die Filestore API muss in Ihrem Google Cloud-Projekt aktiviert sein, bevor Sie den Cluster erstellen können.
- Erforderliches
/home-Verzeichnis: Jeder Trainingscluster benötigt eine dedizierte Filestore-Instanz, die als freigegebenes/home-Verzeichnis dient. Für diese Instanz gelten bestimmte Konfigurationsanforderungen:- Netzwerk: Es muss sich im selben VPC-Netzwerk wie die Compute- und Login-Knoten des Clusters befinden.
- Standort: Er muss sich in derselben Region oder Zone wie der Cluster befinden.
- Konfiguration: Sie müssen den vollständigen Ressourcennamen dieser Instanz im Feld
angeben, wenn Sie den Cluster über die API erstellen.orchestrator_spec.slurm_spec.home_directory_storage
Filestore-Speicher konfigurieren
Erstellen Sie eine zonale oder regionale Filestore-Instanz in der Zone, in der Sie den Cluster erstellen möchten. Für die Agent Platform API muss ein Filestore-Cluster an den Cluster angehängt werden, der als /home-Verzeichnis dient.
Dieser Filestore muss sich in derselben Zone oder Region und im selben Netzwerk wie alle Compute-Knoten und Login-Knoten befinden. Im folgenden Beispiel wird 172.16.10.0/24 für die Filestore-Bereitstellung verwendet.
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 bietet ein leistungsstarkes, vollständig verwaltetes paralleles Dateisystem, das für KI- und HPC-Anwendungen optimiert ist. Mit einer Kapazität im Multi-Petabyte-Bereich und einem Durchsatz von bis zu 1 TB/s erleichtert Managed Lustre die Migration anspruchsvoller Arbeitslasten in die Cloud.
Managed Lustre-Instanzen befinden sich in Zonen innerhalb von Regionen. Eine Region ist ein spezifischer geografischer Ort, an dem Sie Ihre Ressourcen ausführen können. Jede Region ist in mehrere Zonen unterteilt. Beispiel: Die Region us-central1 in der Mitte der USA umfasst die Zonen us-central1-a, us-central1-b, us-central1-c und us-central1-f. Weitere Informationen finden Sie unter Geografie und Regionen.
Um die Netzwerklatenz zu verringern, empfehlen wir, eine Managed Lustre-Instanz in einer Region und Zone zu erstellen, die sich in der Nähe des geplanten Verwendungsorts befindet.
Beim Erstellen einer Managed Lustre-Instanz müssen Sie die folgenden Attribute definieren:
- Der Name der Instanz, die von Google Cloud verwendet wird.
- Der Name des Dateisystems, das von clientseitigen Tools verwendet wird, z. B.
lfs. - Die Speicherkapazität in Gibibyte (GiB). Die Kapazität kann zwischen 9.000 GiB und ca. 8 PiB (7.632.000 GiB) liegen. Die maximale Größe einer Instanz hängt von ihrer Leistungsstufe ab.
- Managed Lustre bietet Leistungsstufen von 125 MB/s pro TiB bis 1.000 MB/s pro TiB.
- Um eine optimale Leistung zu erzielen, sollten Sie die Instanz in derselben Zone wie den Trainingscluster erstellen.
- Das VPC-Netzwerk für diese Instanz muss mit dem Netzwerk Ihres Trainingsclusters übereinstimmen.
Managed Lustre bietet 4 Leistungsstufen mit jeweils unterschiedlicher maximaler Durchsatzgeschwindigkeit pro TiB. Leistungsstufen wirken sich auch auf die minimale und maximale Instanzgröße sowie auf die Schrittgröße zwischen akzeptablen Kapazitätswerten aus. Sie können die Leistungsstufe einer Instanz nach dem Erstellen nicht mehr ändern.
Für die Bereitstellung von Managed Lustre ist der Zugriff auf private Dienste erforderlich. Dadurch wird ein VPC-Peering zwischen der VPC des Trainingsclusters und der VPC, die Managed Lustre hostet, über ein dediziertes /20-Subnetz hergestellt.
Managed Lustre-Instanz konfigurieren (optional)
Verwenden Sie Google Cloud Managed Lustre nur, wenn Sie Managed Lustre im Model Development Service verwenden möchten.
Google Cloud Managed Lustre ist ein vollständig verwalteter, leistungsstarker paralleler Dateisystemdienst in Google Cloud. Sie wurde speziell für die Beschleunigung anspruchsvoller Arbeitslasten in den Bereichen KI/Machine Learning und Hochleistungs-Computing (HPC) entwickelt.
Für eine optimale Leistung bei der Verwendung von Trainingsclustern sollte Google Cloud Managed Lustre über VPC-Peering mit Dienstenetzwerken in derselben VPC und Zone wie Ihr Trainingscluster bereitgestellt werden.
Lustre-Instanz erstellen
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
Cloud Storage-Bereitstellung
Als Voraussetzung muss das VM-Dienstkonto die Rolle „Storage Object User“ haben.
Standard-Bereitstellungspunkt
Trainingscluster der Gemini Enterprise Agent Platform verwenden Cloud Storage FUSE, um Ihre Cloud Storage-Buckets dynamisch auf allen Anmelde- und Rechenknoten bereitzustellen, sodass sie im Verzeichnis /gcs zugänglich sind. Dynamisch bereitgestellte Buckets können nicht vom Root-Bereitstellungspunkt /gcs aus aufgelistet werden. Sie können auf die dynamisch bereitgestellten Buckets als Unterverzeichnisse zugreifen:
user@testcluster:$ ls /gcs/your-bucket-name
user@testcluster:$ cd /gcs/your-bucket-name
Benutzerdefinierte Bereitstellung
Wenn Sie einen bestimmten Cloud Storage-Bucket mit benutzerdefinierten Optionen in einem lokalen Verzeichnis bereitstellen möchten, verwenden Sie die folgende Befehlsstruktur. Übergeben Sie sie entweder als Teil des Startskripts bei der Clustererstellung oder führen Sie sie nach der Erstellung des Clusters direkt auf dem Knoten aus.
sudo mkdir -p $MOUNT_DIR
echo "$GCS_BUCKET $MOUNT_DIR gcsfuse $OPTION_1,$OPTION_2,..." | sudo tee -a /etc/fstab
sudo mount -a
Wenn Sie beispielsweise den Bucket mtdata im Verzeichnis /data bereitstellen möchten, verwenden Sie den folgenden Befehl:
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
Für eine vollständig automatisierte und konsistente Einrichtung fügen Sie Ihre benutzerdefinierten Bereitstellungsskripts in die Startskripts des Clusters ein. So werden Ihre Cloud Storage-Buckets beim Start automatisch auf allen Knoten bereitgestellt und Sie müssen sie nicht manuell konfigurieren.
Weitere Konfigurationsempfehlungen für KI/ML-Arbeitslasten finden Sie im Leitfaden mit Best Practices zur Leistungsoptimierung. Sie enthält spezifische Anleitungen zur Optimierung von Cloud Storage FUSE für Training, Inferenz und Prüfpunkte.
Nächste Schritte
In den nächsten Schritten geht es darum, Ihren Cluster effektiv für umfangreiches Training zu nutzen.
- Code für verteiltes Training anpassen: Damit Sie einen Cluster mit mehreren Knoten und Hochleistungsspeicher optimal nutzen können, passen Sie Ihren Trainingscode für eine verteilte Umgebung an.
- Jobs mit Gemini Enterprise Agent Platform-Pipelines orchestrieren: Für Produktionsworkflows können Sie den Prozess der Datenvorbereitung, Jobübermittlung und Modellregistrierung mit Agent Platform-Pipelines automatisieren.
- Trainingsjobs überwachen und debuggen: Verfolgen Sie den Fortschritt und die Ressourcenauslastung Ihrer verteilten Trainingsjobs, um Probleme zu identifizieren und zu beheben.