"Good, adaptation, improvisation. But your weakness is not your technique.", The matrix, Les Wachowski, 1999
Objectifs:
- Comprendre ce qu'est un LLM
- Activer et configurer un LLM Engine
- Utiliser l'IA Générative pour générer rapidement des phrases et entraîner plus rapidement le modèle
Cette introduction a pour objectif d’expliquer la notion de LLM.
Un modèle de langage à grande échelle (LLM, pour Large Language Model) est conçu pour comprendre et générer du texte en utilisant un vaste ensemble de données d'apprentissage. Cette approche permet d'imiter le langage humain de manière convaincante et d'effectuer une variété de tâches liées au texte, telles que répondre à des questions, rédiger des textes, traduire des langues et bien plus encore.
Les LLM sont entraînés sur des centaines de milliards de mots et peuvent comprendre le contexte, l'humour, les métaphores et même certains aspects culturels spécifiques.
Les modèles de fondation, quant à eux, sont une catégorie plus large de modèles d'intelligence artificielle qui servent de base pour de multiples applications et adaptations. Un modèle de fondation peut être un LLM, mais il peut aussi être entraîné pour traiter des images, de l'audio, ou des données multimodales (c'est-à-dire des données qui combinent plusieurs types de médias). L'idée est de créer un modèle polyvalent qui peut ensuite être personnalisé ou affiné pour des tâches spécifiques sans avoir à être ré-entraîné depuis zéro.
Exemple non exhaustif de modèles de fondation
Pour utiliser une analogie de la fuséologie, considérez les LLM comme des moteurs de fusée spécialisés conçus pour propulser des missions spécifiques (dans ce cas, le traitement du langage). Les modèles de fondation, en revanche, sont comme des plates-formes de lancement modulaires qui peuvent soutenir différents types de missions — qu'il s'agisse de lancer un satellite, d'envoyer un rover sur Mars ou de mettre en orbite un télescope spatial.
Vous en conviendrez que si la plates-forme de lancement (Fondation Model) est solide et droite, la fusée (le LLM) fait un strike dans l'espace, en revanche si le la plates-forme de lancement est bancale et que la fusée par chez le voisin, il risque d'y avoir des dégâts !
En se basant sur des modèles de fondation solides et éprouvés, les développeurs peuvent créer des applications qui utilisent l'IA de manière plus efficace et plus sûre.
Dans le fichier docker/docker-compose.yml
décommenter les services gen_ai_orchestrator-server:
, postgres-db:
et relancer un :
cd docker
source .env
docker compose -p devfest_tock up -d
Pour installer Ollama, vous devez aller sur le lien suivant : https://ollama.com/ et suivre les instructions pour télécharger Ollama sur votre machine. Une fois que cela est fait, dézipper le fichier et installer le programme sur votre machine. A la fin de l’installation Ollama vous conseil d’installer un model sur votre machine. Ce modèle fait plus de 6Go, et nous n’allons pas en avoir besoin. Il faut donc décliner le téléchargement de ce modèle.
Pour éviter de congestionner le réseau, nous avons pré-téléchargé les modèles pour voir.
- Télécharger l'archive :
- Version light si vous n'avez pas de GPU ou peu d'espace disque disponible http://gpu-server.lan/ollama_models/tinyllama_nomic-embed-text.tar
- Décompresser l'archive dans :
- macOS:
~/.ollama/models
- Linux:
/usr/share/ollama/.ollama/models
- Windows:
C:\Users\%username%\.ollama\models
- macOS:
- En lignes de commandes ça donne ça, avec l'emplacement sous linux :
curl -o /tmp/models.tar http://gpu-server.lan/ollama_models/tinyllama_nomic-embed-text.tar
sudo mkdir -p /usr/share/ollama/.ollama/models
sudo tar -xvf /tmp/models.tar -C /usr/share/ollama/.ollama/models
sudo chown -R ollama:ollama /usr/share/ollama/.ollama/models
ollama list # Devrait vous afficher les modèles
TODO préparer l'archive et tester cette étape !!!
ollama pull tinyllama
ollama pull nomic-embed-text
ollama run tinyllama
Une fois ce modèle téléchargé et toujours dans le terminal vous pouvez tester/jouer avec le modèle (entrez une question pour voir si le modèle répond), ou quitter en appuyant sur CTRL + D.
Installation trop lente ? ça rame .... pas de soucis vous allez pouvoir utiliser le serveur Ollama présent sur http://gpu-server.lan:11434. N'installez pas Ollama passez à la suite.
Modifiez dans le fichier docker/.env
les lignes suivantes pour utiliser le serveur ollama du codelab :
# Ollama (requires RAM and works better with a GPU)
# export OLLAMA_SERVER=host-gateway # LOCAL ollama server
# export OLLAMA_SERVER=192.168.20.2 # OUR CODELAB ollama server at gpu-server.lan, unfornately docker compose needs an IP addr
export OLLAMA_SERVER=192.168.20.2 # OUR CODELAB ollama server at gpu-server.lan, unfornately docker compose needs an IP addr
Désormais, on va utiliser notre l'IA Générative (notre LLM) pour générer rapidement des nouvelles phrases et variantes. Cela permettra d'entraîner plus rapidement notre modèle initial, donc d'améliorer la compréhension du bot. Pour autant, le bot utilisera toujours les mêmes réponses qu'auparavant. On ne donne donc pas "carte blanche" à l'IA Générative, ce n'est pas elle qui répond, elle ne peut pas improviser ou halluciner. Pour le moment, elle améliore donc la compréhension du bot, sans perdre le contrôle sur les différentes réponses du bot.
Le menu Gen AI > Sentence Generation Settings permet de configurer la génération de phrases d'entraînement pour les bots FAQ.
Remarque : pour accéder à cette page, il faut bénéficier du rôle botUser.
Pour activer la fonction de génération de phrases, vous devez choisir :
Un provider IA :
- Voir la liste des fournisseurs d'IA
Une "température" (par défaut pour les nouvelles phrases) :
- Cela correspond au degré d’inventivité du modèle utilisé pour générer des phrases.
- La température est située entre 0 et 1.0.
- 0 = pas de latitude dans la création des phrases
- 1.0 = grande latitude dans la création des phrases
Un prompt :
- C'est un ensemble d'instructions permettant de cadrer la génération de nouvelles phrases d'entraînement.
Le nombre de phrases :
- Nombre de phrases d'entraînement générées par chaque requête.
Activation :
- Permet d'activer la fonctionnalité.
Si vous avez bien suivi l'étape 1 du codelab, Ollama est installé avec tinyOllama sur votre machine.
Avec notre environnement Docker, Ollama doit etre accessible sur le réseau 0.0.0.0.
Si vous êtes sur Linux, nous vous invitons à suivre ces étapes.
Pour exposer ollama à toutes les adresses IP, il faut aller modifier le fichier /etc/systemd/system/ollama.service. Changer les lignes suivantes :
[Service]
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
#...
Environment="OLLAMA_HOST=0.0.0.0:11434"
Puis redémarrer le service ollama avec les commandes suivantes :
sudo systemctl daemon-reload
sudo systemctl restart ollama.service
Sur MacOs pour exposer Ollama sur l'ip 0.0.0.0, suivez les instructions de cette issue : ollama/ollama#3581 (comment)
Assurez-vous que Ollama est bien accessible sur l'ip en vous rendant sur l'url suivante : http://0.0.0.0:11434/. Vous devriez avoir ce rendu.
Pour connecter ollama à Tock studio, il vous faut renseigner l’accès à Ollama via cette url d’accès : http://ollama-server:11434 . Pour le modèle, là c’est à vous de renseigner le nom du modèle que vous utilisez dans ce CodeLab (ici nous avons tinyllama)
Si vous souhaitez utiliser openAI, vous devez vous inscrire sur la plateforme OpenAI pour obtenir une clé d'API. Une fois cela fait rendez-vous à cette page https://platform.openai.com/api-keys pour générer votre clé d'API.
Dès que vous avez votre clé d'API, vous pouvez la renseigner dans le champ API Key et choisir le model (Model name) que vous souhaitez utiliser. Par exemple vous pourriez avoir ce genre de rendu.
Si vous souhaitez utiliser Azure OpenAI, vous devez vous inscrire sur la plateforme
Azure OpenAI et d'avoir un compte professionnel
afin d'avoir une clé d'API.
Une fois cela fait, vous pouvez renseigner votre clé d'API dans le champ API Key et choisir le model (Model name)
que vous souhaitez utiliser.
Pour tester si Langfuse est bien connecté avec Tock Studio, allez dans Stories & Answers > FAQs stories. Là, vous allez cliquer sur + NEW FAQ STORY.
Dans l’onglet QUESTION et dans le champ comportant le même champ. Pour l’exemple, nous avons cette phrase « bonjour le bot » que nous ajoutons comme question en appuyant sur le +.
Dès que cela est fait, cliquez sur l’icône Generate sentences.
Cela va ouvrir une pop-up comme celle-ci vous permettant de générer des mots ou des phrases.
Là, vous allez choisir votre phrase que vous avez renseigné juste avant puis choisir les éléments de langages que vous souhaitez générer. Une fois cela fait, cliquer sur GENERATE
Aprés quelques secondes vous devriez avoir ce genre de rendu.
Vous pouvez tout sélectionner puis valider, chose qui vous ramènera à la page de la FAQ. Là, vous pourrez voir que les questions générer par l’IA ont été importées.
Vous pouvez cliquer ensuite sur l’onglet Answer pour rédiger une réponse, puis cliquer sur SAVE.