Optimiser les charges de travail d'IA et de ML avec Cloud Storage FUSE

Last reviewed 2025-04-09 UTC

Ce document fournit des architectures de référence qui montrent comment utiliser Cloud Storage FUSE pour optimiser les performances des charges de travail d'IA et de ML sur Google Kubernetes Engine (GKE).

Ce document s'adresse aux architectes et aux techniciens qui conçoivent, provisionnent et gèrent le stockage de leurs charges de travail d'IA et de ML sur Google Cloud. Dans ce document, nous partons du principe que vous avez bien compris le cycle de vie, les processus et les fonctionnalités du ML.

Cloud Storage FUSE est un adaptateur FUSE Open Source qui vous permet d'installer des buckets Cloud Storage en tant que systèmes de fichiers locaux. Cette configuration permet aux applications d'interagir de manière transparente avec les buckets de stockage dans le cloud à l'aide d'une sémantique système standard de type fichier. Cloud Storage FUSE vous permet de bénéficier de l'évolutivité et de la rentabilité de Cloud Storage.

Architecture

En fonction de vos exigences en termes de performances, de disponibilité et de reprise après sinistre, vous pouvez choisir l'un des Google Cloud archétypes de déploiement suivants pour exécuter vos charges de travail d'IA et de ML sur Google Cloud:

  • Régional: vos applications s'exécutent indépendamment dans une seule régionGoogle Cloud. Nous recommandons cet archétype de déploiement pour les applications qui ne sont pas critiques, mais qui doivent être robustes contre les pannes zonales.
  • Multirégional: vos applications s'exécutent indépendamment dans au moins deux régions Google Cloud , en mode actif-actif ou en mode actif-passif. Cet archétype de déploiement est idéal pour les scénarios de reprise après sinistre. Nous recommandons cet archétype de déploiement pour les applications critiques qui nécessitent une résilience face aux pannes et aux sinistres régionaux. Les déploiements birégionaux ou multirégionaux peuvent réduire la latence et améliorer le débit du fait de la proximité des ressources.

L'archétype de déploiement que vous choisissez détermine les produits et fonctionnalités Google Cloud dont vous avez besoin pour votre architecture. L'architecture multirégionale utilise le cache Anywhere. Pour évaluer si Anywhere Cache est adapté à votre charge de travail, utilisez l'outil de recommandation Anywhere Cache pour analyser votre consommation et votre stockage des données.

Les onglets suivants fournissent des architectures de référence pour les archétypes de déploiement régional et multirégional:

Régional

Le schéma suivant présente un exemple d'architecture régionale qui optimise les performances des workflows d'entraînement et de diffusion du modèle à l'aide de Cloud Storage FUSE:

Architecture régionale utilisant Cloud Storage FUSE pour optimiser les charges de travail d'IA et de ML

Cette architecture comprend les composants suivants :

  • Cluster GKE: GKE gère les nœuds de calcul sur lesquels s'exécutent vos processus d'entraînement et de diffusion de modèles d'IA et de ML. GKE gère l'infrastructure sous-jacente des clusters Kubernetes, y compris le plan de contrôle, les nœuds et tous les composants du système.
  • Programmeur Kubernetes: le plan de contrôle GKE planifie les charges de travail et gère leur cycle de vie, leur scaling et leurs mises à niveau. L'agent de nœud Kubernetes (kubelet), qui n'est pas illustré dans le schéma, communique avec le plan de contrôle. L'agent kubelet est chargé de démarrer et d'exécuter les conteneurs planifiés sur les nœuds GKE. Pour en savoir plus sur le programmeur, consultez la page Orchestration de l'IA/du ML sur GKE.
  • Réseau cloud privé virtuel (VPC): toutes les Google Cloud ressources de l'architecture utilisent un seul réseau VPC. Selon vos besoins, vous pouvez choisir de créer une architecture qui utilise plusieurs réseaux. Pour plus d'informations sur la configuration d'un réseau VPC pour Cloud Storage FUSE, consultez la section Décider s'il faut créer plusieurs réseaux VPC.
  • Cloud Load Balancing: dans cette architecture, Cloud Load Balancing répartit efficacement les requêtes d'inférence entrantes des utilisateurs de l'application vers les conteneurs de diffusion du cluster GKE. Pour en savoir plus, consultez la page Comprendre l'équilibrage de charge GKE.
  • Processeur graphique (GPU) ou Tensor Processing Units (TPU) : les GPU et les TPU sont des accélérateurs de machines spécialisés qui améliorent les performances de vos charges de travail d'IA et de ML. Pour savoir comment choisir un type de processeur approprié, consultez la section Options de l'accélérateur plus loin dans ce document.
  • Cloud Storage: Cloud Storage fournit un stockage persistant, évolutif et économique pour vos charges de travail d'IA et de ML. Cloud Storage sert de dépôt central pour vos ensembles de données d'entraînement bruts, vos points de contrôle de modèles et vos modèles entraînés finaux.
  • Cloud Storage FUSE avec cache de fichiers activé: Cloud Storage FUSE vous permet d'installer un bucket Cloud Storage en tant que système de fichiers local. Le cache de fichiers dans Cloud Storage FUSE est un répertoire sur la machine locale qui stocke les fichiers fréquemment consultés depuis vos buckets Cloud Storage. Le pilote CSI Cloud Storage FUSE gère l'intégration de Cloud Storage FUSE avec l'API Kubernetes pour utiliser les buckets Cloud Storage en tant que volumes.

