Dateicaching in Cloud Storage FUSE

Dieses Dokument bietet einen Überblick über das Datei-Caching mit Cloud Storage FUSE und eine Anleitung zum Konfigurieren und Verwenden des Datei-Cachings.

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 für kleine und zufällige E/A-Vorgänge: 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 automatisch aktiviert: Parallele Downloads werden in Cloud Storage FUSE-Versionen 2.12 und höher automatisch aktiviert, wenn der Dateicache 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 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 die Aktivierung des Datei-Cachings mit parallelen Downloads:

Art des Anwendungsfalls 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 Lesen von 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

  • Gültigkeitsdauer (TTL) des Datei-Cache: Wenn ein Datei-Cache-Eintrag noch nicht anhand seiner TTL abgelaufen ist und sich die Datei im Cache befindet, werden Lesevorgänge für diese Datei aus dem lokalen Client-Cache bereitgestellt, ohne dass eine Anfrage an Cloud Storage gesendet wird.

  • Ablauf von Datei-Cache-Einträgen: Wenn ein Datei-Cache-Eintrag abgelaufen ist, wird zuerst ein GET-Aufruf für Dateiattribute an Cloud Storage gesendet. Wenn die Datei fehlt oder sich ihre Attribute oder Inhalte geändert haben, werden die neuen Inhalte abgerufen. Wenn die Attribute nur ungültig gemacht wurden, der Inhalt aber weiterhin gültig ist, d. h., die Objektgenerierung sich nicht geändert hat, wird der Inhalt erst dann aus dem Cache bereitgestellt, wenn durch den Attributaufruf seine Gültigkeit bestätigt wird. Beide Vorgänge unterliegen Netzwerklatenzen.

  • Ungültigmachen des Dateicaches: Wenn ein Cloud Storage FUSE-Client eine im Cache gespeicherte Datei oder ihre Attribute ändert, wird der Cacheeintrag dieses Clients zur Gewährleistung der Konsistenz sofort ungültig gemacht. Andere Clients, die auf dieselbe Datei zugreifen, lesen jedoch weiterhin ihre im Cache gespeicherten Versionen, bis ihre individuellen TTL-Einstellungen eine Ungültigkeit verursachen.

  • Dateigröße und verfügbare Kapazität: Die gelesene Datei muss in die verfügbare Kapazität des Dateicache-Verzeichnisses passen. Die verfügbare Kapazität kann entweder mit der Option --file-cache-max-size-mb oder mit dem Feld file-cache:max-size-mb gesteuert werden.

  • Cache-Entfernung: Das Entfernen von im Cache gespeicherten Metadaten und Daten basiert auf einem LRU-Algorithmus (Least Recently Used, am weitesten in der Vergangenheit verwendet), 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 Unmounten 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.

  • Verwaltung von zufälligen und partiellen 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.

    Standardmäßig wird durch das Lesen von einem anderen Offset kein asynchroner vollständiger Dateiabruf ausgelöst. Um dieses Verhalten zu ändern, sodass Cloud Storage FUSE bei einem ersten zufälligen Lesevorgang eine Datei in den Cache aufnimmt, setzen Sie entweder die Option --file-cache-cache-file-for-range-read oder das Feld file-cache:cache-file-for-range-read auf true.

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

  • Datensicherheit: Wenn Sie das Caching aktivieren, verwendet Cloud Storage FUSE das Cache-Verzeichnis, das Sie entweder mit der Option --cache-dir oder dem Feld cache-dir 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.

  • Mehrere Cloud Storage FUSE-Prozesse auf demselben Computer ausführen: 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

  1. Wählen Sie eine der folgenden Methoden aus, um das Dateicaching zu aktivieren und zu konfigurieren:

  2. 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 Methoden an:

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

  4. 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.

  5. 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 zu setzen, wie es Ihrer Arbeitslast möglich ist. Weitere Informationen zur TTL für im Cache gespeicherte Einträge finden Sie unter Überlegungen.

  6. 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 auch nachfolgende Lesevorgänge mit anderen Offsets aus derselben Datei aus dem Cache bereitgestellt werden. Wenden Sie eine der folgenden Methoden an und legen Sie die Option auf true fest:

  7. 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.

  8. 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 gcsfuse-Option 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 einen der folgenden Werte auf false fest:

  • gcsfuse-Option: --file-cache-enable-parallel-downloads
  • Feld in der Konfigurationsdatei: file-cache:enable-parallel-downloads

Nächste Schritte