Vue lecture

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.

Dot – L’app IA locale pour interagir avec vos documents (RAG)

Vous rêvez d’exploiter la puissance des grands modèles de langage pour interagir avec vos documents, mais vous ne voulez pas que vos données quittent votre ordinateur ? Et bien j’ai ce qu’il vous faut !

Admettons que vous avez une tonne de documents sur votre disque dur, des PDFs, des fichiers Word, des présentations PowerPoint, des feuilles de calcul Excel et même des fichiers Markdown… Vous aimeriez pouvoir obtenir des réponses à vos questions à partir de leur contenu, avoir des résumés, générer de nouvelles idées à partir de ces informations… Bref, avoir un genre d’assistant intelligent qui pourrait comprendre et manipuler toutes ces données. Et bien c’est exactement ce que propose Dot !

Au cœur de son fonctionnement, on trouve un modèle de langage pré-entraîné, en l’occurrence une version de Mistral 7B au moment où j’écris ces lignes, qui tourne en local et permet de faire ce qu’on appelle du « Retrieval Augmented Generation » ou RAG.

En gros, ça veut dire que l’IA ne se contente pas de générer du texte à partir de ce qu’elle a appris, mais qu’elle va aussi chercher des informations pertinentes dans une base de connaissances locale. Vous sélectionnez un dossier contenant les documents que vous voulez indexer, Dot va les analyser, les découper en morceaux, calculer des embeddings et construire un index permettant de retrouver rapidement les passages les plus pertinents pour une requête donnée.

Et ensuite, vous pouvez discuter avec Dot comme vous le feriez avec un assistant IA classique. Vous lui posez une question, et il utiliser ses connaissances générales pour formuler une réponse, mais aussi aller piocher dans votre base documentaire pour l’enrichir avec des informations spécifiques. Du coup, ça booste d’un cran la pertinence et la qualité des réponses obtenues !

Bien sûr, comme Dot tourne exclusivement en local, vous n’avez pas à vous inquiéter pour la confidentialité de vos données puisque rien ne quitte jamais votre machine. C’est un gros avantage par rapport aux solutions cloud qui vont envoyer vos documents sur des serveurs distants. Et si vous avez besoin d’un coup de main pour des tâches qui ne nécessitent pas forcément d’accéder à vos documents, Dot intègre un mode « Big Dot ». Vous basculez dessus en un clic, et vous vous retrouvez avec un assistant IA généraliste, capable de tenir des conversations sur n’importe quel sujet, d’aider à la rédaction, de faire du brainstorming, etc. C’est comme avoir un ChatGPT en local sous la main à tout moment.

Si ça vous dit de tester, c’est gratuit, open source, dispo sous macOS, Windows, Linux et disponible ici : https://dotapp.uk/

LLMLingua – Compresser les prompts pour accélérer les LLM et réduire les coûts

Vous êtes-vous déjà retrouvé frustré par les limites de tokens lorsque vous demandiez à ChatGPT de résumer de longs textes ? Ou découragé par les coûts élevés de l’API GPT-3.5/4 malgré d’excellents résultats ? Si c’est le cas, LLMLingua est fait pour vous !

Développé par des chercheurs de Microsoft, LLMLingua-2 est un outil révolutionnaire de compression de prompts qui permet d’accélérer l’inférence des grands modèles de langage (LLM) comme GPT-3 et GPT-4. Grâce à des techniques avancées d’identification et de suppression des tokens non essentiels, il peut réduire jusqu’à 20 fois la taille des prompts, tout en préservant les performances des modèles.

Que vous soyez un développeur cherchant à optimiser ses coûts d’API ou un utilisateur souhaitant dépasser les limites de contexte, LLMLingua vous offre de nombreux avantages :

  • 💰 Réduction des coûts : En compressant à la fois les prompts et les réponses générées, LLMLingua permet de réaliser des économies significatives sur votre facture d’API.
  • 📝 Support de contextes étendus : Fini le casse-tête du « perdu au milieu » ! LLMLingua gère efficacement les longs contextes et booste les performances globales.
  • ⚖️ Robustesse : Pas besoin d’entraînement supplémentaire pour les LLM. LLMLingua fonctionne de manière transparente.
  • 🕵️ Préservation des connaissances : Toutes les informations clés des prompts originaux, comme l’apprentissage en contexte et le raisonnement, sont conservées.
  • 📜 Compression du cache KV : Le processus d’inférence est accéléré grâce à l’optimisation du cache clé-valeur.
  • 🪃 Récupération complète : GPT-4 est capable de reconstituer l’intégralité des informations à partir des prompts compressés. Bluffant !

Prenons un exemple simple et imaginons que vous vouliez compresser le prompt suivant avec LLMLingua :

python from llmlingua import PromptCompressor

llm_lingua = PromptCompressor()

prompt = "Sam a acheté une douzaine de boîtes contenant chacune 30 surligneurs, pour 10 $ chacune..."

compressed_prompt = llm_lingua.compress_prompt(prompt)