Les sections suivantes décrivent le workflow associé aux charges de travail d'entraînement et d'inférence de l'architecture.

Multirégional

Le schéma suivant présente un exemple d'architecture multirégionale qui optimise les performances des workflows d'entraînement et de diffusion des modèles à l'aide de Cloud Storage FUSE et du cache Anywhere:

Architecture multirégionale qui optimise les charges de travail d'IA et de ML à l'aide de Cloud Storage FUSE

Cette architecture comprend les composants suivants :

  • Cluster GKE : GKE gère les nœuds de calcul sur lesquels vos processus d'entraînement et d'inférence de modèles d'IA et de ML s'exécutent. GKE gère l'infrastructure sous-jacente des clusters Kubernetes, y compris le plan de contrôle, les nœuds et tous les composants du système.
  • Programmeur Kubernetes: le plan de contrôle GKE planifie les charges de travail et gère leur cycle de vie, leur scaling et leurs mises à niveau. L'agent de nœud Kubernetes (kubelet), qui n'est pas illustré dans le schéma, communique avec le plan de contrôle. L'agent kubelet est chargé de démarrer et d'exécuter les conteneurs planifiés sur les nœuds GKE. Pour en savoir plus sur le programmeur, consultez la page Orchestration de l'IA/du ML sur GKE.
  • Réseau cloud privé virtuel (VPC): toutes les Google Cloud ressources de l'architecture utilisent un seul réseau VPC. Selon vos besoins, vous pouvez choisir de créer une architecture qui utilise plusieurs réseaux. Pour plus d'informations sur la configuration d'un réseau VPC pour Cloud Storage FUSE, consultez la section Décider s'il faut créer plusieurs réseaux VPC.
  • Cloud DNS: dans les architectures multirégionales, Cloud DNS dirige le trafic vers les équilibreurs de charge pour garantir des performances et une disponibilité optimales via le routage anycast. Les requêtes sont automatiquement acheminées vers l'emplacement le plus proche, ce qui réduit la latence et améliore les performances de recherche de noms primaires pour vos utilisateurs. Pour en savoir plus sur les principes généraux et les bonnes pratiques, consultez la page Bonnes pratiques pour Cloud DNS.
  • Cloud Load Balancing: dans cette architecture, Cloud Load Balancing répartit efficacement les requêtes d'inférence entrantes des utilisateurs de l'application vers les conteneurs de diffusion du cluster GKE. Pour en savoir plus, consultez la page Comprendre l'équilibrage de charge GKE.
  • Processeur graphique (GPU) ou Tensor Processing Units (TPU) : les GPU et les TPU sont des accélérateurs de machines spécialisés qui améliorent les performances de vos charges de travail d'IA et de ML. Pour savoir comment choisir un type de processeur approprié, consultez la section Options de l'accélérateur plus loin dans ce document.
  • Cloud Storage: Cloud Storage fournit un stockage persistant, évolutif et économique pour vos charges de travail d'IA et de ML. Cloud Storage sert de dépôt central pour vos ensembles de données d'entraînement bruts, vos points de contrôle de modèles et vos modèles entraînés finaux.
  • Cloud Storage FUSE : Cloud Storage FUSE vous permet d'installer un bucket Cloud Storage en tant que système de fichiers local. Le pilote CSI Cloud Storage FUSE, qui n'est pas illustré sur le schéma, gère l'intégration de Cloud Storage FUSE avec l'API Kubernetes pour consommer des buckets Cloud Storage en tant que volumes.
  • Anywhere Cache : le cache Anywhere est une fonctionnalité de Cloud Storage qui fournit jusqu'à 1 Pio de cache en lecture seule zonal reposant sur un disque SSD pour les buckets Cloud Storage. Pendant l'entraînement et la diffusion, Anywhere Cache vous aide à atteindre un débit qui dépasse 1 To/s en adaptant la capacité du cache et la bande passante.

Les sections suivantes décrivent le workflow associé aux charges de travail d'entraînement et d'inférence de l'architecture.

Charge de travail d'entraînement

