Cloud Storage FUSE-Datei-Caching verwenden

Das Datei-Caching von Cloud Storage FUSE ist ein clientseitiger Lese-Cache, der die Leistung von Lesevorgängen verbessert, indem wiederholte Dateilesevorgänge von einem schnelleren Cache-Speicher Ihrer Wahl bereitgestellt werden. Wenn das Datei-Caching aktiviert ist, speichert Cloud Storage FUSE Kopien von häufig aufgerufenen Dateien lokal. Dadurch können nachfolgende Lesevorgänge direkt aus dem Cache bereitgestellt werden, was die Latenz verringert und den Durchsatz verbessert.

Vorteile des Datei-Caching

Das Datei-Caching bietet folgende Vorteile:

  • Verbesserte Leistung bei kleinen und zufälligen E/A-Vorgängen: Datei-Caching verbessert Latenz und Durchsatz, da Lesevorgänge direkt aus den Cache-Medien bereitgestellt werden. Kleine und zufällige E/A-Vorgänge können erheblich schneller sein, wenn sie aus dem Cache bereitgestellt werden.

  • Parallele Downloads nutzen: Parallele Downloads werden in Cloud Storage FUSE-Versionen 2.12 und höher automatisch aktiviert, wenn der Datei-Cache aktiviert ist. Bei parallelen Downloads wird eine Datei mithilfe mehrerer Worker parallel heruntergeladen und das Dateicache-Verzeichnis als Prefetch-Puffer verwendet. Dadurch kann die Ladezeit des Modells um das bis zu Neunfache verkürzt werden. Wir empfehlen parallele Downloads für Szenarien mit nur einem Lese-Thread, bei denen große Dateien geladen werden, z. B. beim Modell-Serving und beim Wiederherstellen von Checkpoints.

  • Vorhandene Kapazität nutzen: Beim Datei-Caching kann die vorhandene bereitgestellte Maschinenkapazität für das Cache-Verzeichnis verwendet werden, ohne dass zusätzlicher Speicher in Rechnung gestellt wird. Hierzu gehören lokale SSDs, die im Lieferumfang von Cloud GPU-Maschinentypen enthalten sind, z. B. a2-ultragpu und a3-highgpu, Persistent Disk (also das Bootlaufwerk, das von jeder VM verwendet wird) oder In-Memory-/tmpfs.

  • Reduzierte Gebühren: Cache-Treffer werden lokal bereitgestellt und es fallen keine Cloud Storage-Vorgangs- oder Netzwerkgebühren an.

  • Verbesserte Gesamtbetriebskosten für KI- und ML-Training: Datei-Caching erhöht die Cloud-GPUs und die Cloud TPU-Auslastung, da Daten schneller geladen werden, was die Trainingszeit verkürzt und ein höheres Preis-Leistungs-Verhältnis für KI- und ML-Trainingsarbeitslasten bietet.

Parallele Downloads

Parallele Downloads können die Leseleistung verbessern, indem mehrere Worker verwendet werden, um mehrere Teile einer Datei parallel herunterzuladen. Dabei wird das Dateicache-Verzeichnis als Prefetch-Puffer verwendet. Wir empfehlen parallele Downloads für Leseszenarien, bei denen große Dateien geladen werden, z. B. beim Modell-Serving, beim Wiederherstellen von Checkpoints und beim Training mit großen Objekten.

Anwendungsfälle für das Aktivieren des Datei-Cachings mit parallelen Downloads:

Anwendungsfalltyp Beschreibung
Training Aktivieren Sie das Dateicaching, wenn auf die Daten, auf die Sie zugreifen möchten, mehrmals zugegriffen wird, entweder auf dieselbe Datei mehrmals oder auf verschiedene Offsets derselben Datei. Wenn der Datensatz größer als der Dateicache ist, sollte der Dateicache deaktiviert bleiben. Verwenden Sie stattdessen eine der folgenden Methoden:
Bereitstellung von Modellgewichten und Prüfpunkten Aktivieren Sie das Dateicaching mit parallelen Downloads, um parallele Downloads nutzen zu können. Dadurch werden große Dateien viel schneller geladen als ohne Dateicaching und parallele Downloads.

