Cette présentation décrit le pilote CSI Cloud Storage FUSE pour installer des buckets Cloud Storage en tant que systèmes de fichiers locaux dans Google Kubernetes Engine (GKE). Cette fonctionnalité est particulièrement utile pour les charges de travail de machine learning qui doivent stocker des données d'entraînement, des modèles et des points de contrôle dans Cloud Storage.
Cette présentation s'adresse aux développeurs et aux data scientists qui souhaitent accéder à des données d'entraînement, des pondérations de modèles d'inférence et des points de contrôle stockés dans Cloud Storage à partir de leurs applications Kubernetes, ou les y stocker.
Avant de lire cette page, assurez-vous de maîtriser Kubernetes, GKE et Cloud Storage.
Fonctionnement
Le pilote utilise la norme Container Storage Interface (CSI) pour permettre à vos applications exécutées dans des pods d'accéder de manière fluide aux buckets Cloud Storage comme s'il s'agissait de systèmes de fichiers installés. Cela signifie que vous pouvez traiter vos buckets Cloud Storage comme une source de données persistante et évolutive pour vos applications Kubernetes, sans configuration complexe ni modification du code.
Le pilote CSI Cloud Storage FUSE fournit une expérience entièrement gérée, basée sur le plug-in CSI Google Cloud Storage FUSE Open Source. Le pilote CSI vous permet d'utiliser l'API Kubernetes pour exploiter les buckets Cloud Storage préexistants en tant que volumes. Vos applications peuvent importer et télécharger des objets à l'aide de la sémantique du système de fichiers Cloud Storage FUSE.
Filesystem in Userspace (FUSE) est une interface utilisée pour exporter un système de fichiers vers le noyau Linux. Cloud Storage FUSE vous permet d'installer des buckets Cloud Storage en tant que système de fichiers afin que les applications puissent accéder aux objets d'un bucket à l'aide d'opérations d'E/S de fichier courantes (par exemple, ouverture, lecture, écriture et fermeture) plutôt que d'utiliser des API spécifiques au cloud.
Le pilote est compatible de manière native avec les méthodes suivantes pour vous permettre de configurer vos volumes reposant sur Cloud Storage :
- Volumes éphémères CSI : vous spécifiez le bucket Cloud Storage conformément à la spécification du pod. Utilisez des volumes CSI éphémères si vous souhaitez une interface simplifiée basée sur les pods qui ne nécessite aucune expérience préalable avec les volumes persistants Kubernetes. Pour utiliser cette option, consultez Installer des buckets Cloud Storage en tant que volumes éphémères CSI.
- PersistentVolumes : vous créez une ressource PersistentVolume qui fait référence au bucket Cloud Storage à l'aide du provisionnement statique. Votre pod peut alors référencer un objet PersistentVolumeClaim lié à cet objet PersistentVolume. Utilisez cette option si vous connaissez déjà les PersistentVolumes et que vous souhaitez assurer la cohérence avec vos déploiements existants qui s'appuient sur ce type de ressource. Pour utiliser cette option, consultez Installer des buckets Cloud Storage en tant que volumes persistants.
Cas d'utilisation
Le pilote CSI Cloud Storage FUSE convient aux scénarios suivants :
IA et machine learning
- Entraînement : vous pouvez utiliser le pilote CSI Cloud Storage FUSE pour lire les données d'entraînement et les modèles enregistrés de points de contrôle à l'aide de Cloud Storage comme source fiable. Par exemple, lors de l'entraînement d'un modèle sur GKE à l'aide de PyTorch, JAX ou TensorFlow, le pilote peut fournir un accès aux ensembles de données d'entraînement stockés dans des buckets Cloud Storage.
- Inférence : vous pouvez diffuser des modèles d'inférence de ML qui infèrent des résultats à partir de fichiers stockés dans Cloud Storage. Vous pouvez utiliser Cloud Storage FUSE CSI pour précharger les pondérations de modèle stockées dans Cloud Storage. De plus, vous pouvez utiliser le téléchargement parallèle avec le cache de fichiers pour accélérer la lecture de fichiers volumineux à partir de Cloud Storage pour les téléchargements multithread. Vous pouvez utiliser cette fonctionnalité pour améliorer les temps de chargement des modèles, en particulier pour les lectures de plus de 1 Go.
Pipelines d'analyse de données
Vous pouvez utiliser le pilote CSI Cloud Storage FUSE pour simplifier les tâches de traitement des données en permettant aux applications d'accéder directement aux grands ensembles de données stockés dans Cloud Storage et de les analyser. Par exemple, un job Spark exécuté sur GKE peut utiliser le pilote CSI pour traiter les données stockées dans Cloud Storage sans avoir à les télécharger au préalable.
Avantages
L'utilisation du pilote CSI offre les avantages suivants :
- Facile à configurer : le pilote CSI Cloud Storage FUSE déploie et gère automatiquement le pilote sur les clusters Standard et Autopilot. L'utilisation de volumes CSI éphémères simplifie la configuration et la gestion des volumes. En effet, les objets PersistentVolumeClaim et PersistentVolume ne sont pas nécessaires.
- Sécurité : le pilote CSI Cloud Storage FUSE n'a pas besoin d'un accès privilégié. Cela réduit les risques associés à l'accès privilégié et améliore la sécurité. Vous pouvez utiliser la fédération d'identité de charge de travail pour GKE afin de gérer l'authentification et de contrôler précisément la manière dont vos pods accèdent aux objets Cloud Storage.
- Performances : le pilote CSI Cloud Storage FUSE améliore les performances grâce à des fonctionnalités telles qu'un side-car pour des interactions optimisées, des téléchargements parallèles pour un accès plus rapide aux données, ainsi que la mise en cache des métadonnées et des fichiers pour améliorer les performances de lecture et réduire la latence. Pour en savoir plus sur ces fonctionnalités, consultez Options et fonctionnalités d'optimisation des performances.
- Portabilité et flexibilité : le pilote CSI Cloud Storage FUSE vous permet d'utiliser la sémantique standard du système de fichiers pour installer des buckets Cloud Storage et y accéder.
Cela fournit une interface familière qui améliore la portabilité des charges de travail de ML et vous évite d'avoir à apporter des modifications importantes au code ou à l'application.
Le pilote est compatible avec tous les accélérateurs disponibles sur GKE, y compris les GPU et les TPU. Le pilote CSI Cloud Storage FUSE est compatible avec les modes d'accès
ReadWriteMany
,ReadOnlyMany
etReadWriteOnce
. Vous pouvez utiliser les volumes Cloud Storage FUSE dans des conteneurs d'initialisation. - Gérabilité : le pilote vous permet d'exécuter Cloud Storage FUSE en arrière-plan sans avoir à l'installer ni à le gérer. Vous pouvez également consulter les insights sur les métriques pour Cloud Storage FUSE, y compris l'utilisation du système de fichiers, de Cloud Storage et du cache de fichiers.
Options et fonctionnalités d'optimisation des performances
Le pilote CSI Cloud Storage FUSE est fourni avec plusieurs options et fonctionnalités d'optimisation des performances pour améliorer la façon dont vos pods accèdent aux données stockées dans les buckets Cloud Storage.
Par exemple, en activant la mise en cache des fichiers et en ajustant la simultanéité des requêtes, vous pouvez réduire considérablement le temps nécessaire au chargement des données d'entraînement, ce qui accélère les temps d'entraînement.
Side-car natif : le pilote CSI Cloud Storage FUSE associe un conteneur side-car à vos pods pour gérer les interactions avec Cloud Storage. Le side-car gère le montage et l'interaction avec Cloud Storage, ce qui permet à vos applications d'accéder aux données de manière fluide. Vous pouvez affiner les performances en configurant des ressources telles que le processeur et la mémoire pour le conteneur side-car, ou en ajustant les paramètres liés à la mise en cache et à la mise en mémoire tampon. Le conteneur side-car du pilote CSI Cloud Storage FUSE et Istio peuvent coexister et s'exécuter simultanément dans votre pod.
Téléchargement parallèle : à partir de la version 1.30.3-gke.1571000 de GKE et de Cloud Storage FUSE v.2.4.0 avec le cache de fichiers activé, vous pouvez utiliser la fonctionnalité de téléchargement parallèle pour accélérer la lecture de fichiers volumineux à partir de Cloud Storage pour les téléchargements multithread. Vous pouvez utiliser cette fonctionnalité pour améliorer les temps de chargement des modèles, en particulier pour les lectures de plus de 1 Go (par exemple, jusqu'à deux fois plus rapidement lors du chargement de Llama 2 70B).
Prise en charge de la mise en cache des métadonnées : le pilote CSI Cloud Storage FUSE améliore les performances en mettant en cache les métadonnées des fichiers, comme la taille et l'heure de modification. Le pilote CSI active ce cache de statistiques 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 et la durée pendant laquelle les données restent dans le cache. En affinant le cache de métadonnées, vous pouvez réduire les appels d'API à Google Cloud Storage, ce qui améliore les performances et l'efficacité des applications en minimisant le trafic réseau et la latence.
Prise en charge de la mise en cache des fichiers : vous pouvez utiliser le pilote CSI Cloud Storage FUSE avec la mise en cache des 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, en fonction de vos besoins en termes de rapport prix/performances.
Compatibilité avec le redémarrage des nœuds : à partir de la version 1.33.1-gke.1959000 de GKE, les pods utilisant des volumes CSI GCSFuse peuvent être récupérés automatiquement après le redémarrage d'un nœud GKE. Pour les clusters exécutant des versions antérieures, les pods ne peuvent pas être récupérés et vous devez les redéployer.
Pour connaître les bonnes pratiques d'optimisation des performances, consultez Optimiser le pilote CSI Cloud Storage FUSE pour les performances GKE.
Limites
Le pilote CSI présente les limites suivantes :
- Le système de fichiers Cloud Storage FUSE présente des différences en termes de performances, de disponibilité, d'autorisation d'accès et de sémantique par rapport à un système de fichiers POSIX.
- Le pilote CSI Cloud Storage FUSE n'est pas compatible avec GKE Sandbox.
- Le pilote CSI Cloud Storage FUSE n'est pas compatible avec les instantanés de volume, le clonage de volume ou les extensions de volume.
- L'accès uniforme au niveau du bucket est requis pour les charges de travail en lecture et en écriture lorsque vous utilisez la fédération d'identité de charge de travail pour GKE.
- Consultez les problèmes connus dans le projet GitHub du pilote CSI Cloud Storage FUSE.
- Consultez les problèmes en cours dans le projet GitHub du pilote CSI Cloud Storage FUSE.
- Le pilote CSI Cloud Storage FUSE n'est pas compatible avec les pods s'exécutant sur le réseau hôte (
hostNetwork: true
) en raison des restrictions liées à la fédération d'identité de charge de travail pour GKE. - Les versions de cluster GKE antérieures à 1.32.3-gke.1099000 imposent une limite restrictive à la taille des chaînes
mountOption
chiffrées au format JSON. La combinaison du nom du bucket, des options de montage fournies par l'utilisateur et demountOptions
fourni par le pilote doit comporter moins de 500 caractères. Nous avons augmenté le seuil des messages JSON à 5 000 octets dans les versions de cluster GKE 1.32.3-gke.1099000 ou ultérieures.
Conditions requises
Pour utiliser le pilote CSI Cloud Storage FUSE, vos clusters doivent répondre aux exigences suivantes concernant la version de GKE :
- Utilisez des clusters Linux exécutant la version 1.24 ou une version ultérieure de GKE.
- La fédération d'identité de charge de travail pour GKE et le serveur de métadonnées GKE doivent être activés.
- Utilisez la dernière version de la Google Cloud CLI.
Pour utiliser des fonctionnalités spécifiques du pilote CSI Cloud Storage FUSE, vous devez également répondre aux exigences suivantes :
Fonctionnalité | Exigences concernant la version de GKE |
---|---|
Image privée pour le conteneur side-car, volume de mémoire tampon d'écriture personnalisé et requêtes de ressources du conteneur side-car | 1.27.10-gke.1055000, 1.28.6-gke.1369000, 1.29.1-gke.1575000 ou versions ultérieures. |
Cache de fichiers, attributs de volume | 1.27.12-gke.1190000, 1.28.8-gke.1175000, 1.29.3-gke.1093000 ou versions ultérieures. |
Volumes Cloud Storage FUSE dans les conteneurs d'initialisation | 1.29.3-gke.1093000 ou ultérieure, avec tous les nœuds sur GKE version 1.29 ou ultérieure. |
Téléchargement en parallèle | 1.29.6-gke.1254000, 1.30.2-gke.1394000 ou versions ultérieures. |
Métriques Cloud Storage FUSE | 1.31.1-gke.1621000 ou version ultérieure, activé par défaut sur 1.33.0-gke.2248000 ou version ultérieure. |
Préchargement des métadonnées | 1.32.1-gke.1357001 (et versions ultérieures). |
Écritures en flux continu | 1.32.1-gke.1753001 ou version ultérieure, activé par défaut sur la version 1.33.2-gke.4655000 ou version ultérieure. |
Configurer la lecture anticipée du noyau | 1.32.2-gke.1297001 (et versions ultérieures). |
Assistance pour le redémarrage des nœuds | 1.33.1-gke.1959000 ou version ultérieure. |
Étapes suivantes
- Découvrez comment vous préparer à utiliser le pilote CSI Cloud Storage FUSE pour GKE.
- Résoudre les problèmes liés à Cloud Storage FUSE
- Optimiser les performances de Cloud Storage FUSE