Dans les architectures précédentes, voici les étapes du flux de données lors de l'entraînement du modèle:

  1. Charger des données d'entraînement dans Cloud Storage: les données d'entraînement sont importées dans un bucket Cloud Storage avec les espaces de noms hiérarchiques activés. Cloud Storage sert de dépôt central évolutif.
  2. Chargez des données d'entraînement et exécutez des tâches d'entraînement dans GKE: le bucket Cloud Storage installé sur vos pods GKE permet à vos applications d'entraînement de charger efficacement les données d'entraînement et d'y accéder à l'aide de l'interface FUSE. Les nœuds GKE exécutent le processus d'entraînement du modèle en utilisant le cache de fichiers installé comme source de données. Vos applications d'entraînement transmettent en continu des données d'entraînement aux accélérateurs de machines afin qu'ils effectuent les calculs complexes nécessaires à l'entraînement du modèle. Selon les besoins de votre charge de travail, vous pouvez utiliser des GPU ou des TPU. Pour savoir comment choisir un type de processeur approprié, consultez la section Options de l'accélérateur plus loin dans ce document.
  3. Point de contrôle, enregistrement et restauration du modèle:

    • Enregistrez des points de contrôle ou le modèle: pendant l'entraînement, enregistrez les points de contrôle de manière asynchrone à intervalles fréquents dans un bucket Cloud Storage distinct. Les points de contrôle capturent l'état du modèle en fonction de métriques ou d'intervalles que vous définissez.
    • Restaurer des points de contrôle ou un modèle: lorsque votre charge de travail d'entraînement nécessite la restauration d'un point de contrôle ou de données de modèle, vous devez localiser l'élément que vous souhaitez restaurer dans Cloud Storage. Vous pouvez utiliser le point de contrôle ou le modèle restauré pour reprendre l'entraînement, ajuster les paramètres ou évaluer les performances sur un ensemble de validation.

Charge de travail de diffusion

Dans les architectures précédentes, voici les étapes du flux de données pendant l'inférence du modèle:

  1. Charger le modèle: une fois l'entraînement terminé, vos pods chargent le modèle entraîné à l'aide de Cloud Storage FUSE, et les téléchargements parallèles sont activés. Les téléchargements parallèles accélèrent le chargement du modèle en récupérant les différentes parties du modèle en parallèle depuis Cloud Storage. Pour réduire considérablement les temps de chargement du modèle, le processus utilise le répertoire de cache comme tampon de préchargement.
  2. Requête d'inférence: les utilisateurs de l'application envoient des requêtes d'inférence à partir de l'application d'IA et de ML via le service Cloud Load Balancing. Cloud Load Balancing répartit les requêtes entrantes sur les conteneurs de diffusion du cluster GKE. Cette répartition permet de s'assurer qu'aucun conteneur n'est submergé et que les requêtes sont traitées efficacement.
  3. Distribution des réponses: les nœuds traitent la requête et génèrent une prédiction. Les conteneurs de diffusion renvoient les réponses via Cloud Load Balancing, puis aux utilisateurs de l'application.

Produits utilisés

Les architectures de référence utilisent les produits Google Cloud suivants:

  • Google Kubernetes Engine (GKE) : service Kubernetes que vous pouvez utiliser pour déployer et exploiter des applications conteneurisées à grande échelle, à l'aide de l'infrastructure de Google.
  • Cloud Storage : store d'objets économique et sans limite pour tout type de données. Les données sont accessibles depuis l'intérieur et l'extérieur de Google Cloud, et sont répliquées sur les différents emplacements à des fins de redondance.
  • Cloud privé virtuel (VPC): système virtuel qui fournit des fonctionnalités de mise en réseau mondiales et évolutives pour vos charges de travail. Google Cloud Le VPC inclut l'appairage de réseaux VPC, Private Service Connect, l'accès aux services privés et le VPC partagé.
  • Cloud Load Balancing : portefeuille d'équilibreurs de charge hautes performances, évolutifs, mondiaux et régionaux.
  • Cloud DNS: service qui fournit un service DNS résilient et à faible latence basé sur le réseau mondial de Google.

Cas d'utilisation

Pour les charges de travail d'IA et de ML qui nécessitent une grande capacité de stockage et un accès hautes performances aux fichiers, nous vous recommandons d'utiliser une architecture basée sur Cloud Storage FUSE. Avec une planification appropriée, vous pouvez atteindre un débit supérieur à 1 To/s avec ces architectures. De plus, Cloud Storage FUSE vous permet de bénéficier d'un dépôt de stockage central qui sert de source unique d'informations fiables pour toutes les étapes du workflow d'IA et de ML. Cette approche peut être utilisée pour toutes les charges de travail, quelles que soient leur évolutivité ou leur taille.