Hinweise

In den folgenden Abschnitten finden Sie wichtige Überlegungen zur Verwendung von Dateicaching.

Dateigröße und verfügbare Kapazität

Die gelesene Datei muss in die verfügbare Kapazität des Dateicache-Verzeichnisses passen, das mit der --file-cache-max-size-mb-CLI-Option oder dem file-cache:max-size-mb-Feld gesteuert werden kann.

Verwaltung von zufälligen und teilweisen Lesevorgängen

Wenn der erste Dateilesevorgang am Anfang der Datei (dem Offset 0) beginnt, nimmt der Cloud Storage FUSE-Dateicache die gesamte Datei auf und lädt sie in den Cache, auch wenn Sie nur aus einer kleinen Bereichsuntergruppe lesen. Dadurch können nachfolgende zufällige oder partielle Lesevorgänge aus demselben Objekt direkt aus dem Cache bereitgestellt werden.

Wenn der erste Lesevorgang einer Datei von einem anderen Ort als dem Offset 0 beginnt, löst Cloud Storage FUSE standardmäßig keinen asynchronen vollständigen Dateiabruf aus. Um dieses Verhalten zu ändern, sodass Cloud Storage FUSE bei einem ersten zufälligen Lesevorgang eine Datei in den Cache aufnimmt, verwenden Sie eine der folgenden Methoden, um das Verhalten auf true festzulegen:

Wir empfehlen, diese Property zu aktivieren, wenn viele verschiedene zufällige oder partielle Lesevorgänge für dasselbe Objekt ausgeführt werden.

Entfernung aus Cache

Das Entfernen von im Cache gespeicherten Metadaten und Daten basiert auf einem am weitesten in der Vergangenheit verwendeten (LRU)-Algorithmus, der beginnt, sobald der pro --file-cache-max-size-mb-Limit konfigurierte Speicherplatzgrenzwert erreicht ist. Wenn der Eintrag basierend auf seiner TTL abläuft, wird zuerst ein GET-Metadatenaufruf an Cloud Storage ausgeführt, der Netzwerklatenzen unterliegt. Da die Daten und Metadaten separat verwaltet werden, kann es sein, dass eine Entität entfernt oder ungültig wird und die andere nicht.

Cache-Persistenz

Cloud Storage FUSE-Caches werden beim Trennen und Neustart nicht beibehalten. Beim Dateicaching werden die Metadateneinträge, die zum Bereitstellen von Dateien aus dem Cache erforderlich sind, beim Aushängen und Neustarten entfernt. Daten im Dateicache sind jedoch möglicherweise weiterhin im Dateiverzeichnis vorhanden. Wir empfehlen, Daten im Dateicacheverzeichnis nach dem Aushängen oder Neustarten zu löschen.

Datensicherheit

Wenn Sie das Caching aktivieren, verwendet Cloud Storage FUSE das Cache-Verzeichnis, das Sie mit einer der folgenden Methoden angegeben haben, als zugrunde liegendes Verzeichnis für den Cache, um Dateien aus Ihrem Cloud Storage-Bucket in einem verschlüsselten Format zu speichern:

Jeder Nutzer oder Prozess, der Zugriff auf dieses Cache-Verzeichnis hat, kann auf diese Dateien zugreifen. Wir empfehlen, den Zugriff auf dieses Verzeichnis einzuschränken.

Direkter oder Mehrfachzugriff auf den Dateicache

