Optimiser le pilote CSI Cloud Storage FUSE pour les performances de GKE


Ce guide explique comment optimiser les performances du pilote CSI FUSE Cloud Storage sur Google Kubernetes Engine (GKE).

Bien que Cloud Storage FUSE offre une flexibilité et une évolutivité, une configuration et un réglage minutieux sont essentiels pour obtenir des performances optimales. Les performances de Cloud Storage FUSE peuvent différer de celles d'un système de fichiers POSIX en termes de latence, de débit et de cohérence. L'objectif du réglage est de réduire les coûts des opérations de métadonnées et de maximiser l'efficacité de l'accès aux données. Si vous exécutez des applications d'IA/ML qui consomment des données dans des buckets Cloud Storage, le réglage du pilote CSI peut accélérer les temps d'entraînement et d'inférence de vos applications d'IA/ML.

Ce guide s'adresse aux développeurs et aux ingénieurs en machine learning (ML) qui souhaitent améliorer les performances de leurs applications qui accèdent aux données stockées dans des buckets Cloud Storage.

Avant de lire cette page, assurez-vous de connaître les principes de base de Cloud Storage, de Kubernetes et du pilote CSI Cloud Storage FUSE. Veillez également à consulter les exigences concernant les versions de GKE pour les fonctionnalités spécifiques que vous souhaitez utiliser.

Configurer les options d'installation

Le pilote CSI Cloud Storage FUSE est compatible avec les options d'installation pour configurer le mode d'installation des buckets Cloud Storage sur votre système de fichiers local. Pour obtenir la liste complète des options d'installation compatibles, consultez la documentation du fichier de la CLI Cloud Storage FUSE.

Vous pouvez spécifier des options d'installation comme suit, en fonction du type de volume que vous utilisez:

Volume éphémère CSI

Si vous utilisez des volumes éphémères CSI, spécifiez les options d'installation dans le champ spec.volumes[n].csi.volumeAttributes.mountOptions de votre fichier manifeste de pod.

Vous devez spécifier les options de montage sous la forme d'une chaîne, avec des options séparées par des virgules et sans espaces. Exemple :

  mountOptions: "implicit-dirs,file-cache:enable-parallel-downloads:true,file-cache:download-chunk-size-mb:3"

Volume persistant

Si vous utilisez des volumes persistants, spécifiez les options d'installation dans le champ spec.mountOptions de votre fichier manifeste PersistentVolume.

Vous devez spécifier les options de montage sous forme de liste. Exemple :

  mountOptions:
    - implicit-dirs
    - file-cache:enable-parallel-downloads:true
    - file-cache:download-chunk-size-mb:3

Remarques concernant le montage

Tenez compte des points suivants lorsque vous configurez des installations avec le pilote CSI:

Éléments généraux à prendre en compte

  • Les options suivantes ne sont pas autorisées : app-name, temp-dir, foreground, log-file, log-format, key-file, token-url et reuse-token-from-url.
  • Cloud Storage FUSE ne rend pas les répertoires implicites visibles par défaut.
  • Si vous souhaitez installer un répertoire uniquement dans le bucket plutôt que dans l'ensemble du bucket, transmettez le chemin d'accès relatif au répertoire à l'aide de l'option only-dir=relative/path/to/the/bucket/root.

Sécurité et autorisations

  • Si vous utilisez un Contexte de sécurité pour votre pod ou votre conteneur, ou si votre image de conteneur utilise un utilisateur ou un groupe non racine, vous devez définir les options d'installation uid et gid. Vous devez également utiliser les indicateurs de montage file-mode et dir-mode pour définir les autorisations du système de fichiers. Notez que vous ne pouvez pas exécuter les commandes chmod, chown ou chgrp sur un système de fichiers Cloud Storage FUSE. Utilisez donc les options d'installation uid, gid, file-mode et dir-mode pour obtenir un accès à un utilisateur ou à un groupe non racine.

