Storage

Wenn Sie sich für Trainingscluster der Gemini Enterprise Agent Platform interessieren, wenden Sie sich an Ihren Vertriebsmitarbeiter, um Zugriff zu erhalten.

Die richtige Speicherkonfiguration ist entscheidend für die Leistung und Stabilität Ihres Trainingsclusters. Der Dienst lässt sich in zwei unterschiedliche, 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 sehr großen Datasets eignet. Behandeln Sie es als leistungsstarken Arbeitsspeicher und nicht als Erfassungssystem. Verwenden Sie Cloud Storage als Source of Truth. Weitere Informationen finden Sie unter Managed Lustre-Daten in Cloud Storage sichern.

Auf dieser Seite finden Sie eine Übersicht über die wichtigsten Anwendungsfälle und die spezifischen Anforderungen an Netzwerk und Bereitstellung für eine erfolgreiche Einbindung in Ihren Cluster.

Speicherintegration für Trainingscluster

Für den Betrieb von Trainingsclustern der Gemini Enterprise Agent Platform sind bestimmte vernetzte Speicherlösungen erforderlich. 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 richtig zu konfigurieren, bevor Sie Ihren Cluster bereitstellen.

Filestore für Basisverzeichnisse

Dieser Dienst verwendet eine Filestore-Instanz, um das freigegebene /home-Verzeichnis für den Cluster bereitzustellen. Um eine ordnungsgemäße Verbindung zu gewährleisten, müssen Sie Ihre Cloud-Ressourcen in dieser Reihenfolge erstellen:

  1. VPC-Netzwerk erstellen: Stellen Sie zuerst ein VPC-Netzwerk bereit, das mit der empfohlenen MTU konfiguriert ist (z. B. 8896).
  2. Filestore-Instanz erstellen: Stellen Sie als Nächstes die Filestore-Instanz in der gerade erstellten VPC bereit.
  3. 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 Hochleistungs-Arbeitslasten

Für Arbeitslasten, die maximale E/A-Leistung erfordern, können Sie ein Managed Lustre-Dateisystem anhängen. Dieser Dienst stellt über den privaten Dienstzugriff 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 bietet keine Snapshot-, Sicherungs- oder Wiederherstellungsfunktion. Sichern Sie alles, was Sie nicht wiederherstellen können, in Cloud Storage. Weitere Informationen finden Sie unter Managed Lustre-Daten in Cloud Storage sichern.

Managed Lustre-Daten in Cloud Storage sichern

Verwenden Sie Cloud Storage als Source of Truth für Managed Lustre. So schützen Sie Ihre Prüfpunkte und können sie schnell wiederherstellen, wenn eine Instanz ausfällt oder gelöscht wird.

Managed Lustre bietet eine integrierte Übertragung mit hohem Durchsatz, die Daten direkt nach Cloud Storage exportiert. Übertragungen sind inkrementell: Bei jeder Ausführung werden nur die Dateien kopiert, die noch nicht im Ziel vorhanden sind oder die 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 roles/lustre.admin Rolle enthalten ist oder die Sie über eine benutzerdefinierte Rolle gewähren können. Der Managed Lustre-Dienst-Agent benötigt außerdem Schreibzugriff auf den Ziel-Bucket.

  1. Gewähren Sie dem Managed Lustre-Dienst-Agenten 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.s3ns-system.iam.gserviceaccount.com \
      --role=roles/storage.objectUser
    

    Wobei:

  2. 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-uri kann ein Bucket oder ein Pfad in einem Bucket sein. Wenn Sie einen Pfad angeben, muss er mit einem Schrägstrich enden. Wenn Sie jede Instanz in einen nach ihr benannten Pfad exportieren, bleiben die Instanzen getrennt. Wenn Sie dem Cluster mehr als eine Managed Lustre-Instanz hinzufügen, geben Sie für jede einen eigenen Pfad an. Andernfalls überschreiben sich die Dateien der beiden Instanzen gegenseitig.

