Déployer le modèle génératif Mistral 7b sur un GPU A10 sur AWS

Summary

Cette formation NLP cloud montre comment déployer et utiliser le modèle d'IA générative Mistral 7b sur un GPU NVIDIA A10 sur AWS.

Le modèle Mistral 7b bat LLaMA 3 7b dans tous les benchmarks et LLaMA 3 13b dans de nombreux benchmarks. Il est même à égalité avec le modèle LLaMA 1 34b.

Son déploiement et son utilisation nécessitent au moins 15 Go de VRAM, c'est pourquoi nous avons besoin d'un GPU A10 avec 24 Go de VRAM au minimum.

Voici la structure du cours :

Transcript

Bonjour, ici Julien Sainas de NLP Cloud.

Aujourd'hui, nous allons voir comment déployer le modèle génératif Mistral 7b sur un GPU AWS A10.

Mistral 7b est un modèle génératif de pointe publié par une société française appelée Mistral AI.

Ce modèle est sorti en septembre 2023 et bat le Lama 2 7b sur tous les critères officiels.

Plus intéressant encore, il surpasse également le Lama 2 13b sur de nombreux points de référence et se situe au même niveau que le Lama 1 34b.

Mistral AI a publié ce modèle avec une licence Apache, ce qui vous permet d'utiliser ce modèle comme bon vous semble.

L'équipe a publié à la fois un modèle de base et une version affinée du chat.

Nous allons déployer la version chat dans cette vidéo aujourd'hui.

Mistral 7b nécessite au moins 14 gigas de mémoire virtuelle et plus en cas de taille de contexte importante.

Nous allons donc le déployer sur un GPU NVIDIA A10 sur AWS, car ce GPU dispose de 24 gigaoctets de mémoire virtuelle et est assez rentable.

La manière la plus simple de déployer Mistral 7b est d'utiliser le cadre Hugging Face et de suivre les directives officielles de Mistral AI.

Dans un premier temps, nous devons sélectionner la machine AWS appropriée.

Il y a des tonnes de machines sur AWS, donc le meilleur conseil que je puisse vous donner est de commencer par cette page sur les types d'instances, puis d'aller sur Accelerated Computing sur la gauche.

Ici, vous avez une liste de toutes les instances matérielles accélérées qu'AWS fournit, et celle que nous voulons aujourd'hui est la G5.

Comme vous pouvez le voir ici, le G5 embarque un GPU A10, ce qui est ce que nous voulons.

Il existe plusieurs types d'instances G5.

Certains n'ont qu'un seul GPU, d'autres en ont quatre ou huit.

Un GPU nous suffit car il y a suffisamment de mémoire virtuelle sur un GPU, mais nous devons faire très attention à la quantité de mémoire dont dispose l'instance car lorsque nous lancerons le modèle Mistral 7b, nous aurons temporairement besoin d'un peu de mémoire pour charger le modèle.

C'est pourquoi nous choisirons aujourd'hui une instance G5 4X de grande taille, car 64 gigaoctets devraient suffire.

Je passe maintenant à ma console AWS et je clique sur Launch Instance.

Appelons-le Test A10 Mistral.

Nous choisirons le système d'exploitation Ubuntu, mais il y a une astuce.

Nous ne voulons pas choisir le système d'exploitation standard Ubuntu car nous devrons installer manuellement les pilotes NVIDIA, ce qui est très pénible.

Ce que nous allons faire, c'est sélectionner le serveur Deep Learning AMI GPU PyTorch ici, ce qui est beaucoup mieux parce que cette AMI est livrée avec Ubuntu plus les pilotes NVIDIA plus la boîte à outils CUDA plus PyTorch et d'autres choses, qui sont toutes les choses dont nous aurons besoin aujourd'hui pour nos tests.

Ici, nous sélectionnons la grande instance G5 4X.

Si vous n'avez pas de paire de clés, vous devez en créer une.

Si c'est la première fois que vous faites cela et que vous ne savez pas exactement comment connecter VS Code à votre instance AWS, je vous recommande de regarder notre vidéo dédiée à l'environnement de développement à distance avec VS Code sur AWS.

Il n'est pas nécessaire d'ouvrir d'autres ports, et je vous recommande d'ajouter environ 100 gigaoctets de disque.