Options d'installation du noyau Linux

  • Si vous devez configurer les options d'installation du noyau Linux, vous pouvez les transmettre via l'option o. Par exemple, si vous ne souhaitez pas autoriser l'exécution directe de binaires sur le système de fichiers installé, définissez l'option o=noexec. Chaque option nécessite un indicateur distinct, par exemple o=noexec,o=noatime. Seules les options suivantes sont autorisées: exec, noexec, atime, noatime, sync, async et dirsync.

Configurer la mise en cache

Cette section présente les options de mise en cache disponibles avec le pilote CSI Cloud Storage FUSE pour améliorer les performances.

Mise en cache de fichiers

Vous pouvez utiliser le pilote CSI Cloud Storage FUSE avec la mise en cache de fichiers pour améliorer les performances de lecture des applications qui gèrent de petits fichiers à partir de buckets Cloud Storage. La fonctionnalité de cache de fichiers Cloud Storage FUSE est un cache de lecture basé sur le client qui permet de diffuser plus rapidement des lectures de fichiers répétées à partir du stockage dans le cache de votre choix.

Vous pouvez choisir parmi une gamme d'options de stockage pour le cache en lecture, y compris des disques SSD locaux, un stockage basé sur disque persistant et un disque RAM (mémoire), en fonction de vos besoins en termes de rapport prix/performances.

Activer et utiliser la mise en cache de fichiers

Par défaut, la fonctionnalité de mise en cache des fichiers est désactivée sur GKE. Vous devez activer la mise en cache des fichiers avec le pilote CSI Cloud Storage FUSE.

Pour activer et contrôler la mise en cache des fichiers, définissez l'attribut de volume fileCacheCapacity ou utilisez l'option d'installation file-cache:max-size-mb.

Par défaut, GKE utilise un volume emptyDir pour la mise en cache des fichiers Cloud Storage FUSE sauvegardé par le stockage éphémère configuré sur le nœud. Il peut s'agir du disque de démarrage associé au nœud ou d'un SSD local sur le nœud. Si vous activez le disque SSD local sur le nœud, GKE utilise le disque SSD local pour sauvegarder le volume emptyDir.

Vous pouvez configurer un volume de cache de lecture personnalisé pour le conteneur side-car afin de remplacer le volume emptyDir par défaut pour la mise en cache de fichiers dans les opérations de lecture.

Pour en savoir plus sur les bonnes pratiques en matière de mise en cache de fichiers, consultez la page Performances de Cloud Storage FUSE.

Sélectionner le stockage pour sauvegarder votre cache de fichiers

Pour sélectionner l'espace de stockage à utiliser pour le cache de fichiers, tenez compte des considérations suivantes:

  • Pour les familles de VM de processeur et de GPU compatibles avec les disques SSD locaux (par exemple, les VM A3), nous vous recommandons d'utiliser des disques SSD locaux.

    • Pour les VM A3 et versions ultérieures, GKE configure automatiquement un SSD local pour vos pods.
    • Si votre famille de VM n'est pas compatible avec les SSD locaux, GKE utilise le disque de démarrage pour la mise en cache. Le type de disque par défaut pour le disque de démarrage sur GKE est pd-balanced.
    • Si votre famille de VM est compatible avec le SSD local, mais que le stockage éphémère sur le SSD local n'est pas activé par défaut, vous pouvez activer le SSD local dans votre pool de nœuds. Cela s'applique aux familles de machines de première et deuxième génération, telles que les machines N1 et N2. Pour en savoir plus, consultez Créer un cluster avec un SSD local.

      Pour vérifier si le stockage éphémère sur SSD local est activé sur votre nœud, exécutez la commande suivante:

      kubectl describe node <code><var>NODE_NAME</var></code> | grep "cloud.google.com/gke-ephemeral-storage-local-ssd"
      
  • Pour les familles de VM TPU, en particulier la version 6 et ultérieure, nous vous recommandons d'utiliser la RAM comme cache de fichiers pour obtenir les meilleures performances, car ces instances de VM disposent d'une RAM plus importante.

    • Lorsque vous utilisez la RAM, faites attention aux erreurs de mémoire insuffisante (OOM), car elles entraînent des perturbations des pods. Cloud Storage FUSE consomme de la mémoire. Par conséquent, configurer un cache de fichiers pour utiliser le conteneur sidecar peut entraîner des erreurs OOM. Pour éviter de tels scénarios, ajustez le champ file-cache:max-size-mb de la configuration du cache de fichiers à une valeur inférieure.
    • Pour les autres familles de TPU, nous vous recommandons d'utiliser pd-balanced ou pd-ssd. Le type de disque par défaut pour le disque de démarrage dans GKE est pd-balanced.
  • Évitez d'utiliser le disque de démarrage pour la mise en cache, car cela peut entraîner une diminution des performances et des arrêts inattendus. Envisagez plutôt d'utiliser un PersistentVolume associé à un disque persistant.

