In diesem Dokument finden Sie eine Übersicht über das Datei-Caching mit Cloud Storage FUSE und eine Anleitung zum Konfigurieren und Verwenden des Datei-Cachings.
Das Datei-Caching mit Cloud Storage FUSE ist ein clientseitiger Lese-Cache, der die Leistung von Lesevorgängen verbessert, indem wiederholte Dateilesevorgänge aus einem schnelleren Cache-Speicher Ihrer Wahl bereitgestellt werden. Wenn das Datei-Caching aktiviert ist, speichert Cloud Storage FUSE Kopien häufig aufgerufener Dateien lokal. Dadurch können nachfolgende Lesevorgänge direkt aus dem Cache bereitgestellt werden, was die Latenz reduziert 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: Das Datei-Caching verbessert die Latenz und den 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 Datei-Cache aktiviert ist. Bei parallelen Downloads werden mehrere Worker verwendet, um eine Datei parallel herunterzuladen. Dabei wird das Datei-Cache-Verzeichnis als Prefetch-Puffer verwendet. Dadurch kann die Ladezeit des Modells um bis zu neun Mal verkürzt werden. Wir empfehlen, parallele Downloads für Szenarien mit nur einem Lese-Thread zu verwenden, bei denen große Dateien geladen werden, z. B. bei der Modellbereitstellung und beim Wiederherstellen von Prüfpunkten.
Vorhandene Kapazität nutzen: Beim Datei-Caching kann die vorhandene bereitgestellte Maschinen kapazitä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,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: Das Datei-Caching erhöht die Cloud-GPU- und Cloud TPU-Auslastung, da Daten schneller geladen werden. Dadurch wird die Trainingszeit verkürzt und ein höheres Preis-Leistungs-Verhältnis für Arbeitslasten für künstliche Intelligenz und maschinelles Lernen (KI/ML) erzielt.
Parallele Downloads
Parallele Downloads können die Leseleistung verbessern, indem mehrere Worker verwendet werden, um mehrere Teile einer Datei parallel herunterzuladen. Dabei wird das Datei-Cache-Verzeichnis als Prefetch-Puffer verwendet. Wir empfehlen, parallele Downloads für Leseszenarien zu verwenden, bei denen große Dateien geladen werden, z. B. bei der Modellbereitstellung, beim Wiederherstellen von Checkpoints und beim Training mit großen Objekten.
Anwendungsfälle für das Aktivieren des Datei-Caching mit parallelen Downloads:
| Anwendungsfalltyp | Beschreibung |
|---|---|
| Training | Aktivieren Sie das Datei-Caching, wenn die Daten, auf die Sie zugreifen möchten, mehrmals gelesen werden, entweder dieselbe Datei mehrmals oder verschiedene Offsets derselben Datei. Wenn das Dataset größer als der Datei-Cache ist, sollte der Datei-Cache deaktiviert bleiben. Verwenden Sie stattdessen eine der folgenden Methoden: |
| Bereitstellen von Modellgewichtungen und Lesen von Checkpoints | Aktivieren Sie das Datei-Caching mit parallelen Downloads, um parallele Downloads nutzen zu können. Dadurch werden große Dateien viel schneller geladen, als wenn das Datei-Caching und parallele Downloads nicht verwendet werden. |
Hinweise
Gültigkeitsdauer des Datei-Cache (Time-to-Live, TTL): 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
GETAufruf 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 gültig bleibt (d. h. die Objektgenerierung hat sich nicht geändert), wird der Inhalt erst dann aus dem Cache bereitgestellt, wenn der Attributaufruf seine Gültigkeit bestätigt. Bei beiden Vorgängen treten Netzwerklatenzen auf.Ungültigmachen des Datei-Cache: Wenn ein Cloud Storage FUSE-Client eine im Cache gespeicherte Datei oder ihre Attribute ändert, wird der Cache-Eintrag dieses Clients sofort ungültig gemacht , um die Konsistenz zu gewährleisten. Andere Clients, die auf dieselbe Datei zugreifen, lesen jedoch weiterhin ihre im Cache gespeicherten Versionen, bis ihre individuellen TTL-Einstellungen eine Ungültigmachung verursachen.
Dateigröße und verfügbare Kapazität: Die gelesene Datei muss in die verfügbare Kapazität des Datei-Cache-Verzeichnisses passen. Die verfügbare Kapazität kann mit der Option
--file-cache-max-size-mboder demfile-cache:max-size-mbFeld gesteuert werden.Cache-Bereinigung: Das Entfernen von im Cache gespeicherten Metadaten und Daten basiert auf einem Algorithmus der am längsten zurückliegenden Verwendung (Least Recently Used, LRU), 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 einGET-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 Aufheben der Bereitstellung und bei Neustarts nicht beibehalten. Beim Datei-Caching werden die Metadateneinträge, die zum Bereitstellen von Dateien aus dem Cache erforderlich sind, beim Aufheben der Bereitstellung und bei Neustarts entfernt. Daten im Datei-Cache sind jedoch möglicherweise weiterhin im Dateiverzeichnis vorhanden. Wir empfehlen, Daten im Datei-Cache-Verzeichnis nach dem Aufheben der Bereitstellung oder nach Neustarts 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 Datei-Cache 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 löst das Lesen von einem anderen Offset 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, setzen Sie entweder die
--file-cache-cache-file-for-range-readOption oder dasfile-cache:cache-file-for-range-readFeld auftrue.Wir empfehlen, diese Eigenschaft 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 mit der Option
--cache-diroder demcache-dirFeld 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 mehrfacher Zugriff auf den Datei-Cache: 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: Aktivieren Sie das Caching nur für einen bestimmten Bucket mithilfe der statischen Bereitstellung. Weitere Informationen finden Sie unter Statische Bereitstellung von Cloud Storage FUSE.
Nur einen bestimmten Ordner oder ein bestimmtes Verzeichnis im Cache speichern: Stellen Sie nur einen bestimmten Ordner auf Bucket-Ebene bereit und speichern Sie ihn im Cache, anstatt einen ganzen Bucket bereitzustellen. Weitere Informationen finden Sie unter Verzeichnis in einem Bucket bereitstellen.
Hinweis
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:
Informationen zu Google Cloud Hyperdisk finden Sie unter Neues Google Cloud Hyperdisk-Volume erstellen.
Informationen zu Persistent Disk finden Sie unter Neues Persistent Disk-Volume erstellen.
Informationen zu lokalen SSDs finden Sie unter Lokale SSD zu VM hinzufügen.
Informationen zu speicherinternen RAM-Disks finden Sie unter Speicherinterne RAM-Disks erstellen.
Datei-Caching-Verhalten aktivieren und konfigurieren
Wählen Sie eine der folgenden Methoden aus, um das Datei-Caching zu aktivieren und zu konfigurieren:
Geben Sie es als Wert für eine
gcsfuseOption anGeben Sie es in einer Cloud Storage FUSE-Konfigurationsdatei an.
Geben Sie das Cache-Verzeichnis an, das Sie verwenden möchten. Verwenden Sie dazu eine der folgenden Methoden. So können Sie den Datei-Cache für Bereitstellungen aktivieren, die nicht auf der Google Kubernetes Engine basieren:
gcsfuse-Option:--cache-dir- Feld in der Konfigurationsdatei:
cache-dir
Wenn Sie eine Google Kubernetes Engine-Bereitstellung mit dem Cloud Storage FUSE-CSI-Treiber für die Google Kubernetes Engine verwenden, geben Sie eine der folgenden Methoden an:
gcsfuse-Option:--file-cache-max-size-mb- Feld in der Konfigurationsdatei:
file-cache:max-size-mb
Optional: Aktivieren Sie parallele Downloads, indem Sie eine der folgenden Methoden auf
truesetzen, wenn parallele Downloads nicht automatisch aktiviert wurden:gcsfuse-Option:--file-cache-enable-parallel-downloads- Feld in der Konfigurationsdatei:
file-cache:enable-parallel-downloads
Begrenzen Sie die Gesamtkapazität, die der Cloud Storage FUSE-Cache in seinem bereitgestellten Verzeichnis verwenden kann, indem Sie eine der folgenden Optionen anpassen. Diese wird automatisch auf
-1gesetzt, wenn Sie ein Cache-Verzeichnis angeben:gcsfuse-Option:--file-cache-max-size-mb- Feld in der Konfigurationsdatei:
file-cache:max-size-mb
Sie können auch einen Wert in MiB oder GiB angeben, um die Cache-Größe zu begrenzen.
Optional: Umgehen Sie den TTL-Ablauf von im Cache gespeicherten Einträgen und stellen Sie Dateimetadaten aus dem Cache bereit, wenn sie verfügbar sind. Verwenden Sie dazu eine der folgenden Methoden und setzen Sie den Wert auf
-1:gcsfuse-Option:--metadata-cache-ttl-secs- Feld in der Konfigurationsdatei:
metadata-cache:ttl-secs
Der Standardwert ist 60 Sekunden. Mit dem Wert
-1wird er auf unbegrenzt gesetzt. Sie können auch einen hohen Wert angeben, der Ihren Anforderungen entspricht. Wir empfehlen, den Wertttl-secsso hoch wie möglich für Ihre Arbeitslast festzulegen. Weitere Informationen zur TTL für im Cache gespeicherte Einträge finden Sie unter Hinweise.Optional: Aktivieren Sie die Möglichkeit des Datei-Cache, die gesamte Datei asynchron in den Cache zu laden, wenn der erste Lesevorgang der Datei an einer anderen Stelle als
offset 0beginnt. So können auch nachfolgende Lesevorgänge verschiedener Offsets aus derselben Datei aus dem Cache bereitgestellt werden. Verwenden Sie eine der folgenden Methoden und setzen Sie die Option auftrue:gcsfuse-Option:--file-cache-cache-file-for-range-read- Feld in der Konfigurationsdatei:
file-cache:cache-file-for-range-read
Optional: Konfigurieren Sie das Statistik-Caching. Weitere Informationen zum Statistik cache finden Sie unter Übersicht über das Statistik-Caching.
Führen Sie den Befehl
ls -Rin Ihrem bereitgestellten Bucket manuell aus, bevor Sie die Arbeitslast ausführen, um Metadaten vorab auszufüllen. So wird sichergestellt, dass der Statistik-Cache vor dem ersten Lesevorgang mit einer schnelleren Batchmethode gefüllt wird. Weitere Informationen zum Verbessern 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, setzen Sie die Option enable-parallel-downloads auf true, um parallele Downloads zu aktivieren.
Unterstützende Eigenschaften für parallele Downloads konfigurieren
Optional können Sie die folgenden unterstützenden Eigenschaften für parallele Downloads mit der Cloud Storage FUSE-Befehlszeile oder einer Cloud Storage FUSE-Konfigurationsdatei konfigurieren:
| Beschreibung der Eigenschaft | gcsfuse-Option |
Feld in der Konfigurationsdatei |
|---|---|---|
| Die maximale Anzahl von Workern, die pro Datei erstellt werden können, um das Objekt aus Cloud Storage in den Datei-Cache herunterzuladen | --file-cache-parallel-downloads-per-file |
file-cache:parallel-downloads-per-file |
| Die maximale Anzahl von Workern, die jederzeit für alle Dateidownloadjobs erstellt 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 senden kann, wenn das Objekt in den Datei Cache heruntergeladen wird 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, setzen Sie eine der folgenden Optionen auf false:
gcsfuse-Option:--file-cache-enable-parallel-downloads- Feld in der Konfigurationsdatei:
file-cache:enable-parallel-downloads
Cachefähigkeit auf Dateiebene mit regulären Ausdrücken steuern
Standardmäßig werden alle gelesenen Dateien im Cache gespeichert. Sie können steuern, welche Dateien auf Dateiebene im Cache gespeichert werden, indem Sie die optionalen Felder include-regex und exclude-regex in der file-cache-Konfiguration verwenden. In diesen Feldern können Sie reguläre Ausdrücke angeben, die mit Dateipfaden im Format bucket_name/object_key übereinstimmen.
Bestimmte Dateien für das Caching einschließen
Wenn Sie nur Dateien im Cache speichern möchten, die einem bestimmten Muster entsprechen, verwenden Sie die Option include-regex. Alle Dateien, die nicht mit diesem regulären Ausdruck übereinstimmen, werden nicht im Cache gespeichert.
Wenn Sie beispielsweise nur .tfrecord-Dateien aus Ihrem Trainingsdataset im Cache speichern möchten, geben Sie Folgendes in Ihrer Konfigurationsdatei an:
file-cache:
include-regex: ".*\\.tfrecord$"
Oder verwenden Sie das Flag --file-cache-include-regex:
gcsfuse --file-cache-include-regex ".*\\.(tfrecord)$" ..
Bestimmte Dateien vom Caching ausschließen
Wenn Sie verhindern möchten, dass bestimmte Dateien im Cache gespeichert werden, verwenden Sie die Option exclude-regex.
Alle Dateien, die mit diesem regulären Ausdruck übereinstimmen, werden nicht im Cache gespeichert. Wenn Sie beispielsweise alle Dateien in einem Verzeichnis mit dem Namen logs/ ausschließen möchten, geben Sie Folgendes in Ihrer Konfigurationsdatei an:
file-cache:
exclude-regex: ".*/logs/.*"
Oder verwenden Sie das Flag --file-cache-exclude-regex:
gcsfuse --file-cache-exclude-regex ".*/logs/.*" ..
Einschluss- und Ausschlussregeln zusammen verwenden
Sie können sowohl include-regex als auch exclude-regex gleichzeitig verwenden. Die Regel exclude-regex wird immer zuerst ausgewertet. Wenn eine Datei mit exclude-regex übereinstimmt, wird sie nicht im Cache gespeichert, auch wenn sie auch mit include-regex übereinstimmt.
Wenn Sie beispielsweise alle .tfrecord-Dateien mit Ausnahme der Dateien im Verzeichnis output/ im Cache speichern möchten, geben Sie Folgendes in Ihrer Konfigurationsdatei an:
file-cache:
include-regex: ".*\\.tfrecord$"
exclude-regex: ".*/output/.*"
Oder verwenden Sie beide Flags:
gcsfuse --file-cache-include-regex ".*\\.tfrecord$" --file-cache-exclude-regex ".*/output/.*" ..