Pour ces charges de travail, Cloud Storage FUSE offre les avantages suivants:

  • Accès simplifié aux données: accédez aux données d'entraînement et aux points de contrôle avec des frameworks d'IA et de ML tels que Connector for PyTorch, JAX et TensorFlow. Avec des frameworks d'IA et de ML, il n'est plus nécessaire de refactoriser le code.
  • Démarrage accéléré: vous n'avez plus besoin de télécharger de grands ensembles de données pour des ressources de calcul en utilisant Cloud Storage FUSE pour accéder directement aux données dans Cloud Storage. Cet accès direct aux données accélère le démarrage des tâches.
  • Rentabilité: optimisez les coûts en utilisant l'évolutivité et la rentabilité inhérentes à Cloud Storage.

Cloud Storage FUSE ne convient pas aux charges de travail sensibles à la latence qui contiennent des fichiers de moins de 50 Mo ou dont la latence est inférieure à une milliseconde pour les E/S et les métadonnées aléatoires.

Pour les charges de travail d'entraînement ou de point de contrôle et de redémarrage qui consomment beaucoup de données, envisagez une alternative de stockage pendant la phase d'entraînement intensive avec les E/S.

Alternatives de conception

Les sections suivantes présentent d'autres approches de conception que vous pouvez envisager pour votre application d'IA et de ML dans Google Cloud.

Autre plate-forme

Au lieu d'héberger le workflow d'entraînement et de diffusion de votre modèle sur GKE, vous pouvez envisager d'utiliser Compute Engine avec Slurm. Slurm est un gestionnaire de charges de travail et de ressources Open Source hautement configurable. L'utilisation de Compute Engine avec Slurm est particulièrement bien adaptée à l'entraînement de modèles et aux simulations à grande échelle. Nous vous recommandons d'utiliser Compute Engine avec Slurm si vous devez intégrer des fonctionnalités d'IA et de propriété intellectuelle (IP) propriétaires à un environnement évolutif avec la flexibilité et le contrôle nécessaires pour optimiser les performances pour des charges de travail spécialisées. Pour en savoir plus sur l'utilisation de Compute Engine avec Slurm, consultez la page Déployer un cluster HPC avec Slurm.

Avec Compute Engine, vous provisionnez et gérez vos machines virtuelles (VM), ce qui vous permet de contrôler précisément les types d'instances, le stockage et la mise en réseau. Vous pouvez adapter votre infrastructure à vos besoins exacts, y compris en sélectionnant des types de machines de VM spécifiques. Pour en savoir plus sur l'utilisation des options de ligne de commande Cloud Storage FUSE dans Compute Engine, consultez la CLI gcsfuse et le fichier de configuration Cloud Storage FUSE. Vous pouvez également utiliser la famille de machines optimisées pour les accélérateurs afin d'améliorer les performances de vos charges de travail d'IA et de ML. Pour en savoir plus sur les familles de types de machines disponibles sur Compute Engine, consultez la page Guide de comparaison et de ressources pour les familles de machines.

Slurm offre une option puissante pour gérer les charges de travail d'IA et de ML, et vous permet de contrôler la configuration et la gestion des ressources de calcul. Pour utiliser cette approche, vous avez besoin d'une expertise en administration Slurm et en gestion des systèmes Linux.

Options de l'accélérateur

Les accélérateurs de machines sont des processeurs spécialisés conçus pour accélérer les calculs requis pour les charges de travail d'IA et de ML. Vous avez le choix entre GPU et TPU.

  • Les accélérateurs GPU offrent d'excellentes performances pour un large éventail de tâches, y compris le rendu graphique, l'entraînement deep learning et l'informatique scientifique. Google Cloud dispose d'une large sélection de GPU adaptés à différents tarifs et performances. Les GPU incluent souvent des disques SSD locaux dans chaque configuration de machine, qui peuvent être utilisés par Cloud Storage FUSE en tant que répertoire de cache. Pour en savoir plus sur les modèles de GPU et leur tarification, consultez la page Tarifs des GPU.
  • Les TPU sont des accélérateurs d'IA conçus sur mesure, optimisés pour l'entraînement et l'inférence de grands modèles d'IA. Elles conviennent parfaitement à divers cas d'utilisation, tels que les chatbots, la génération de code, la génération de contenus multimédias, la synthèse vocale, les services de vision, les moteurs de recommandations et les modèles de personnalisation. Pour en savoir plus sur les modèles et la tarification des TPU, consultez la page Tarifs de TPU.

Autres solutions de stockage