Die Verwendung eines anderen Prozesses als Cloud Storage FUSE für den Zugriff auf oder die Änderung einer Datei im Cache-Verzeichnis kann zu Datenbeschädigungen führen. Cloud Storage FUSE-Caches sind für jeden ausgeführten Cloud Storage FUSE-Prozess spezifisch, ohne Kenntnis der verschiedenen Cloud Storage FUSE-Prozesse, die auf demselben oder verschiedenen Computern ausgeführt werden. Daher empfehlen wir, nicht dasselbe Cache-Verzeichnis für verschiedene Cloud Storage FUSE-Prozesse zu verwenden.

Wenn mehrere Cloud Storage FUSE-Prozesse auf demselben Computer ausgeführt werden müssen, sollte jeder Cloud Storage FUSE-Prozess ein eigenes spezifisches Cache-Verzeichnis erhalten oder eine der folgenden Methoden verwenden, um sicherzustellen, dass Ihre Daten nicht beschädigt werden:

  • Alle Buckets mit einem freigegebenen Cache bereitstellen: Verwenden Sie die dynamische Bereitstellung, um alle Buckets, auf die Sie Zugriff haben, in einem einzigen Prozess mit einem freigegebenen Cache bereitzustellen. Weitere Informationen finden Sie unter Dynamische Bereitstellung von Cloud Storage FUSE.

  • Caching für einen bestimmten Bucket aktivieren: Sie können das Caching nur für einen bestimmten Bucket mithilfe der statischen Bereitstellung aktivieren. Weitere Informationen finden Sie unter Statische Bereitstellung von Cloud Storage FUSE.

  • Nur einen bestimmten Ordner oder ein bestimmtes Verzeichnis im Cache speichern: Anstatt einen ganzen Bucket bereitzustellen, können Sie nur einen bestimmten Ordner auf Bucket-Ebene bereitstellen und im Cache speichern. Weitere Informationen finden Sie unter Verzeichnis in einem Bucket bereitstellen.

Hinweise

Der Dateicache erfordert einen Verzeichnispfad, um Dateien im Cache zu speichern. Sie können ein neues Verzeichnis in einem vorhandenen Dateisystem erstellen oder ein neues Dateisystem im bereitgestellten Speicher erstellen. Wenn Sie neuen Speicher zur Verwendung bereitstellen, erstellen Sie mit der folgenden Anleitung ein neues Dateisystem:

  1. Informationen zu Google Cloud Hyperdisk finden Sie unter Neues Google Cloud Hyperdisk-Volume erstellen.

  2. Informationen zu Persistent Disk finden Sie unter Neues Persistent Disk-Volume erstellen.

  3. Informationen zu lokalen SSDs finden Sie unter Lokale SSD zu VM hinzufügen.

  4. Informationen zu speicherinternen RAM-Disks finden Sie unter Speicherinterne RAM-Disks erstellen.

Dateicaching-Verhalten aktivieren und konfigurieren