Utiliser la mise en cache de fichiers sur disque RAM

Vous pouvez utiliser un disque RAM pour le cache de fichiers ou le téléchargement parallèle afin de réduire les coûts liés à l'utilisation d'un disque de démarrage ou d'un disque persistant, si vous utilisez une VM TPU avec une RAM suffisamment importante.

Pour utiliser un disque RAM avec le pilote CSI Cloud Storage FUSE, ajoutez les éléments suivants à votre fichier manifeste:

volumes:
  - name: gke-gcsfuse-cache
    emptyDir:
      medium: Memory

Cache des statistiques

Le pilote CSI Cloud Storage FUSE améliore les performances en mettant en cache les métadonnées de fichier, telles que la taille et l'heure de modification. Le pilote CSI active ce cache d'état par défaut et réduit la latence en stockant les informations localement au lieu de les demander à plusieurs reprises à Cloud Storage. Vous pouvez configurer sa taille maximale (32 Mo par défaut) et la durée de conservation des données dans le cache (60 secondes par défaut). En ajustant le cache de métadonnées, vous pouvez réduire les appels d'API à Cloud Storage pour améliorer les performances et l'efficacité de l'application en minimisant le trafic réseau et la latence.

Pour en savoir plus sur les bonnes pratiques de mise en cache des statistiques, consultez la présentation de la mise en cache de Cloud Storage FUSE.

Utiliser la précharge de métadonnées pour préremplir le cache de métadonnées

La fonctionnalité de préchargement des métadonnées permet au pilote CSI Cloud Storage FUSE de charger de manière proactive les métadonnées pertinentes sur les objets de votre bucket Cloud Storage dans les caches Cloud Storage FUSE. Cette approche réduit les appels à Cloud Storage et est particulièrement bénéfique pour les applications qui accèdent à de grands ensembles de données contenant de nombreux fichiers, comme les charges de travail d'entraînement d'IA/ML.

Cette fonctionnalité nécessite GKE version 1.31.3-gke.1162000 ou ultérieure.

Pour constater des gains de performances grâce au préchargement des métadonnées, vous devez définir la valeur TTL (Time To Live) des éléments de cache de métadonnées sur "unlimited" (illimité). En règle générale, définir un TTL empêche le contenu mis en cache de devenir obsolète. Lorsque vous définissez la valeur TTL sur illimité, vous devez prendre soin de ne pas modifier le contenu du bucket en dehors de la bande (c'est-à-dire d'autoriser une autre charge de travail ou un autre acteur à modifier la charge de travail). Les modifications hors bande ne sont pas visibles localement et peuvent entraîner des problèmes de cohérence.

Pour activer le préchargement des métadonnées, procédez aux modifications de configuration ci-dessous. Nous vous recommandons d'activer cette fonctionnalité sur les volumes très lus.