Cloud Storage FUSE fournit un système de fichiers pratique qui vous permet de bénéficier de l'évolutivité et de la rentabilité de Cloud Storage. Cependant, Cloud Storage FUSE n'est pas idéal pour les charges de travail qui exigent une faible latence pour les lectures de petits fichiers ou pour les charges de travail qui nécessitent une solution de stockage complète conforme à POSIX. Pour ces cas d'utilisation, nous vous recommandons d'envisager les alternatives de stockage suivantes:

  • Google Cloud Hyperdisk ML : solution de stockage de blocs hautes performances idéale pour les charges de travail contenant des clusters à grande échelle avec des centaines de nœuds et des ensembles de données en lecture seule plus petits allant de plusieurs centaines de Go à 64 To. Hyperdisk ML offre un débit plus élevé que Cloud Storage et peut être associé à plusieurs VM en mode lecture seule. Le mode d'accès Kubernetes ReadOnlyMany permet à Hyperdisk ML d'accélérer le chargement des pondérations de modèle par rapport à un chargement direct à partir d'un registre de modèles. Pour en savoir plus sur l'utilisation de Hyperdisk ML dans les charges de travail d'IA et de ML, consultez la page Accélérer le chargement des données d'IA et de ML avec Hyperdisk ML.
  • Connecteur pour PyTorch : produit Open Source dans Cloud Storage, parfaitement adapté aux charges de travail qui utilisent PyTorch. Le connecteur pour PyTorch optimise votre charge de travail d'entraînement en diffusant les données directement depuis vos buckets Cloud Storage et en éliminant le besoin de stockage intermédiaire. Cet accès direct et cette optimisation offrent des performances nettement supérieures à celles des appels d'API directs à Cloud Storage pour le chargement des données, l'entraînement et la création de points de contrôle.

Bien que d'autres options de stockage puissent offrir des avantages en termes de performances pour certaines charges de travail d'IA et de ML, il est essentiel d'évaluer vos besoins en termes de latence, de débit et de capacité de stockage.

Pour obtenir un comparatif complet des options de stockage pour les charges de travail d'IA et de ML, consultez la section Concevoir le stockage pour les charges de travail d'IA et de ML dans Google Cloud.

Considérations de conception

Cette section fournit des conseils sur les bonnes pratiques et les considérations de conception lors de la configuration de Cloud Storage FUSE pour des raisons de sécurité, de fiabilité, de coût et de performances. Bien que les recommandations présentées ici ne soient pas exhaustives, elles répondent à des considérations clés pour maximiser les avantages de Cloud Storage FUSE dans votre environnement. En fonction de vos besoins spécifiques et des caractéristiques de votre charge de travail, vous devrez peut-être envisager des options de configuration et des compromis supplémentaires.

Les recommandations de conception suivantes mettent en évidence les configurations permettant d'affiner le déploiement de Cloud Storage FUSE dans GKE. La plupart des options de Cloud Storage FUSE sont configurées avec des options d'installation. Pour en savoir plus sur les options de ligne de commande Cloud Storage FUSE et leur utilisation, consultez la page CLI gcsfuse et Optimiser le pilote CSI Cloud Storage FUSE pour améliorer les performances de GKE.

Sécurité, confidentialité et conformité

Cette section décrit les éléments à prendre en compte pour vos charges de travail d'IA et de ML dans Google Cloud , qui répondent à vos exigences de sécurité, de confidentialité et de conformité.

Considérations relatives à GKE

En mode de fonctionnement Autopilot, GKE préconfigure votre cluster et gère les nœuds conformément aux bonnes pratiques de sécurité, ce qui vous permet de vous concentrer sur la sécurité spécifique aux charges de travail. Pour en savoir plus, consultez les ressources suivantes :

Pour garantir un contrôle des accès amélioré pour vos applications exécutées dans GKE, vous pouvez utiliser Identity-Aware Proxy (IAP). IAP s'intègre à la ressource d'entrée GKE et permet de garantir que seuls les utilisateurs authentifiés disposant du rôle IAM (Identity and Access Management) approprié peuvent accéder aux applications. Pour en savoir plus, consultez la page Activer IAP pour GKE.

Par défaut, vos données dans GKE sont chiffrées au repos et en transit à l'aide de Google-owned and Google-managed encryption keys. Comme couche de sécurité supplémentaire pour les données sensibles, vous pouvez chiffrer les données au niveau de la couche d'application à l'aide d'une clé que vous possédez et gérez avec Cloud Key Management Service (Cloud KMS). Pour en savoir plus, consultez la page Chiffrer les secrets au niveau de la couche d'application.

Si vous utilisez un cluster GKE standard, vous pouvez exploiter les fonctionnalités de chiffrement de données supplémentaires suivantes:

Remarques concernant Cloud Storage

Par défaut, les données stockées dans Cloud Storage sont chiffrées à l'aide de Google-owned and Google-managed encryption keys. Si nécessaire, vous pouvez utiliser des clés de chiffrement gérées par le client (CMEK) ou vos propres clés que vous gérez à l'aide d'une méthode de gestion externe telle que les clés de chiffrement fournies par le client (CSEK). Pour en savoir plus, consultez la page Options de chiffrement des données.

