Aujourd’hui je vais vous parler de canards et de lamas (non je ne parle pas de cet adorable animal d’Amérique du sud, mais bien du modèle open-source créé par Meta), et aussi un peu de Mistral.
Nous autres développeurs avons tous expérimenté cela: un problème de programmation nous occupe l’esprit, nous en parlons à un collègue qui nous écoute plus ou moins patiemment nous épancher sur le sujet et pouf ! la solution se manifeste dans notre esprit nébuleux… c’est la fameuse théorie du canard en plastique: l’interlocuteur n’a servi à rien à part aider le locuteur à formuler sa pensée, et donc trouver la solution à son problème. Maintenant nous avons, en plus de nos collègues, la possibilité de discuter avec un confident numérique sur notre laptop !
Je vais en effet vous montrer dans cet article comment run un LLM en local depuis votre ordinateur.
Chez Reboot Conseil, nous avons à coeur de constamment améliorer nos services et notre expertise, nos clients et partenaires nous sollicitent par exemple pour intégrer la versatilité des LLMs dans leurs workflows; or, jusque là, le choix par défaut a été d’utiliser des APIs distantes (OpenAI, Azure OpenAI, Vertex AI, etc.) pour bénéficier de ces fonctionnalités. Cela implique des ajustements en termes de coûts, de confidentialité des données transmises, de latence, etc. auxquels il faut s’adapter pour bénéficier de la puissance de ces outils.
Aujourd’hui, OpenAI domine le marché avec Chat-GPT car c’est le produit le plus abouti sur le plan pratique; toutefois la concurrence open-source est constamment améliorée et optimisée. Les lamas ont la dalle et ils le font savoir !
Il existe aujourd’hui quantité de benchmarks pour évaluer de la manière la plus objective possible la performance d’un LLM et on voit à travers le temps que GPT 3.5 et GPT 4 se font rattraper et parfois même dépasser sur certains points !
Sur un plan beaucoup plus subjectif et à titre beaucoup plus personnel, je me suis amusé pendant ces vacances d’hiver à tester des LLMs open-source, notamment dans le cadre d’automatisations de tâches avec LangChain, et je vais dans cet article vous donner les clés pour avoir votre propre assistant privé avec zéro latence sur votre machine !
Pré requis en termes de hardware
Avant toute chose, il faut savoir que run des LLMs sur sa machine requiert qu’on ait une machine a minima puissante pour ce faire, mais rassurez-vous ce n’est rien de stratosphérique ! Si, en lisant cet article, vous vous rendez compte que vous êtes à la limite ou un peu short en termes de puissance de calcul, dites-vous que le champ évolue tellement vite que vous pourrez probablement bientôt vous abstraire de ces limites avec toutes les optimisations sur lesquelles travaille la communauté open-source actuellement !
Pour savoir quel modèle open-source vous pouvez run sur votre machine, fiez-vous à cette nomenclature:
- modèle avec 7 milliards de paramètres => j’ai besoin de 8 gigas de mémoire RAM ou VRAM à allouer uniquement pour le modèle
- 13 milliars de paramètres ? => 16 gigas de RAM
- 33 milliards de paramètres ? => 32 gigas de RAM
C’est quoi ces « paramètres » de modèle ? Très schématiquement, il s’agit des règles que le modèle a généré lors de son entraînement sur un large de volume de données, et qui vont l’aider à générer ses réponses. Plus un LLM a de paramètres, plus il est complexe et adaptatif. Notons cependant que ce n’est pas seulement le nombre de paramètres qui définit la performance d’un modèle, mais aussi la manière dont il est architecturé, la qualité de ses données d’entraînement, etc.
Pour ma part voici ma configuration, il s’agit de la config d’un ordinateur portable moyenne gamme sur le marché =>
- 11th Gen Intel® Core™ i7-11800H @ 2.30GHz × 16
- NVIDIA Corporation GA104M [GeForce RTX 3070 Mobile / Max-Q] / NVIDIA GeForce RTX 3070 Laptop GPU/PCIe/SSE2
- 64GB ram
- un disque dur SSD
J’ai réussi à faire tourner du 13b sur cette machine sans trop de souci, la latence est plus haute et parfois la génération cesse mais c’est jouable. Cela dit, pour un confort d’utilisation optimal, je suis resté sur du 7b. Durant mon petit benchmark, je n’ai même pas essayé de ne pas utiliser le GPU et de faire basculer le modèle sur CPU (ce qu’il est possible de faire avec l’outil que je vais vous présenter).
EDIT: dévoré par la curiosité, je viens de le faire tourner sur un i7 16 gigas de RAM Ubuntu laptop équipé d’une Radeon (et pas une Nvidia) => lors de l’installation j’ai été notifié que le modèle allait run sur CPU car je n’ai pas de GPU Nvidia, l’expérience est très fluide et je peux multi tasker tout en laissant le modèle ouvert (navigateur, éditeur de code, etc. ouverts en même temps) 😎
Ollama: votre copain à portée de terminal
Maintenant que nous avons revu sur quoi vous allez faire tourner votre assistant local, nous allons nous intéresser à l’outil que nous allons utiliser pour ce faire: ollama.
Ollama est un soft cross-platform (Linux et Mac, arrive bientôt sous Windows) qui vous permet de télécharger de nombreux modèles sur votre machine et de:
- discuter avec depuis votre terminal
- les utiliser de manière programmatique, depuis votre code Python par exemple, en les intégrant à des libs telles que LangChain
Il est très facile à utiliser =>
… pour l’installation
… pour le run, et c’est tout ! (la première fois que vous allez run la modèle, un long téléchargement du modèle aura lieu, prévoyez donc une bonne connection, e. g. près du routeur wifi)
J’ai été personnellement déconcerté par la facilité d’utilisation de l’outil, un peu comme quand on avait tous découvert l’UI de Chat-GPT lorsqu’elle est sortie. Je suis en train en ce moment même de prendre le réflexe d’aller sur mon terminal plutôt que sur Chat-GPT quand j’ai besoin de réfléchir, et voilà, vous avez maintenant votre petit ghost in the machine prêt à être invoqué à tout moment ! 🤖
Les modèles que j’utilise
codellama
=> https://huggingface.co/codellama, une variation de Llama spécialisée dans la programmationmistral
=> https://docs.mistral.ai/, le modèle français 🐔 qui a fait des étincelles avec la technologie Mixture Of Experts ! 🇫🇷
Pour des tâches spécifiques liées à du code, j’ai tendance à utiliser codellama
. Dans l’exemple ci-dessous je le fais depuis mon terminal, mais vous pouvez bien sûr appliquer ce prompt at scale dans un programme Python par exemple =>
J’utilise généralement Mistral pour des tâches liées plus à du résumé de contenu ou des questions générales. Dans les deux cas, c’est vraiment un plaisir d’avoir des réponses qui ne dépendent pas de la latence du réseau, qui n’ont pas de quota, et qui sont très pertinentes ! Un exemple ci-dessous avec Mistral =>
Un conseil: craftez bien votre prompt
Je suis particulièrement enthousiaste sur le monde de use-cases et d’opportunités qu’ouvre le fait de run des LLMs très puissants, en termes de fonctionnalités, sur des machines « customer-grade »; mais pour pouvoir en bénéficier, encore faut-il savoir prompter !
En résumé très rapide, le prompt engineering est le fait de donner des instructions à un LLM d’une manière qui va maximiser la pertinence des résultats obtenus. C’est particulièrement important quand on veut automatiser des tâches à l’échelle ! Nous avons une vidéo YouTube à ce sujet, n’hésitez pas à la regarder 😉
Reprenons un autre exemple de génération de JSON avec, cette fois avec mistral
pour changer:
C’est plutôt impressionant n’est-ce pas ? Toutefois rappelez-vous que ce vecteur d’automatisation n’est possible qu’avec des prompts de haute qualité !
Maintenant générons une réponse avec le même prompt et GPT-4:
… et la réponse, verbeuse et qui a mis beaucoup de temps â être générée:
On obtient bien sûr le même résultat et l’exemple est clairement orienté pour mettre en exergue un point essentiel de l’avantage que peuvent présenter des LLMs en local sur votre machine: zéro latence, un total contrôle sur le degré de verbosité, et surtout une confidentialité totale de vos données !
A titre personnel, je n’ai pas encore switché totalement pour abandonner ChatGPT, que je trouve toujours aussi formidable, mais je suis content d’avoir des options et j’ai aujourd’hui une utilisation mixte des LLMs.
Comme toujours, n’hésitez pas à nous laisser un commentaire ou nous contacter, chez Reboot on adore parler d’IA !