Pour en savoir plus, consultez l'exemple de code dans Améliorer les performances de lecture des fichiers volumineux à l'aide du téléchargement parallèle.

Cache des listes

Pour accélérer les fiches de répertoire des applications, vous pouvez activer la mise en cache des listes. Cette fonctionnalité stocke les fiches d'annuaire en mémoire afin que les requêtes répétées puissent être traitées plus rapidement. Le cache de liste est désactivé par défaut. Vous pouvez l'activer en définissant le paramètre kernel-list-cache-ttl-secs dans vos options de montage. Ce paramètre définit la durée pendant laquelle les fiches sont mises en cache.

Améliorer les performances de lecture de fichiers volumineux à l'aide du téléchargement parallèle

Vous pouvez utiliser le téléchargement parallèle Cloud Storage FUSE pour accélérer la lecture de gros fichiers à partir de Cloud Storage pour les téléchargements multithreads. Le téléchargement parallèle Cloud Storage FUSE peut être particulièrement bénéfique pour les cas d'utilisation de diffusion de modèles avec des lectures de plus de 1 Go.

Voici quelques exemples courants :

  • Diffusion de modèles, pour laquelle vous avez besoin d'un grand tampon de préchargement pour accélérer le téléchargement du modèle lors du démarrage de l'instance.
  • Restauration des points de contrôle, où vous avez besoin d'un cache de données en lecture seule pour améliorer l'accès unique à plusieurs fichiers volumineux.
Bonne pratique :

Utilisez le téléchargement parallèle pour les applications qui effectuent des lectures de fichiers volumineux à thread unique. Les applications avec un parallélisme de lecture élevé (utilisant plus de huit threads) peuvent rencontrer des performances inférieures avec cette fonctionnalité.

Pour utiliser le téléchargement parallèle avec le pilote CSI Cloud Storage FUSE, procédez comme suit:

  1. Créez un cluster avec la mise en cache de fichiers activée, comme décrit dans la section Activer et utiliser la mise en cache de fichiers.

  2. Dans votre fichier manifeste, configurez ces paramètres supplémentaires à l'aide des options de montage pour activer le téléchargement parallèle:

    1. Définissez file-cache:enable-parallel-downloads:true.
    2. Ajustez file-cache:parallel-downloads-per-file, file-cache:parallel-downloads-per-file, file-cache:max-parallel-downloads et file-cache:download-chunk-size-mb si nécessaire.
  3. (Facultatif) Si nécessaire, envisagez d'ajuster ces attributs de volume:

Réduire la consommation de quota liée aux vérifications de contrôle des accès

Par défaut, le pilote CSI effectue des vérifications de contrôle des accès pour s'assurer que le compte de service du pod a accès à vos buckets Cloud Storage. Cela entraîne des frais supplémentaires sous la forme d'appels de l'API de service Kubernetes, du service de jetons de sécurité et d'IAM. À partir de la version 1.29.9-gke.1251000 de GKE, vous pouvez utiliser l'attribut de volume skipCSIBucketAccessCheck pour ignorer ces vérifications redondantes et réduire la consommation de quota.

Exemple de diffusion d'inférences