Cloud Storage accepte deux méthodes pour accorder aux utilisateurs l'accès à vos buckets et objets: IAM et les listes de contrôle d'accès (LCA). Dans la plupart des cas, nous vous recommandons d'utiliser IAM, qui vous permet d'accorder des autorisations au niveau du bucket et du projet. Pour en savoir plus, consultez la page Présentation du contrôle des accès.

Les données d'entraînement que vous chargez via Cloud Storage peuvent inclure des données sensibles. Pour protéger ces données, vous pouvez utiliser la protection des données sensibles afin d'identifier, de classer et d'anonymiser les données. Pour séparer vos charges de travail d'entraînement et de diffusion, enregistrez votre modèle et vos points de contrôle dans des buckets Cloud Storage distincts. Cette isolation permet d'éviter l'exposition accidentelle d'informations sensibles dans votre ensemble de données d'entraînement pendant l'inférence. Pour en savoir plus, consultez la page Utiliser la protection des données sensibles avec Cloud Storage.

Si vous avez des exigences de résidence des données, Cloud Storage peut vous aider à y répondre. Les données sont stockées ou répliquées dans les régions que vous spécifiez.

Considérations relatives à Cloud Storage FUSE

Lorsque vous activez la mise en cache, Cloud Storage FUSE stocke les fichiers persistants de votre bucket Cloud Storage dans un format non chiffré dans le répertoire que vous spécifiez. Cloud Storage expose tous les fichiers à tout utilisateur ou processus ayant accès au répertoire. Pour atténuer ces risques et améliorer la sécurité, la couche du noyau FUSE limite l'accès au système de fichiers à l'utilisateur qui a installé le système. Cette restriction refuse l'accès aux autres utilisateurs, y compris à l'utilisateur racine, même si les autorisations de nœud d'index sont plus permissives.

Toutefois, dans certains cas, il peut être nécessaire de remplacer les restrictions d'accès par défaut. Par exemple, dans une charge de travail d'entraînement d'IA et de ML distribuée, où plusieurs nœuds doivent accéder aux points de contrôle stockés dans Cloud Storage et les partager, vous devrez peut-être autoriser un accès plus large. Dans ce cas, vous pouvez ignorer la restriction par défaut à l'aide de l'option -o allow_other. Toutefois, si vous élargissez l'accès à vos fichiers, vous pouvez potentiellement exposer vos données à des utilisateurs non autorisés. Par conséquent, vous devez faire preuve de prudence lorsque vous utilisez cette option.

Par défaut, tous les nœuds d'un système de fichiers Cloud Storage FUSE appartiennent à l'utilisateur qui a installé le système de fichiers. Bien que ces valeurs par défaut puissent convenir à de nombreux cas, vous pouvez personnaliser un contexte de sécurité pour votre pod. Pour en savoir plus sur la personnalisation d'un contexte de sécurité, consultez la section Sécurité et autorisations.

Fiabilité

Pour garantir un fonctionnement fiable, Cloud Storage FUSE intègre des tentatives automatiques permettant de gérer les perturbations potentielles et de maintenir la cohérence des données. Les requêtes en échec font automatiquement l'objet de nouvelles tentatives avec un intervalle exponentiel entre les tentatives vers Cloud Storage. L'intervalle exponentiel entre les tentatives augmente progressivement le délai entre les tentatives. Ce mécanisme intégré aide votre application à résoudre des problèmes réseau temporaires ou une indisponibilité temporaire de Cloud Storage.

Bien que Cloud Storage FUSE offre de nombreux avantages, tenez compte des points suivants:

  • Écritures simultanées: lorsque plusieurs utilisateurs tentent de modifier un fichier, la dernière écriture l'emporte est prioritaire et toutes les opérations d'écriture précédentes sont perdues. Pour préserver l'intégrité des données, nous vous recommandons de modifier un objet unique par une seule source à la fois.
  • Persistance du cache: lorsque vous désinstallez ou redémarrez votre bucket, les caches ne persistent pas. Pour éviter les problèmes de sécurité potentiels, après avoir désinstallé ou redémarré votre bucket, il est essentiel de supprimer manuellement le répertoire de cache de fichiers.
  • Processus avec des caches dédiés: bien que Cloud Storage FUSE permette l'accès simultané pour un traitement parallèle efficace, il est important de garder à l'esprit que les caches sont spécifiques à chaque processus Cloud Storage FUSE. Par conséquent, le même répertoire de cache ne doit pas être utilisé par des processus Cloud Storage FUSE différents qui s'exécutent sur la même machine ou sur des machines différentes.

Lorsque vous créez l'architecture pour votre charge de travail, tenez également compte des bonnes pratiques générales et des recommandations fournies sur la page Framework bien conçu: pilier de la fiabilité.

