La mise en cache de fichiers Cloud Storage FUSE est un cache de lecture côté client qui améliore les performances des opérations de lecture en diffusant les lectures de fichiers répétées à partir d'un stockage de cache plus rapide de votre choix. Lorsque la mise en cache des fichiers est activée, Cloud Storage FUSE stocke localement des copies des fichiers fréquemment consultés, ce qui permet de diffuser les lectures ultérieures directement à partir du cache, ce qui réduit la latence et améliore le débit.
Avantages de la mise en cache de fichiers
La mise en cache des fichiers offre les avantages suivants :
Améliore les performances pour les petites E/S aléatoires : la mise en cache des fichiers améliore la latence et le débit en diffusant des lectures directement à partir du support de cache. Les petites opérations d'E/S aléatoires peuvent être beaucoup plus rapides lorsqu'elles sont traitées à partir du cache.
Exploite les téléchargements parallèles : les téléchargements parallèles sont activés automatiquement sur les versions 2.12 et ultérieures de Cloud Storage FUSE lorsque le cache de fichiers est activé. Les téléchargements parallèles utilisent plusieurs nœuds de calcul pour télécharger un fichier en parallèle à l'aide du répertoire de cache de fichiers comme tampon de préchargement, ce qui peut multiplier par neuf le temps de chargement du modèle. Nous vous recommandons d'utiliser des téléchargements parallèles pour les scénarios de lecture à thread unique qui chargent de gros fichiers, tels que la mise en service du modèle et la restauration des points de contrôle.
Utiliser la capacité existante : la mise en cache de fichiers peut utiliser la capacité de machine existante provisionnée pour votre répertoire de cache sans frais de stockage supplémentaire. Cela inclut les disques SSD locaux fournis avec des types de machines GPU Cloud tels que
a2-ultragpu
,a3-highgpu
, Persistent Disk (qui est le disque de démarrage utilisé par chaque VM) ou/tmpfs
en mémoire.Frais réduits : les succès de cache (hits) sont diffusés localement et n'entraînent aucuns frais de réseau ni de fonctionnement Cloud Storage.
Amélioration du coût total de possession pour l'entraînement d'IA et de ML : la mise en cache de fichiers augmente l'utilisation des GPU Cloud et des Cloud TPU en chargeant les données plus rapidement, ce qui réduit le temps d'entraînement et offre un meilleur rapport performances-prix pour les charges de travail d'entraînement d'intelligence artificielle et de machine learning (IA/ML).
Téléchargements parallèles
Les téléchargements parallèles peuvent améliorer les performances de lecture en utilisant plusieurs nœuds de calcul pour télécharger plusieurs parties d'un fichier en parallèle à l'aide du répertoire de cache de fichiers comme tampon de préchargement. Nous vous recommandons d'utiliser des téléchargements parallèles pour les scénarios de lecture qui chargent de gros fichiers, tels que la mise en service du modèle, la restauration des points de contrôle et l'entraînement sur des objets volumineux.
Voici quelques cas d'utilisation de l'activation de la mise en cache de fichiers avec les téléchargements parallèles :
Type de cas d'utilisation | Description |
---|---|
Formation | Activez la mise en cache des fichiers si les données auxquelles vous souhaitez accéder sont lues plusieurs fois, qu'il s'agisse du même fichier plusieurs fois ou de différents décalages du même fichier. Si l'ensemble de données est plus volumineux que le cache de fichiers, le cache de fichiers doit rester désactivé. Utilisez plutôt l'une des méthodes suivantes : |
Diffusion des pondérations du modèle et lectures des points de contrôle | Activez la mise en cache de fichiers avec les téléchargements parallèles pour pouvoir utiliser les téléchargements parallèles, qui chargent les fichiers volumineux beaucoup plus rapidement que si la mise en cache de fichiers et les téléchargements parallèles ne sont pas utilisés. |
Remarques
Les sections suivantes fournissent des informations importantes à prendre en compte pour utiliser la mise en cache des fichiers.
Taille du fichier et capacité disponible
Le fichier en cours de lecture doit correspondre à la capacité disponible dans le répertoire de cache de fichiers, qui peut être contrôlée à l'aide de l'option CLI --file-cache-max-size-mb
ou du champ file-cache:max-size-mb
.
Gestion des lectures aléatoires et partielles
Si la première opération de lecture du fichier commence depuis le début du fichier, au décalage 0
, le cache de fichiers Cloud Storage FUSE ingère et charge l'intégralité du fichier dans le cache, même si vous ne lisez que des données à partir d'un petit sous-ensemble de plages. Cela permet de diffuser directement à partir du cache les lectures aléatoires ou partielles ultérieures du même objet.
Si la première opération de lecture d'un fichier commence à un décalage autre que 0
, Cloud Storage FUSE ne déclenche pas, par défaut, une récupération asynchrone du fichier complet.
Pour modifier ce comportement afin que Cloud Storage FUSE ingère un fichier dans le cache lors d'une première lecture aléatoire, utilisez l'une des méthodes suivantes pour définir le comportement sur true
:
Nous vous recommandons d'activer cette propriété si de nombreuses opérations de lecture aléatoires ou partielles différentes sont effectuées sur le même objet.
Éviction du cache
L'éviction des métadonnées et des données mises en cache est basée sur un algorithme le moins récemment utilisé (LRU, least recently used) qui commence une fois que le seuil d'espace configuré par limite --file-cache-max-size-mb
est atteint. Si l'entrée expire en fonction de sa valeur TTL, un appel de métadonnées GET
est d'abord effectué vers Cloud Storage et est soumis aux latences du réseau. Puisque les données et les métadonnées sont gérées séparément, une entité peut être évincée ou invalidée, sans nécessiter que l'autre le soit aussi.
Persistance du cache
Les caches Cloud Storage FUSE ne sont pas conservés lors des démontages et des redémarrages. Pour la mise en cache des fichiers, bien que les entrées de métadonnées nécessaires pour diffuser les fichiers à partir du cache soient supprimées lors des démontages et des redémarrages, les données du cache de fichiers peuvent toujours être présentes dans le répertoire de fichiers. Nous vous recommandons de supprimer les données du répertoire du cache de fichiers après le démontage ou le redémarrage.
Sécurité des données
Lorsque vous activez la mise en cache, Cloud Storage FUSE utilise le répertoire de cache que vous avez spécifié à l'aide de l'une des méthodes suivantes comme répertoire sous-jacent pour le cache afin de conserver les fichiers de votre bucket Cloud Storage dans un format chiffré :
Tout utilisateur ou processus ayant accès à ce répertoire de cache peut accéder à ces fichiers. Nous vous recommandons de limiter l'accès à ce répertoire.
Accès direct ou multiple au cache de fichiers
L'utilisation d'un processus autre que Cloud Storage FUSE pour accéder à un fichier dans le répertoire du cache ou le modifier peut entraîner une corruption des données. Les caches Cloud Storage FUSE sont spécifiques à chaque processus Cloud Storage FUSE en cours d'exécution et ne sont pas partagés entre les différents processus Cloud Storage FUSE s'exécutant sur la même machine ou sur des machines différentes. Par conséquent, nous vous déconseillons d'utiliser le même répertoire de cache pour différents processus FUSE Cloud Storage.
Si plusieurs processus Cloud Storage FUSE doivent s'exécuter sur la même machine, chacun d'entre eux doit obtenir son propre répertoire de cache ou utiliser l'une des méthodes suivantes pour éviter que vos données ne soient corrompues :
Installer tous les buckets avec un cache partagé : utilisez l'installation dynamique pour installer tous les buckets auxquels vous avez accès dans un même processus avec un cache partagé. Pour en savoir plus, consultez Installation dynamique de Cloud Storage FUSE.
Activer la mise en cache sur un bucket spécifique : activez la mise en cache sur un bucket spécifique à l'aide de l'installation statique. Pour en savoir plus, consultez Installation statique de Cloud Storage FUSE.
Mettre en cache uniquement un dossier ou un répertoire spécifique : installez et mettez en cache uniquement un dossier spécifique au niveau du bucket au lieu d'installer un bucket entier. Pour en savoir plus, consultez Installer un répertoire dans un bucket.
Avant de commencer
Le cache de fichiers nécessite un chemin de répertoire à utiliser pour mettre en cache les fichiers. Vous pouvez créer un répertoire sur un système de fichiers existant ou créer un système de fichiers sur un espace de stockage provisionné. Si vous provisionnez un nouvel espace de stockage à utiliser, suivez les instructions ci-dessous pour créer un système de fichiers :
Pour Google Cloud Hyperdisk, consultez la section Créer un volume Google Cloud Hyperdisk.
Pour Persistent Disk, consultez la section Créer un volume Persistent Disk.
Pour les disques SSD locaux, consultez la section Ajouter un disque SSD local à votre VM.
Pour les disques RAM en mémoire, consultez la section Créer des disques RAM en mémoire.
Activer et configurer le comportement de mise en cache des fichiers
Activez et configurez la mise en cache de fichiers à l'aide de l'une des options suivantes :
- Options de l'interface de ligne de commande Cloud Storage FUSE
- Fichier de configuration Cloud Storage FUSE
- Vous pouvez également utiliser des exemples de configurations. Pour en savoir plus, consultez Exemple de configuration pour activer la mise en cache des fichiers et les téléchargements parallèles.
Spécifiez le répertoire de cache que vous souhaitez utiliser à l'aide de l'une des méthodes suivantes. Cela vous permet d'activer le cache de fichiers pour les déploiements non Google Kubernetes Engine :
Si vous utilisez un déploiement Google Kubernetes Engine avec le pilote CSI Cloud Storage FUSE pour Google Kubernetes Engine, spécifiez l'une des options suivantes :
Facultatif : activez les téléchargements parallèles en définissant l'une des options suivantes sur
true
si les téléchargements parallèles n'ont pas été activés automatiquement :Limitez la capacité totale que le cache Cloud Storage FUSE peut utiliser dans son répertoire installé en ajustant l'une des options suivantes, qui est automatiquement définie sur la valeur
-1
lorsque vous spécifiez un répertoire de cache :Vous pouvez également spécifier une valeur en Mio ou en Gio pour limiter la taille du cache.
Facultatif : contournez le délai d'expiration TTL des entrées mises en cache et diffusez les métadonnées du fichier à partir du cache si elles sont disponibles en utilisant l'une des méthodes suivantes et en définissant la valeur
-1
:La valeur par défaut est de 60 secondes. Si vous définissez la valeur sur
-1
, la durée devient illimitée. Vous pouvez également spécifier une valeur élevée en fonction de vos besoins. Nous vous recommandons de définir la valeurttl-secs
sur une valeur aussi élevée que le permet votre charge de travail. Pour en savoir plus sur la définition d'une valeur TTL pour les entrées mises en cache, consultez Valeur TTL (Time To Live).Facultatif : activez la capacité du cache de fichiers à charger de manière asynchrone l'intégralité du fichier dans le cache si la première opération de lecture du fichier commence à partir d'un emplacement autre que
offset 0
, afin que les lectures ultérieures de différents décalages du même fichier puissent également être traitées à partir du cache. Utilisez l'une des méthodes suivantes et définissez l'option surtrue
:Facultatif : configurez la mise en cache des statistiques et des types. Pour en savoir plus sur les caches de statistiques et de types, consultez la page Présentation de la mise en cache des types ou Présentation de la mise en cache des statistiques.
Exécutez manuellement la commande
ls -R
sur votre bucket installé avant d'exécuter la charge de travail pour préremplir les métadonnées. Vous vous assurez ainsi que le cache de types est bien rempli avant la première lecture avec une méthode par lot plus rapide. Pour savoir comment améliorer les performances de la première lecture, consultez la page Améliorer les performances de la première lecture.
Une fois la mise en cache des fichiers activée, les téléchargements parallèles sont automatiquement activés sur les versions 2.12 et ultérieures de Cloud Storage FUSE. Si vous utilisez une ancienne version de Cloud Storage FUSE, définissez l'option enable-parallel-downloads
sur true
pour activer les téléchargements parallèles.
Configurer les propriétés de compatibilité pour les téléchargements parallèles
Vous pouvez éventuellement configurer les propriétés de compatibilité suivantes pour les téléchargements parallèles à l'aide de l'interface de ligne de commande Cloud Storage FUSE ou d'un fichier de configuration Cloud Storage FUSE :
Description de la propriété | Option CLI | Champ du fichier de configuration |
---|---|---|
Nombre maximal de nœuds de calcul pouvant être générés par fichier pour télécharger l'objet de Cloud Storage dans le cache de fichiers. | --file-cache-parallel-downloads-per-file |
file-cache:parallel-downloads-per-file |
Nombre maximal de nœuds de calcul pouvant être lancés à un même moment pour tous les jobs de téléchargement de fichiers. La valeur par défaut est le double du nombre de cœurs de processeur de votre machine. Pour spécifier qu'il n'y a pas de limite, saisissez la valeur "-1". | --file-cache-max-parallel-downloads |
file-cache:max-parallel-downloads |
Taille en Mio de chaque requête de lecture que chaque nœud de calcul envoie à Cloud Storage lors du téléchargement de l'objet dans le cache de fichiers. Notez qu'un téléchargement parallèle ne se déclenche que si la taille du fichier en cours de lecture est spécifiée. | --file-cache-download-chunk-size-mb |
file-cache:download-chunk-size-mb |
Désactiver les téléchargements parallèles
Pour désactiver les téléchargements parallèles, définissez l'une des options suivantes sur false
:
- Option CLI
--file-cache-enable-parallel-downloads
- Champ
file-cache:enable-parallel-downloads
Étapes suivantes
Consultez les considérations relatives à la mise en cache dans Cloud Storage FUSE.
Découvrez comment améliorer les performances de Cloud Storage FUSE.