Damit die Sicherung auf dem neuesten Stand ist, führen Sie den Export regelmäßig aus. Sie können beispielsweise einen täglichen Cronjob auf einem Anmeldeknoten ausführen, anstatt ihn nur am Ende eines Trainingsdurchlaufs 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:

  • Es kann immer nur ein Übertragungsvorgang pro Instanz aktiv sein. Eine Übertragung, die gestartet wird, während eine andere noch ausgeführt wird, schlägt mit ABORTED: unable to queue the operation fehl.
  • 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 eine Datei wiederherstellen können, die mit unerwünschten Inhalten überschrieben wurde.
  • Symbolische Links, leere Verzeichnisse und Striping-Layouts, die mit lfs setstripe festgelegt wurden, werden nicht beibehalten. Hardlinks werden als separate Objekte exportiert. Eine Hardlink-Datei belegt also einmal pro Link Speicherplatz im Bucket. POSIX-UID, GID, Modus und mtime werden als benutzerdefinierte Objektmetadaten beibehalten.
  • Schreiben Sie Prüfpunkte atomar. Schreiben Sie dazu in einen temporären Pfad und benennen Sie die Datei dann um. So wird bei einem Export, der während eines Schreibvorgangs ausgeführt wird, entweder die vorherige Datei oder die vollständige neue Datei erfasst, aber nie eine teilweise Datei.

Erstellen Sie zum Wiederherstellen eine neue Managed Lustre-Instanz und laden Sie die Daten mit gcloud lustre instances import-data wieder hoch. Weitere Informationen finden Sie unter Daten zu oder von Cloud Storage übertragen.

Wichtige Einschränkung des Netzwerks: Kein transitives Peering

Eine wichtige Einschränkung für Filestore und 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 Ihres Clusters (N1) mit dem Speicherdienst per Peering verbunden ist, hat eine andere VPC (N2), die mit N1 per Peering verbunden ist, keinen Zugriff.

Speicherintegration für Trainingscluster

Für den Betrieb von Trainingsclustern der Gemini Enterprise Agent Platform sind bestimmte vernetzte Speicherlösungen erforderlich. 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 richtig zu konfigurieren, bevor Sie Ihren Cluster bereitstellen.

Filestore

Wichtige Anwendungsfälle von Filestore mit Trainingsclustern

Filestore dient nicht nur als obligatorisches Basisverzeichnis, sondern bietet auch eine flexible Möglichkeit, Daten für Ihren Cluster freizugeben.
Zusätzlicher freigegebener Speicher: Sie können jedem Knotenpool eine oder mehrere zusätzliche Filestore Instanzen hinzufügen. Das ist nützlich, um freigegebene Datasets, Anwendungsbinärdateien, oder andere gemeinsame Dateien für Ihre Trainingsjobs bereitzustellen. Wenn in der Knotenpoolkonfiguration angegeben, werden diese Instanzen von Trainingsclustern automatisch in das /mnt/filestore Verzeichnis auf jedem Knoten eingebunden.

Filestore-Anforderungen

Für eine erfolgreiche Filestore-Integration mit Trainingsclustern 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.
  • Obligatorisches /home Verzeichnis: Jeder Trainingscluster benötigt eine dedizierte Filestore-Instanz als freigegebenes /home Verzeichnis. Für diese Instanz gelten bestimmte Konfigurationsanforderungen:
    • Netzwerk: Sie muss sich im selben VPC-Netzwerk wie die Compute- und Anmeldeknoten des Clusters befinden.
    • Standort: Sie muss sich in derselben Region oder Zone wie der Cluster befinden.
    • Konfiguration: Sie müssen beim Erstellen des Clusters über die API den vollständigen Ressourcennamen dieser Instanz im orchestrator_spec.slurm_spec.home_directory_storage Feld angeben.

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 eine Filestore-Instanz an den Cluster angehängt sein, die als /home-Verzeichnis dient. Diese Filestore-Instanz muss sich in derselben Zone oder Region und im selben Netzwerk wie alle Compute- und Anmeldeknoten 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. Die Region us-central1 in den zentralen USA hat beispielsweise die Zonen us-central1-a, us-central1-b, us-central1-c und us-central1-f. Weitere Informationen finden Sie unter Geografie und Regionen.