Optimisation des coûts

Cette section fournit des conseils pour vous aider à optimiser le coût de configuration et d'exploitation de votre workflow d'IA et de ML dans Google Cloud.

Considérations relatives à GKE

En mode Autopilot, GKE optimise l'efficacité de l'infrastructure de votre cluster en fonction des exigences de la charge de travail. Pour contrôler les coûts, vous n'avez pas besoin de surveiller en permanence l'utilisation des ressources ni de gérer la capacité.

Si vous pouvez prédire l'utilisation du processeur, de la mémoire et du stockage éphémère de votre cluster Autopilot, vous pouvez obtenir des remises sur engagement d'utilisation. Pour réduire les coûts d'exécution de votre application, vous pouvez utiliser des VM Spot pour vos nœuds GKE. Les VM Spot sont moins chères que les VM standards, mais elles n'offrent pas de garantie de disponibilité.

Pour optimiser les coûts et les performances grâce à une gestion efficace, utilisez le planificateur de charge de travail dynamique. Le planificateur de charge de travail dynamique est un planificateur de tâches et de gestion des ressources qui vous aide à améliorer l'accès aux ressources d'IA et de ML. Le planificateur de charge de travail dynamique planifie tous vos accélérateurs simultanément et peut s'exécuter pendant les heures creuses avec une gestion de la capacité des accélérateurs définie. En planifiant les tâches de manière stratégique, le programmeur de charge de travail dynamique permet de maximiser l'utilisation de l'accélérateur, de réduire le temps d'inactivité et, à terme, d'optimiser vos dépenses cloud.

Pour plus d'informations sur l'optimisation des coûts, consultez les bonnes pratiques pour l'exécution d'applications Kubernetes à coût maîtrisé sur GKE.

Remarques concernant Cloud Storage

Vos besoins en stockage d'IA et de ML peuvent être dynamiques. Par exemple, vous pouvez avoir besoin d'une capacité de stockage importante pour vos données d'entraînement, mais vos exigences de capacité diminuent pour la diffusion, où vous stockez principalement des données de modèle et des points de contrôle. Pour maîtriser les coûts, nous vous recommandons d'activer la gestion du cycle de vie des objets et la classe automatique.

La gestion du cycle de vie des objets vous permet de déplacer automatiquement les données plus anciennes ou inutilisées vers des classes de stockage moins chères, voire de les supprimer, en fonction des règles que vous définissez.

La fonctionnalité de classe automatique déplace automatiquement les données entre les classes de stockage en fonction de vos modèles d'accès. Cette fonctionnalité vous permet d'obtenir le meilleur équilibre entre performances et coûts.

Considérations relatives à Cloud Storage FUSE

Les frais Cloud Storage standards s'appliquent au stockage, aux opérations de métadonnées et au trafic réseau généré par vos activités FUSE. L'utilisation de Cloud Storage FUSE n'entraîne aucun coût supplémentaire. Pour en savoir plus sur les opérations Cloud Storage FUSE courantes et sur leur correspondance avec les opérations Cloud Storage, consultez la section Mappage des opérations.

Pour optimiser les coûts de votre répertoire de cache, vous pouvez utiliser la capacité de la machine provisionnée existante, y compris les disques SSD locaux, les disques persistants ou les données en mémoire pour les systèmes de fichiers temporaires. Lorsque vous utilisez la capacité de la machine existante, vous évitez que des frais ne soient facturés pour des ressources de stockage supplémentaires. En outre, l'optimisation des succès de cache peut réduire considérablement les coûts de Cloud Storage, car les données diffusées localement n'entraînent aucuns frais d'exploitation ni de sortie réseau.

Pour en savoir plus sur les frais, consultez la page Tarifs de Cloud Storage.

Lorsque vous créez l'architecture de votre charge de travail, tenez également compte des bonnes pratiques générales et des recommandations fournies dans le pilier du framework bien structuré: optimisation des coûts.

Optimisation des performances

Cloud Storage FUSE est conçu pour fournir un accès efficace aux données dans Cloud Storage pour vos charges de travail d'IA et de ML. Toutefois, des requêtes de métadonnées fréquentes peuvent réduire les performances, en particulier dans les clusters à grande échelle. Pour en savoir plus sur l'amélioration des performances, consultez la page Optimiser le pilote CSI Cloud Storage FUSE pour améliorer les performances de GKE.