print(compressed_prompt)

Et voilà le travail ! En quelques lignes de code, vous obtenez un prompt compressé prêt à être envoyé à votre modèle favori :

Sam acheté boîtes contenant chacune 30 surligneurs, 10 $ chacune.

Avec un taux de compression de 11,2x, le nombre de tokens passe de 2365 à seulement 211 ! Et ce n’est qu’un début. Sur des exemples plus complexes comme les prompts Chain-of-Thought, LLMLingua maintient des performances similaires avec un taux de compression allant jusqu’à 20x.

Alors bien sûr, pour l’avoir bien testé, faut quand même comprendre que vous n’obtiendrez pas forcement un résultat identique entre le prompte compressé et celui non compressé mais pour un gain de 60 / 70 voire 80%, le résultat généré à partir du prompt compressé reste précis à hauteur de 70 / 80 %, ce qui est très bien.

Pour démarrer avec LLMLingua, rien de plus simple. Installez le package avec pip :

pip install llmlingua

Puis laissez libre cours à votre créativité ! Que vous soyez un adepte du Retrieval Augmented Generation (RAG), des réunions en ligne, du Chain-of-Thought ou même du code, LLMLingua saura répondre à vos besoins. De nombreux exemples et une documentation complète sont à votre disposition pour vous guider.

Perso, je l’ai testé sur de longs prompts que j’avais dans mes scripts, avec Claude3 d’ailleurs et pas ChatGPT et le résultat est top !

A tester ici !

PyTorch dévoile Torchtune pour fine-tuner les LLM

PyTorch, le framework chouchou des bidouilleurs d’IA, vient de nous pondre un petit truc cool : Torchtune ! 💎 Cette nouvelle bibliothèque native, encore en phase alpha mais déjà disponible en open-source sur GitHub, va vous permettre de fine-tuner les gros modèles de langage (LLM) comme un pro, sans vous prendre la tête.

Torchtune est donc une boîte à outils hyper flexible et modulaire qui va vous permettre de vous éclater à customiser des modèles pour vos propres besoins, le tout avec des recettes mémoire efficaces qui tournent même sur une bête carte graphique de gamer, comme les NVidia 3090/4090.

Son secret ?

Une architecture bien pensée qui mise sur l’interopérabilité avec l’écosystème des LLM, qu’ils soient open-source ou non. Concrètement, ça veut dire que vous allez pouvoir brancher Torchtune à tout un tas d’outils et de frameworks que vous adorez déjà, comme Hugging Face 🤗, PyTorch FSDP 🪢, Weights & Biases 📈, et plein d’autres.

Grâce à des recettes simples et bien documentées pour les modèles populaires comme Llama 3, Mistral ou Gemma 7B, même les débutants vont pouvoir se lancer dans l’aventure sans flipper. Bon OK, il faudra quand même un peu de bagage en PyTorch et en LLM, mais rien d’insurmontable ! Et si vous êtes un pro, vous allez pouvoir hacker le code à volonté pour l’adapter à vos besoins spécifiques.

Alors comment on met les mains dans le cambouis avec Torchtune ?

Rien de plus simple, mon cher Watson ! Il vous suffit d’installer la dernière version stable de PyTorch (2.2.2 au moment où j’écris ces lignes), puis de télécharger Torchtune depuis PyPI avec un petit

pip install torchtune

Et voilà, vous êtes prêt à en découdre avec les LLM !

Pour vous faire les dents, je vous conseille de jeter un œil au tutoriel sur le fine-tuning de Llama2 7B. C’est le parfait point de départ pour comprendre comment Torchtune fonctionne et comment l’utiliser pour vos propres projets.

En gros, ça se passe en 4 étapes :

  1. Téléchargez le modèle pré-entraîné et le tokenizer depuis Hugging Face Hub avec tune download.
  2. Choisissez une recette de fine-tuning (LoRA, QLoRA, full…) et customisez-la avec un fichier de config en YAML.
  3. Lancez l’entraînement avec tune run en précisant votre recette et votre config. Vous pouvez même faire du multi-GPU avec torchrun !
  4. Admirez le résultat et testez votre modèle fine-tuné avec une inférence locale. Si tout se passe bien, exportez-le avec ExecuTorch pour le déployer en prod, ou utilisez les API de quantification de Torchao pour l’exporter en int4 ou int8 et l’utiliser sur mobile ou en edge.

Facile, non ? 😄

Bon OK, j’avoue, j’ai un peu simplifié. En vrai, il y a pas mal de subtilités et de paramètres à régler pour obtenir les meilleurs résultats, comme le learning rate, le nombre d’époques, la taille du batch, le ratio de LoRA, et tout un tas d’autres trucs, mais c’est justement sa flexibilité qui vous permet d’expérimenter à l’infini pour trouver la combinaison parfaite.

Bref, si vous êtes dev et que vous aimez jouer avec les LLM c’est à tester.

Source