L'exemple suivant montre comment activer le téléchargement parallèle pour le traitement des inférences:

  1. Créez un fichier manifeste PersistentVolume et PersistentVolumeClaim avec les spécifications suivantes:

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: serving-bucket-pv
    spec:
      accessModes:
      - ReadWriteMany
      capacity:
        storage: 64Gi
      persistentVolumeReclaimPolicy: Retain
      storageClassName: example-storage-class
      claimRef:
        namespace: NAMESPACE
        name: serving-bucket-pvc
      mountOptions:
        - implicit-dirs #avoid if list cache enabled and doing metadata prefetch
        - metadata-cache:ttl-secs:-1
        - metadata-cache:stat-cache-max-size-mb:-1
        - metadata-cache:type-cache-max-size-mb:-1
        - file-cache:max-size-mb:-1
        - file-cache:cache-file-for-range-read:true
        - file-system:kernel-list-cache-ttl-secs:-1
        - file-cache:enable-parallel-downloads:true
      csi:
        driver: gcsfuse.csi.storage.gke.io
        volumeHandle: BUCKET_NAME
        volumeAttributes:
          skipCSIBucketAccessCheck: "true"
          gcsfuseMetadataPrefetchOnMount: "true"
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: serving-bucket-pvc
      namespace: NAMESPACE
    spec:
      accessModes:
      - ReadWriteMany
      resources:
        requests:
          storage: 64Gi
      volumeName: serving-bucket-pv
      storageClassName: example-storage-class
    

    Remplacez les valeurs suivantes :

    • NAMESPACE: espace de noms Kubernetes dans lequel vous souhaitez déployer votre pod.
    • BUCKET_NAME: nom du bucket Cloud Storage que vous avez spécifié lors de la configuration de l'accès aux buckets Cloud Storage. Vous pouvez spécifier un trait de soulignement (_) pour installer tous les buckets auxquels le compte de service Kubernetes peut accéder. Pour en savoir plus, consultez la section Installation dynamique dans la documentation de Cloud Storage FUSE.
  2. Appliquez le fichier manifeste au cluster :

    kubectl apply -f PV_FILE_PATH
    

    Remplacez PV_FILE_PATH par le chemin d'accès à votre fichier YAML.

  3. Créez un fichier manifeste de pod avec la spécification suivante pour utiliser le PersistentVolumeClaim, selon que vous utilisez la mise en cache de fichiers basée sur un SSD local ou sur un disque RAM:

    SSD local

    apiVersion: v1
    kind: Pod
    metadata:
      name: gcs-fuse-csi-example-pod
      namespace: NAMESPACE
      annotations:
        gke-gcsfuse/volumes: "true"
        gke-gcsfuse/cpu-limit: "0"
        gke-gcsfuse/memory-limit: "0"
        gke-gcsfuse/ephemeral-storage-limit: "0"
    spec:
      containers:
        # Your workload container spec
        ...
        volumeMounts:
        - name: serving-bucket-vol
          mountPath: /serving-data
          readOnly: true
      serviceAccountName: KSA_NAME
      volumes:
      - name: serving-bucket-vol
        persistentVolumeClaim:
          claimName: serving-bucket-pvc
    

    Disque RAM

    apiVersion: v1
    kind: Pod
    metadata:
      name: gcs-fuse-csi-example-pod
      namespace: NAMESPACE
      annotations:
        gke-gcsfuse/volumes: "true"
        gke-gcsfuse/cpu-limit: "0"
        gke-gcsfuse/memory-limit: "0"
        gke-gcsfuse/ephemeral-storage-limit: "0"
    spec:
      containers:
        # Your workload container spec
        ...
        volumeMounts:
        - name: serving-bucket-vol
          mountPath: /serving-data
          readOnly: true
      serviceAccountName: KSA_NAME 
      volumes:
        - name: gke-gcsfuse-cache # gcsfuse file cache backed by RAM Disk
          emptyDir:
            medium: Memory 
      - name: serving-bucket-vol
        persistentVolumeClaim:
          claimName: serving-bucket-pvc
    
  4. Appliquez le fichier manifeste au cluster :

    kubectl apply -f POD_FILE_PATH
    

    Remplacez POD_FILE_PATH par le chemin d'accès à votre fichier YAML.

Configurer les attributs de volume

Les attributs de volume vous permettent de configurer le comportement spécifique du pilote CSI Cloud Storage FUSE.

Le pilote CSI Cloud Storage FUSE ne vous permet pas de spécifier directement le fichier de configuration Cloud Storage FUSE. Vous pouvez configurer certains des champs du fichier de configuration à l'aide des attributs de volume CSI Cloud Storage FUSE. Le pilote CSI gère la traduction des valeurs des attributs de volume dans les champs du fichier de configuration.

