Déployer une application GPU sur OVHcloud Managed Kubernetes Service
Découvrez comment déployer une application GPU sur OVHcloud Managed Kubernetes
Objectif
Dans ce tutoriel, nous allons vous montrer comment déployer une application GPU sur un cluster OVHcloud Managed Kubernetes.
Les GPU fournissent la puissance de calcul nécessaire aux tâches d'IA/ML et de Deep Learning impliquant des calculs intensifs, comme la reconnaissance d'image, le traitement du langage naturel (NLP), ainsi que d'autres tâches gourmandes en calcul comme le transcodage vidéo et le traitement d'image.
L'utilisation de GPU avec Kubernetes vous permet d'étendre la scalabilité de Kubernetes aux applications d'IA/ML.
Avant de commencer
Ce tutoriel suppose que vous disposez déjà d'un cluster OVHcloud Managed Kubernetes fonctionnel, ainsi que de connaissances de base sur son utilisation. Pour en savoir plus sur ces sujets, consultez le guide de démarrage rapide d'OVHcloud Managed Kubernetes Service.
Vous devez également avoir Helm installé sur votre poste de travail et sur votre cluster. Consultez le tutoriel comment installer Helm sur OVHcloud Managed Kubernetes Service.
Prérequis
Pour tirer le meilleur parti des GPU sur OVHcloud Managed Kubernetes, de la manière la plus économique possible, et pour profiter de l'autoscaling du cluster, nous recommandons de créer des pools de nœuds GPU distincts dans vos clusters Kubernetes.
Les pools de nœuds GPU regroupent des nœuds de même flavor GPU et peuvent être configurés avec l'autoscaling pour gérer efficacement des charges de travail variables.
L'opérateur GPU que vous allez installer doit s'exécuter sur des nœuds Kubernetes équipés de GPU.
Vous devez donc créer un pool de nœuds avec le type de flavor t1.
Si vous disposez déjà d'un cluster OVHcloud Kubernetes avec un pool de nœuds utilisant le type de flavor t1, vous pouvez ignorer l'étape suivante « Création d'un pool de nœuds GPU avec autoscaling ».
Les machines virtuelles GPU sont extrêmement puissantes et significativement plus coûteuses que les nœuds standards. Si vous utilisez généralement OVHcloud Public Cloud à petite échelle et/ou si vous êtes un nouvel utilisateur, vous devrez peut-être augmenter votre quota Public Cloud pour accéder à ce type de machines pour votre projet. Notez également que ces machines ne sont disponibles que dans certaines de nos régions Public Cloud.
Notez aussi que si les worker nodes (qu'ils soient ajoutés manuellement ou via l'autoscaler du cluster) sont créés en quelques minutes, le passage au statut prêt de nos worker nodes GPU peut prendre un peu plus d'une heure.
Accès à l'espace client OVHcloud
- Lien direct :
- Pour accéder à vos services :
Public Cloud> Sélectionnez votre projet >Managed Kubernetes Service
En pratique
Création d'un pool de nœuds GPU avec autoscaling
Cliquez sur votre cluster, puis sur l'onglet Pools de nœuds.
Vous allez créer votre pool de nœuds GPU spécial.
Cliquez sur Ajouter un pool de nœuds.
Dans le formulaire de création du pool de nœuds, saisissez un nom pour votre pool de nœuds GPU (par exemple, gpu-node-pool).
À l'étape de sélection du flavor, cliquez sur l'onglet GPU et sélectionnez un flavor GPU tel que T1-45.
Définissez le nombre de nœuds et, si vous le souhaitez, activez Autoscaling, puis définissez la taille minimale et maximale du pool (par exemple, 3 au minimum et 10 au maximum).
Sélectionnez Horaire comme mode de facturation pour ce pool de nœuds GPU.
La création du pool de nœuds est maintenant en cours. Elle devrait être disponible en quelques minutes dans votre espace client OVHcloud.
Une fois que le statut du pool de nœuds affiche OK dans l'espace client OVHcloud, vous pouvez vérifier que les nœuds GPU sont correctement étiquetés à l'aide de la commande ci-dessus.
NVIDIA GPU Operator
Le NVIDIA GPU Operator utilise l'Operator Framework au sein de Kubernetes pour automatiser la gestion de tous les composants logiciels NVIDIA nécessaires au provisionnement des GPU. Ces composants incluent les pilotes NVIDIA (pour activer CUDA), le device plugin Kubernetes pour les GPU, le NVIDIA Container Runtime, l'étiquetage automatique des nœuds, la supervision basée sur DCGM, et d'autres.

Si cet opérateur vous intéresse, n'hésitez pas à consulter la documentation officielle du NVIDIA GPU operator.
Installer le chart Helm du NVIDIA GPU Operator
Pour ce tutoriel, nous utilisons le chart Helm NVIDIA GPU Operator disponible sur le dépôt NVIDIA. Le chart est entièrement configurable, mais nous utilisons ici la configuration par défaut, avec seulement l'ensemble minimal de personnalisations pour qu'il fonctionne correctement sur OVHcloud Managed Kubernetes Service.
Ajoutez le dépôt Helm NVIDIA :
Le chart Helm Nvidia a changé d'emplacement. Si vous avez déjà ajouté un dépôt nommé nvidia, vous pouvez le supprimer : helm repo remove nvidia.
Cela ajoutera le dépôt NVIDIA et mettra à jour tous vos dépôts :
Installez le GPU Operator dans le namespace gpu-operator :
Nous recommandons d'utiliser la dernière version de pilote publiée par NVIDIA suivant le format *-5.15.0-*-generic-ubuntu22.04, disponible dans le catalogue de pilotes NVIDIA NGC.
Exemple : 595-5.15.0-185-generic-ubuntu22.04. Définissez-la à l'aide de driver.version dans les valeurs du chart gpu-operator.
Vous devriez avoir un GPU operator installé et en cours d'exécution :
Vérifier l'installation du GPU Operator
Lorsque le GPU operator est actif et en cours d'exécution, il ajoute des labels nvidia.com/gpu sur les nœuds GPU.
Vous pouvez vérifier les nouveaux labels avec la commande :
Les nouveaux labels ne devraient apparaître que sur vos nœuds GPU :

Exécuter des applications GPU d'exemple
Vous pouvez maintenant exécuter une application/workload GPU sur votre cluster.
Pour configurer les Pods afin qu'ils consomment des GPU, vous devez utiliser une limite de ressource dans votre fichier manifeste YAML. Vous devez spécifier une limite de ressource dans une spécification de Pod à l'aide de la paire clé-valeur suivante :
Créez un fichier manifeste YAML vector.yaml avec le contenu suivant :
Appliquez-le :
Puis observez le démarrage du Pod :
Vous devriez obtenir un résultat comme celui-ci :
Une fois que cuda-vectoradd a démarré, exécuté et terminé sa tâche, consultez les logs avec la commande suivante :
Notre premier workload GPU vient de démarrer et a terminé sa tâche dans notre cluster OVHcloud Managed Kubernetes.
Aller plus loin
Pour en savoir plus sur l'utilisation pratique de votre cluster Kubernetes, consultez notre documentation OVHcloud Managed Kubernetes.
Pour une formation ou une assistance technique sur la mise en œuvre de nos solutions, contactez votre commercial ou consultez la page Professional Services pour obtenir un devis et faire analyser votre projet par nos experts.
Échangez avec notre communauté d'utilisateurs.