Wir empfehlen, zum Verringern der Netzwerklatenz eine Managed Lustre-Instanz in einer Region und Zone zu erstellen, die sich in der Nähe der geplanten Verwendung 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 Dateisystemname, der von Client-seitigen Tools verwendet wird, z. B. lfs.
  • Die Speicherkapazität in Gibibyte (GiB). Die Kapazität kann zwischen 9.000 GiB und etwa 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.
  • Für eine optimale Leistung erstellen Sie Ihre Instanz in derselben Zone wie Ihren Trainingscluster.
  • Das VPC-Netzwerk für diese Instanz muss dasselbe sein, das Ihr Trainingscluster verwendet.

Managed Lustre bietet vier Leistungsstufen, mit jeweils unterschiedlicher maximaler Durchsatzgeschwindigkeit pro TiB. Die Leistungsstufen wirken sich auch auf die minimale und maximale Instanzgröße sowie auf die Schrittgröße zwischen akzeptablen Kapazitätswerten aus. Die Leistungsstufe einer Instanz kann nach dem Erstellen nicht mehr geändert werden.

Für die Bereitstellung von Managed Lustre ist der private Dienstzugriff erforderlich, der VPC-Peering zwischen der VPC des Trainingsclusters und der VPC, in der Managed Lustre gehostet wird, über ein dediziertes /20-Subnetz herstellt.

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. Er wurde speziell entwickelt, um anspruchsvolle Arbeitslasten in den Bereichen KI/maschinelles Lernen und Hochleistungs-Computing (HPC) zu beschleunigen.

Für eine optimale Leistung bei der Verwendung von Trainingsclustern, sollte Google Cloud Managed Lustre in derselben VPC und Zone wie Ihr Trainingscluster bereitgestellt werden. Verwenden Sie dazu VPC-Peering für die Netzwerkverbindung zu Diensten.

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 einbinden

Achten Sie darauf, dass das VM-Dienstkonto die Rolle „Storage-Objekt-Nutzer“ hat.

Standardeinbindung

Trainingscluster der Gemini Enterprise Agent Platform verwenden Cloud Storage FUSE, um Ihre Cloud Storage-Buckets dynamisch auf allen Anmelde- und Compute-Knoten einzubinden und sie so über das Verzeichnis /gcs zugänglich zu machen. Dynamisch bereitgestellte Buckets können nicht vom Root-Bereitstellungspunkt /gcs aus aufgelistet werden. Sie können auf die dynamisch eingebundenen Buckets als Unterverzeichnisse zugreifen:

user@testcluster:$ ls /gcs/your-bucket-name
user@testcluster:$ cd /gcs/your-bucket-name

Benutzerdefinierte Einbindung

Wenn Sie einen bestimmten Cloud Storage-Bucket mit benutzerdefinierten Optionen in ein lokales Verzeichnis einbinden möchten, verwenden Sie die folgende Befehlsstruktur. Sie können sie entweder als Teil des Startskripts beim Erstellen des Clusters übergeben oder direkt auf dem Knoten ausführen, nachdem der Cluster erstellt wurde.

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 in das Verzeichnis /data einbinden 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 Einbindungsskripts in die Startskripts des Clusters ein. So werden Ihre Cloud Storage-Buckets beim Start automatisch auf allen Knoten eingebunden, sodass keine manuelle Konfiguration erforderlich ist.

Weitere Konfigurationsempfehlungen für KI/ML-Arbeitslasten finden Sie im Leitfaden mit Best Practices zur Leistungsoptimierung. Dort finden Sie spezifische Anleitungen zur Optimierung von Cloud Storage FUSE für Training, Inferenz und Prüfpunkte.

Nächste Schritte

Die nächsten Schritte konzentrieren sich auf die effektive Nutzung Ihres Clusters für das Training im großen Maßstab.