Sie haben folgende Möglichkeiten, das Datei-Caching zu aktivieren und zu konfigurieren:

  1. Geben Sie das Cache-Verzeichnis, das Sie verwenden möchten, mit einer der folgenden Methoden an. So können Sie den Dateicache für Bereitstellungen aktivieren, die nicht in Google Kubernetes Engine erfolgen:

    Wenn Sie eine Google Kubernetes Engine-Bereitstellung mit dem Cloud Storage FUSE-CSI-Treiber für Google Kubernetes Engine verwenden, geben Sie eine der folgenden Optionen an:

  2. Optional: Aktivieren Sie parallele Downloads, indem Sie eine der folgenden Optionen auf true setzen, wenn parallele Downloads nicht automatisch aktiviert wurden:

  3. Sie können die Gesamtkapazität, die der Cloud Storage FUSE-Cache in seinem eingebundenen Verzeichnis verwenden kann, begrenzen, indem Sie eine der folgenden Optionen anpassen, die automatisch auf den Wert -1 festgelegt wird, wenn Sie ein Cache-Verzeichnis angeben:

    Sie können auch einen Wert in MiB oder GiB angeben, um die Cachegröße zu begrenzen.

  4. Optional: Umgehen Sie den TTL-Ablauf von Cache-Einträgen und stellen Sie Dateimetadaten aus dem Cache bereit, sofern sie verfügbar sind. Verwenden Sie dazu eine der folgenden Methoden und legen Sie den Wert -1 fest:

    Der Standardwert ist 60 Sekunden. Mit dem Wert -1 wird er auf unbegrenzt festgelegt. Sie können auch einen hohen Wert angeben, der Ihren Anforderungen entspricht. Wir empfehlen, den Wert ttl-secs so hoch wie möglich für Ihre Arbeitslast festzulegen. Weitere Informationen zum Festlegen einer TTL für im Cache gespeicherte Einträge finden Sie unter Gültigkeitsdauer.

  5. Optional: Aktivieren Sie die Möglichkeit des Dateicaches, die gesamte Datei asynchron in den Cache zu laden, wenn der erste Lesevorgang der Datei an einer anderen Stelle als offset 0 beginnt. So können nachfolgende Lesevorgänge verschiedener Offsets aus derselben Datei auch aus dem Cache bereitgestellt werden. Wenden Sie eine der folgenden Methoden an und legen Sie die Option auf true fest:

  6. Optional: Konfigurieren Sie das Statistik-Caching und das Typ-Caching. Weitere Informationen zu Statistik- und Typ-Caches finden Sie unter Übersicht über Typ-Caching oder Übersicht über das Statistik-Caching.

  7. Führen Sie den Befehl ls -R in Ihrem bereitgestellten Bucket manuell aus, bevor Sie die Arbeitslast ausführen, um Metadaten vorab auszufüllen. So wird sichergestellt, dass der Typ-Cache vor dem ersten Lesevorgang mit einer schnelleren Batchmethode gefüllt wird. Weitere Informationen zur Verbesserung der Leseleistung beim ersten Mal finden Sie unter Leseleistung beim ersten Mal verbessern.

Wenn Sie das Datei-Caching aktivieren, werden parallele Downloads in Cloud Storage FUSE-Versionen 2.12 und höher automatisch aktiviert. Wenn Sie eine ältere Version von Cloud Storage FUSE verwenden, legen Sie die Option enable-parallel-downloads auf true fest, um parallele Downloads zu aktivieren.

Unterstützende Eigenschaften für parallele Downloads konfigurieren

Sie können die folgenden unterstützenden Eigenschaften für parallele Downloads optional mit der Cloud Storage FUSE CLI oder einer Cloud Storage FUSE-Konfigurationsdatei konfigurieren:

Beschreibung des Attributs Befehlszeilenoption Feld der Konfigurationsdatei
Die maximale Anzahl von Workern, die pro Datei erstellt werden können, um das Objekt aus Cloud Storage in den Dateicache herunterzuladen. --file-cache-parallel-downloads-per-file file-cache:parallel-downloads-per-file
Die maximale Anzahl von Workern, die zu einem bestimmten Zeitpunkt für alle Dateidownloadjobs zusammen gestartet werden können. Die Standardeinstellung ist auf die doppelte Anzahl der CPU-Kerne auf Ihrer Maschine festgelegt. Wenn Sie kein Limit angeben möchten, geben Sie den Wert „-1“ ein. --file-cache-max-parallel-downloads file-cache:max-parallel-downloads
Die Größe jeder Leseanfrage in MiB, die jeder Worker an Cloud Storage sendet, wenn er das Objekt in den Dateicache herunterlädt. Beachten Sie, dass ein paralleler Download nur ausgelöst wird, wenn die gelesene Datei die angegebene Größe hat. --file-cache-download-chunk-size-mb file-cache:download-chunk-size-mb

Parallele Downloads deaktivieren

Wenn Sie parallele Downloads deaktivieren möchten, legen Sie eine der folgenden Optionen auf false fest:

  • --file-cache-enable-parallel-downloads-Befehlszeilenoption
  • Feld file-cache:enable-parallel-downloads

Nächste Schritte