Lumos – Le copilote IA de vos séances de surf

Allez, aujourd’hui, on va faire un peu d’IA. J’sais pas si vous vous souvenez, mais il y a quelque temps, je vous avais fait une jolie démo de Ollama permettant de faire tourner des LLM (modèles de langage comme ChatGPT) en local avec des modèles ouvert comme Mistral ou Vigogne.

Sauf que voilà, c’est pas forcément pratique à utiliser ailleurs que dans vos propres scripts. Mais c’était sans compter sur Lumos, une extension Chrome propulsée par Ollama qui permet d’avoir sous la main, votre LLM durant vos séances de surf. Ainsi, vous pourrez lui demander des résumés de longs posts de forums, de vous expliquer le dernier rapport de bug d’un projet Github, de résumer les articles trop longs à lire de korben.info ^^ ou encore lui poser des questions par rapport à de la documentation technique ou des fiches produits que vous consulteriez en ligne.

Bref, c’est génial ! Vous devrez bien évidemment avoir un Ollama fonctionnel sur votre machine… Voici d’ailleurs ma vidéo à ce sujet :

Installez ensuite l’extension sous Chrome.

Puis lancez le serveur à l’aide de cette commande :

OLLAMA_ORIGINS=chrome-extension://* ollama serve

Ou comme ceci si vous utilisez Docker:

docker run -e OLLAMA_ORIGINS="chrome-extension://*" -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

Et vous pourrez ensuite profiter de la puissance du LLM de votre choix directement dans votre navigateur au travers d’une fenêtre de chat.

Si vous voulez plus d’infos, c’est par ici que ça se passe.

LM Studio – Pour faire tourner des LLMs en local et les utiliser directement dans votre code

Avec tout ce qui se passe côté OpenAI en ce moment, je suis en train de chercher des alternatives libres pour re-brancher sur mes scripts existants qui ne demandent pas trop de réécriture. C’est simplement un principe de précaution pour ne pas être pris au dépourvu si la qualité de service baisse côté ChatGPT.

Et pour ça, j’ai besoin d’un modèle de langage et d’un outil qui permette de transformer ce modèle en API que je peux appeler dans mon code.

Pour l’instant, tout ceci est en phase de R&D mais je me suis dit qu’un petit retour, ça vous ferait plaisir. Je suis donc parti sur un modèle OpenChat censé être aussi performant qu’un ChatGPT 3.5. Jusque là rien de compliqué.

J’ai donc fait tourner ce modèle dans llamacpp sans souci en mode discussion. Puis je suis parti en quête d’un bridge pour avoir des API. Je suis donc tombé sur Llama-cpp-python avec son option Server qui malheureusement n’a jamais voulu correctement fonctionner chez moi pour de sombres incompatibilités x64 / ARM64 même dans pyenv. Bref…

N’ayant pas le temps d’y passer des semaines, on m’a ensuite gentiment rappelé durant mon live Twitch, que je pouvais faire ça avec Ollama, ce que j’avais complètement zappé alors que j’ai fait une vidéo pour les Patreons à ce sujet (arf).

Puis Thoxy et LePopeye, lecteurs de Korben.info, m’ont recommandé un outil baptisé LM Studio dont je vais vous parler dans cet article.

LM Studio est un outil fonctionnant sous macOS, Windows et Linux qui permet très simplement de télécharger des LLMs (Large Language Models) et de les faire tourner en local. Ainsi vous pouvez discuter avec ces modèles via un chat comme vous le feriez avec ChatGPT.

Mais ce n’est pas tout puisque l’outil offre des tas de possibilités de réglages (y compris du support pour les Mac Silicon) pour optimiser le modèle. Et bien sûr, la fonctionnalité qui m’a le plus intéressé, c’est la possibilité de faire tourner un serveur local qui sert une API identique à celle de ChatGPT.

Cela permet, sans énormément de modifs dans votre code, de basculer des services d’OpenAI à une IA locale de manière transparente ou presque pour peut que vous utilisiez la lib OpenAI 0.28.1

pip install openai==0.28.1

Voici un code d’exemple qui montre comment l’appeler en Python :

import os
import openai

openai.api_base = "http://localhost:1234/v1" 
openai.api_key = "" 

completion = openai.ChatCompletion.create(
  model="local-model",
  messages=[
    {"role": "system", "content": "Always answer in rhymes."},
    {"role": "user", "content": "Introduce yourself."}
  ]
)

print(completion.choices[0].message)

Pas besoin de clé API donc. Et pas besoin de casser tout votre code. Suffit de migrer vers LM Studio. Puis c’est gratuit 🙂

Bref, j’ai fait mes tests comme ça et malheureusement pour le moment, c’est pas super concluant. L’outil répond correctement en version « chat » mais son paramétrage un peu différent en version serveur. Donc faut encore que je gratte un peu pour trouver le dressage optimale de mon IA. Mais j’y suis presque.

Si ça vous branche de tester LM Studio, c’est par ici que ça se passe.

❌