Pour optimiser les performances, envisagez les configurations suivantes:

  • Activez les espaces de noms hiérarchiques: pour améliorer l'accès aux données et l'organisation, créez des buckets Cloud Storage avec des espaces de noms hiérarchiques. Les espaces de noms hiérarchiques vous permettent d'organiser les données dans une structure de système de fichiers, ce qui améliore les performances, assure la cohérence et simplifie la gestion des charges de travail d'IA et de ML. Les espaces de noms hiérarchiques permettent un RPS initial plus élevé et des renommages rapides de répertoires atomiques.
  • Activer la mise en cache des fichiers: cette fonctionnalité accélère l'accès répété aux données d'entraînement en utilisant un répertoire de nœud local pour mettre en cache les fichiers lus fréquemment. La diffusion de lectures répétées à partir d'un support de cache réduit la latence et réduit les opérations renvoyées vers Cloud Storage. Sur les types de machines GPU dotés d'un disque SSD local, le répertoire SSD local est automatiquement utilisé. Pour les types de machines n'incluant pas de disques SSD locaux, tels que les TPU, vous pouvez utiliser un répertoire de disque RAM, tel que /tmpfs.

    Pour activer le cache de fichiers, utilisez les options d'installation suivantes:

    • Pour définir la valeur utilisable du cache de fichiers sur la limite de capacité du cache, définissez file-cache:max-size-mb: sur -1.
    • Pour définir la valeur TTL (Time To Live) du cache de métadonnées sur une durée illimitée et l'éviction en fonction de l'algorithme LRU (le moins récemment utilisé) une fois la capacité maximale atteinte, définissez metadata-cache:ttl-secs: sur -1.
  • Augmentation des valeurs de cache de métadonnées: Cloud Storage FUSE dispose de deux formes de cache de métadonnées qui améliorent les performances pour les opérations liées à la recherche de métadonnées : le cache de statistiques et le cache de types.

    Pour augmenter les valeurs du cache de métadonnées, définissez les options d'installation suivantes:

    • Pour définir la valeur de cache statistique utilisable sur la limite de capacité du cache, définissez metadata-cache:stat-cache-max-size-mb: sur -1.
    • Pour définir la valeur de cache du type utilisable sur la limite de capacité, définissez metadata-cache:type-cache-max-size-mb: sur -1.
    • Pour empêcher l'expiration des éléments de métadonnées mis en cache, avec une valeur par défaut de 60 secondes, définissez metadata-cache:ttl-secs: sur -1. Les valeurs infinies ne doivent être utilisées que pour les volumes en lecture seule et les nœuds dotés de configurations de mémoire importantes.
  • 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 utile pour les applications qui accèdent à des ensembles de données volumineux contenant de nombreux fichiers, telles que les charges de travail d'entraînement d'IA et de ML.

    Pour préremplir le cache de métadonnées, activez le préchargement des métadonnées pour le volume donné. Définissez l'attribut de volume gcsfuseMetadataPrefetchOnMount sur true.

  • Activer la mise en cache des listes: cette fonctionnalité optimise le référencement des répertoires et des fichiers. Il est particulièrement utile pour les charges de travail d'entraînement d'IA et de ML, qui impliquent souvent d'accéder de manière répétée à des répertoires entiers et de les lister. La mise en cache des listes fournit des processus d'entraînement très efficaces en évitant d'avoir à accéder de manière répétée aux listes de répertoires dans la mémoire de votre ordinateur.

    Pour activer la mise en cache des listes et empêcher l'expiration des éléments du cache de la liste du noyau, définissez l'option d'installation file-system:kernel-list-cache-ttl-secs: sur -1.

  • Activez les téléchargements parallèles: les téléchargements en parallèle accélèrent le chargement initial du modèle en récupérant plusieurs fragments simultanément. L'activation des téléchargements parallèles accélère le chargement du modèle et améliore la réactivité lors de l'inférence.

    Pour activer les téléchargements parallèles, activez le cache de fichiers et définissez l'option d'installation file-cache:enable-parallel-downloads: sur true.

  • Augmentez les limites side-car GKE: pour éviter que les contraintes liées aux ressources n'entravent les performances, configurez des limites sur les ressources des conteneurs side-car, telles que la consommation de processeur et de mémoire. Si vous utilisez un cache SSD local, envisagez de définir ephemeral-storage-limit sur "illimité". Ce paramètre permet à Cloud Storage FUSE d'utiliser pleinement le stockage SSD local disponible pour améliorer la mise en cache.

  • Installation en lecture seule: étant donné que les charges de travail d'entraînement n'ont généralement besoin que de lire des données, configurez le point d'installation en lecture seule pour des performances optimales, en particulier lorsque vous utilisez la mise en cache de fichiers. Cette configuration permet également de maximiser les avantages des optimisations dans les clusters à grande échelle et d'éviter d'éventuelles incohérences dans les données.

Lorsque vous créez l'architecture de votre charge de travail, tenez compte des bonnes pratiques générales et des recommandations fournies dans le pilier du framework bien structuré: optimisation des performances.

Étape suivante

Contributeurs

Auteur: Samantha He | Rédacteur technique

Autres contributeurs :