Pour obtenir la liste complète des attributs de volume acceptés, consultez la documentation de référence sur les attributs de volume.

Vous pouvez spécifier les attributs du volume des manières suivantes :

  • Dans le champ spec.csi.volumeAttributes d'un fichier manifeste PersistentVolume, si vous utilisez des volumes persistants.
  • Dans le champ spec.volumes[n].csi.volumeAttributes, si vous utilisez des volumes éphémères CSI.

Dans le fichier manifeste, les attributs de volume peuvent être spécifiés sous la forme de paires clé-valeur. Exemple :

volumeAttributes:
  mountOptions: "implicit-dirs"
  fileCacheCapacity: "-1"
  gcsfuseLoggingSeverity: warning

Métriques Cloud Storage FUSE

Les métriques Cloud Storage FUSE suivantes sont désormais disponibles via l'API GKE Monitoring. Pour en savoir plus sur les métriques Cloud Storage FUSE, telles que les libellés, le type et l'unité, consultez la section Métriques système de GKE. Ces métriques sont disponibles pour chaque pod qui utilise Cloud Storage FUSE. Vous pouvez les utiliser pour configurer des insights par volume et par bucket.

Les métriques sont désactivées par défaut. Pour les activer, définissez l'attribut de volume disableMetrics sur "false".

Métriques du système de fichiers

Les métriques du système de fichiers suivent les performances et l'état de votre système de fichiers, y compris le nombre d'opérations, les erreurs et la vitesse d'exécution des opérations. Ces métriques peuvent vous aider à identifier les goulots d'étranglement et à optimiser les performances.

  • gcsfusecsi/fs_ops_count
  • gcsfusecsi/fs_ops_error_count
  • gcsfusecsi/fs_ops_latency

Métriques Cloud Storage

Vous pouvez surveiller les métriques Cloud Storage, y compris le volume de données, la vitesse et l'activité des requêtes, pour comprendre comment vos applications interagissent avec les buckets Cloud Storage. Ces données peuvent vous aider à identifier les domaines à optimiser, comme l'amélioration des modèles de lecture ou la réduction du nombre de requêtes.

  • gcsfusecsi/gcs_download_bytes_count
  • gcsfusecsi/gcs_read_count
  • gcsfusecsi/gcs_read_bytes_count
  • gcsfusecsi/gcs_reader_count
  • gcsfusecsi/gcs_request_count
  • gcsfusecsi/gcs_request_latencies

Métriques du cache de fichiers

Vous pouvez surveiller les métriques du cache de fichiers, y compris le volume de données lues, la vitesse et le taux de succès de cache (hit), pour optimiser Cloud Storage FUSE et les performances de l'application. Analysez ces métriques pour améliorer votre stratégie de mise en cache et maximiser les requêtes satisfaites par le cache.

  • gcsfusecsi/file_cache_read_bytes_count
  • gcsfusecsi/file_cache_read_latencies
  • gcsfusecsi/file_cache_read_count

Bonnes pratiques pour optimiser les performances

