- Trainingsdaten werden an den Trainingsjob gestreamt, nicht in Replikate heruntergeladen. Das kann das Laden von Daten und die Einrichtungen beim Start der Jobausführung beschleunigen.
- Trainingsjobs können Eingabe und Ausgabe in großem Umfang verarbeiten, ohne API-Aufrufe oder Antworten verarbeiten oder eine Einbindung in clientseitige Bibliotheken vornehmen zu müssen.
- Cloud Storage FUSE bietet einen hohen Durchsatz für sequenzielle Lesevorgänge großer Dateien und für verteilte Trainingsszenarien.
Anwendungsfälle
In folgenden Situationen empfehlen wir die Verwendung von Cloud Storage zum Speichern von Trainingsdaten:
- Ihre Trainingsdaten sind unstrukturierte Daten, beispielsweise Bilder, Texte und Videos.
- Ihre Trainingsdaten sind strukturierte Daten in einem Format wie beispielsweise TFRecord.
- Ihre Trainingsdaten enthalten große Dateien, z. B. Rohvideos.
- Sie verwenden verteiltes Training.
Funktionsweise
Benutzerdefinierte Trainingsjobs können auf Ihre Cloud Storage-Buckets als Unterverzeichnisse des Stammverzeichnisses /gcs
zugreifen. Beispiel: Wenn sich die Trainingsdaten unter gs://example-bucket/data.csv
befinden, können Sie aus Ihrer Python-Trainingsanwendung folgende Elemente im Bucket lesen und schreiben:
Daten zum Bucket lesen
with open('/gcs/example-bucket/data.csv', 'r') as f:
lines = f.readlines()
In den Bucket schreiben
with open('/gcs/example-bucket/epoch3.log', 'a') as f:
f.write('success!\n')
Bucket-Zugriffsberechtigungen
Standardmäßig kann ein Job für benutzerdefiniertes Training über den Dienst-Agent für benutzerdefinierten Vertex AI-Code auf jeden Cloud Storage-Bucket im selben Google Cloud-Projekt zugreifen. Um den Zugriff auf Buckets zu steuern, können Sie dem Job ein benutzerdefiniertes Dienstkonto zuweisen. In diesem Fall wird der Zugriff auf einen Cloud Storage-Bucket basierend auf den Berechtigungen gewährt, die mit den Cloud Storage-Rollen des benutzerdefinierten Dienstkontos verknüpft sind.
Beispiel: Wenn Sie dem benutzerdefinierten Trainingsjob Lese- und Schreibzugriff auf Bucket-A, aber nur Lesezugriff auf Bucket-B gewähren möchten, können Sie dem Job ein benutzerdefiniertes Dienstkonto mit folgenden Rollen zuweisen:
roles/storage.objectAdmin
für Bucket-Aroles/storage.objectViewer
für Bucket-B
Wenn der Trainingsjob versucht, in Bucket-B zu schreiben, wird der Fehler „Berechtigung verweigert“ zurückgegeben.
Weitere Informationen zu Cloud Storage-Rollen finden Sie unter IAM-Rollen für Cloud Storage.
Best Practices
- Vermeiden Sie das Umbenennen von Verzeichnissen. Umbenennungsvorgänge sind in Cloud Storage FUSE nicht atomar. Wenn der Vorgang unterbrochen wird, verbleiben einige Dateien im alten Verzeichnis.
- Vermeiden Sie unnötiges Schließen (
close()
) oder das Leeren von Dateien (flush()
). Wenn Sie eine Datei schließen oder leeren, wird die Datei in Cloud Storage verschoben, was Kosten verursacht.
Richtlinien zur Leistungsoptimierung
Um einen optimalen Lesedurchsatz bei der Verwendung von Cloud Storage als Dateisystem zu erzielen, sollten Sie folgende Richtlinien implementieren:
- Speichern Sie Daten in größeren und damit in weniger Dateien, um die Latenz durch das Aufrufen und Öffnen von Objekten in einem Bucket zu reduzieren.
- Verwenden Sie das parallele Training, um die Bandbreitennutzung zu maximieren.
- Dateien, auf die häufig zugegriffen wird, im Cache speichern, um die Leseleistung zu verbessern.
Beschränkungen
Weitere Informationen zu den Einschränkungen von Cloud Storage FUSE, einschließlich der Unterschiede zwischen den Cloud Storage FUSE- und POSIX-Dateisystemen, finden Sie unter Unterschiede zu anderen Dateisystemen.
Daten in Cloud Storage laden
Weitere Informationen zu den Optionen für die Übertragung von Daten an Cloud Storage finden Sie unter Datenübertragungsoptionen.
Nächste Schritte
- Weitere Informationen zu Cloud Storage FUSE-Preisen
- Trainingsanwendung für die Verwendung in Vertex AI vorbereiten