En théorie, le modèle ne devrait prendre que 20 gigas de disque dur, mais il est toujours préférable d'en avoir plus car nous aurons peut-être besoin d'installer des bibliothèques, donc ici nous serons en sécurité.

Cliquez sur Launch Instance (Lancer l'instance).

Bien, il est créé.

Si vous avez un problème de quota parce que c'est peut-être la première fois que vous lancez un GPU 8N, je vous recommande de contacter le support AWS.

Je prends maintenant l'IP publique, et je passe à VS Code.

En bas à gauche, vous devez connecter une fenêtre courante à l'hôte, et d'abord, vous devez configurer vos hôtes.

Voici l'adresse IP que je viens de récupérer auprès d'AWS, et voici ma clé SSH.

J'enregistre le fichier, je refais la même chose et cette fois je clique sur Mistral 7B.

Je veux accepter la nouvelle empreinte digitale.

Parfait.

Nous sommes maintenant sur notre machine à GPU 8N.

Vérifions d'abord si le GPU est disponible avec les bons pilotes.

Avec NVIDIA SMI, c'est parfait.

Je peux voir que j'ai un GPU 8N ici et qu'il est vide, donc j'ai presque 24 gigas de VRAM pour mon modèle aujourd'hui.

Je crée un répertoire de test que j'ouvrirai avec VS Code, et je crée maintenant un fichier de test.

Appelons-le infer.py.

Que devons-nous donc mettre dans ce fichier infer.py ? C'est simple.

Passons à notre modèle d'IA Mistral sur le visage étreint.

Si c'est la première fois que vous téléchargez un modèle sur Hugging Face, vous pouvez aller ici pour les modèles, et vous avez des tonnes de modèles disponibles.

Vous pouvez cliquer ici et taper Mistral 7B.

Comme vous pouvez le constater, le Mistral était déjà en tête de liste car il est très à la mode en ce moment.

Je vais choisir le modèle Instruct parce qu'il est plus amusant à jouer aujourd'hui, et ici je ne fais que suivre les directives de l'équipe Mistral AI.

J'ai donc simplement copié-collé le code dans VS Code.

Cela ne fonctionnera pas tel quel, car il faut d'abord installer la bibliothèque Transformers.

Comme ce modèle Mistral 7B vient d'être ajouté à Transformers, il n'est pas encore disponible dans le paquet PyPy, mais ce n'est pas un problème.

Nous allons installer Transformers depuis le dépôt GitHub directement.

Bon.

Transformers est maintenant correctement installé.

La dernière chose à faire est d'utiliser la version en virgule flottante 16 du modèle car si nous utilisons la version par défaut du modèle, qui est en virgule flottante 32, elle sera trop grande pour notre GPU A10, et la plupart du temps, la différence entre FP16 et FP32 pour ce type de modèle n'est absolument pas perceptible.

Ce que nous devons faire aujourd'hui, c'est importer Torch et ajouter ce paramètre, Torch dtype, lors du chargement du modèle.

Bon.

Essayons maintenant d'exécuter le script d'inférence.

Bon.

Nous disposons donc d'une véritable recette de mayonnaise.

Nous pouvons peut-être essayer autre chose.

Demandons au modèle comment installer Transformers sur un serveur Linux.

Nous pouvons le supprimer.

Bon.

Alors CSS, je ne sais pas trop pourquoi.

Cela semble correct, à l'exception du balisage CSS ici.

Je ne sais pas trop pourquoi il y a ce détail, mais je pense que c'est suffisant pour vous montrer qu'il s'agit d'un beau modèle 7B, et maintenant que vous savez comment l'utiliser, c'est à vous de jouer.

Vous savez maintenant comment déployer le modèle Mistral 7B sur votre propre serveur.

Comme vous pouvez le constater, ce n'est pas forcément complexe, d'autant plus que nous n'utilisons aujourd'hui qu'un seul GPU.

Si vous ne disposez pas d'un GPU A10 avec suffisamment de mémoire virtuelle, vous aurez peut-être besoin de plusieurs GPU plus petits.

Dans ce cas, vous devrez répartir votre modèle sur plusieurs petits GPU.

Ce sera un peu plus complexe, et nous aurons besoin d'une autre vidéo dédiée pour cela.

Bonne journée.