Cette section présente quelques techniques d'optimisation et de réglage des performances recommandées pour le pilote CSI Cloud Storage FUSE.

  • Exploitez les buckets d'espace de noms hiérarchique (HNS):optez pour des buckets HNS pour augmenter de manière substantielle le nombre de requêtes par seconde (RPS) initiales de 8 fois. Ce choix facilite également le changement de nom des répertoires rapide et atomique, une exigence cruciale pour un point de contrôle efficace avec Cloud Storage FUSE. Les buckets HNS offrent une meilleure expérience semblable à celle d'un fichier en acceptant 40 000 requêtes de lecture d'objets et 8 000 requêtes d'écriture d'objets par seconde, ce qui représente une amélioration significative par rapport aux 8 000 requêtes de lecture d'objets et aux 1 000 requêtes d'écriture d'objets par seconde proposées par les buckets plats.

  • Installez des répertoires spécifiques dans la mesure du possible:si votre charge de travail implique d'accéder à un répertoire spécifique dans un bucket, utilisez l'indicateur --only-dir lors de l'installation. Cette approche ciblée accélère les appels de liste, car elle limite le champ d'application des appels LookUpInode, qui impliquent un appel list+stat pour chaque fichier ou répertoire du chemin d'accès spécifié. En limitant l'installation au sous-répertoire requis, vous minimisez ces appels, ce qui améliore les performances.

  • Optimisez la mise en cache des métadonnées:configurez vos caches de métadonnées pour maximiser leur capacité et définissez une valeur TTL (Time To Live) infinie. Cette pratique met efficacement en cache toutes les métadonnées consultées pendant la durée de votre tâche, ce qui réduit les requêtes d'accès aux métadonnées vers Cloud Storage. Cette configuration s'avère particulièrement bénéfique pour les volumes en lecture seule, car elle élimine les recherches répétées de métadonnées Cloud Storage. Toutefois, vérifiez que la consommation de mémoire associée à ces grands caches de métadonnées correspond aux capacités de votre système.

  • Maximiser les ressources de sidecar GKE:Cloud Storage FUSE fonctionne dans un conteneur sidecar dans un environnement GKE. Pour éviter les goulots d'étranglement de ressources, supprimez les limites de consommation de processeur et de mémoire pour le conteneur sidecar. Cela permet à Cloud Storage FUSE d'adapter son utilisation des ressources en fonction des demandes de charge de travail, ce qui évite le débit limité et garantit un débit optimal.

  • Remplir le cache des métadonnées de manière proactive:activez le préchargement des métadonnées pour le pilote CSI. Cela permet de renseigner efficacement les métadonnées et les caches de liste, ce qui réduit les appels de métadonnées vers Cloud Storage et accélère l'exécution initiale. De nombreux frameworks de ML effectuent cette opération automatiquement, mais il est essentiel de s'assurer de cette étape pour le code d'entraînement personnalisé. Pour en savoir plus, consultez Utiliser le préchargement des métadonnées pour préremplir le cache de métadonnées.

  • Utilisez le cache de fichiers et les téléchargements parallèles:activez la fonctionnalité de cache de fichiers, en particulier pour les charges de travail d'entraînement multi-époques, où les données sont lues de manière répétée. Le cache de fichiers stocke les données fréquemment consultées sur un stockage local (SSD dans le cas des machines A3), ce qui améliore les performances de lecture. Complétez cela avec la fonctionnalité de téléchargements parallèles, en particulier pour les charges de travail de diffusion, afin d'accélérer le téléchargement de fichiers volumineux en les divisant en petits fragments et en les téléchargeant simultanément.

  • Optimisez les points de contrôle:pour le point de contrôle avec Cloud Storage FUSE, nous vous recommandons vivement d'utiliser un bucket HNS. Si vous utilisez un bucket autre que HNS, définissez le paramètre rename-dir-limit sur une valeur élevée pour prendre en charge les renommages de répertoires souvent utilisés par les frameworks ML lors du point de contrôle. Toutefois, sachez que le renommage de répertoires dans les buckets autres que HNS peut ne pas être atomique et prendre plus de temps.

  • Activez la mise en cache des listes:activez la mise en cache des listes à l'aide de l'option --kernel-list-cache-ttl-secs pour améliorer encore les performances. Cette fonctionnalité met en cache les listes de répertoires et de fichiers, ce qui améliore la vitesse des opérations ls. Le stockage en cache de liste est particulièrement bénéfique pour les charges de travail impliquant des listes de répertoires complètes répétées, ce qui est courant dans les scénarios d'entraînement de l'IA/ML. Il est conseillé d'utiliser la mise en cache de la liste avec des montages en lecture seule pour assurer la cohérence des données.

Étape suivante