Recherche effectué dans :

Filtre actif, cliquez pour en enlever un tag :

Cliquez sur un tag pour affiner votre recherche :

Résultat de la recherche (27 notes) :

Journal du samedi 01 mars 2025 à 17:03 #réseau-de-neurones, #MachineLearning, #artificial-intelligence, #JaiLu, #JaiDécouvert

J'ai passé une heure à lire l'article de LinuxFr : « Une intelligence artificielle libre est-elle possible ? ». J'y ai appris de nombreuses choses et je l'ai trouvé plutôt accessible. Merci à l'auteur https://linuxfr.org/users/liorel.

J'ai beaucoup aimé cette manière de présenter ce qu'est l'Intelligence artificielle :

Commençons par définir notre objet d’étude : qu’est-ce qu’une IA ? Par « intelligence artificielle », on pourrait entendre tout dispositif capable de faire réaliser par un ordinateur une opération réputée requérir une tâche cognitive. Dans cette acception, un système expert qui prend des décisions médicales en implémentant les recommandations d’une société savante est une IA. Le pilote automatique d’un avion de ligne est une IA.

Cependant, ce n’est pas la définition la plus couramment employée ces derniers temps. Une IA a battu Lee Sedol au go, mais ça fait des années que des ordinateurs battent les humains aux échecs et personne ne prétend que c’est une IA. Des IA sont employées pour reconnaître des images alors que reconnaître un chien nous semble absolument élémentaire, mais l’algorithme de Youtube qui te suggère des vidéos pouvant te plaire parmi les milliards hébergées fait preuve d’une certaine intelligence et personne ne l’appelle IA. Il semble donc que le terme « IA » s’applique donc à une technique pour effectuer une tâche plus qu’à la tâche en elle-même, ou plutôt à un ensemble de techniques partageant un point commun : le réseau de neurones artificiels.

Dans la suite de cette dépêche, j’utiliserai donc indifféremment les termes d’IA et de réseau de neurones.

source

J'ai bien aimé la section « Un exemple : la régression linéaire » 👌.

Je n'ai pas compris grand-chose à la section « Le neurone formel ». Elle contient trop d'outils mathématiques qui m'échappent, comme :

On ajoute un ensemble de neurones qu’on pourrait qualifier de « sensitifs », au sens où ils prennent en entrée non pas la sortie d’un neurone antérieur, mais directement l’input de l’utilisateur, ou plutôt une partie de l’input : un pixel, un mot…

source

#JaiDécouvert les neurones « sensitifs ».

Se pose alors la question : combien de neurones par couche, et combien de couches au total ?

On peut considérer deux types de topologies : soit il y a plus de neurones par couche que de couches : le réseau est plus large que long, on parlera de réseau large. Soit il y a plus de couches que de neurones par couche, auquel cas le réseau est plus long que large, mais on ne va pas parler de réseau long parce que ça pourrait se comprendre « réseau lent ». On parlera de réseau profond. C’est de là que viennent les Deep et les Large qu’on voit un peu partout dans le marketing des IA. Un Large Language Model, c’est un modèle, au sens statistique, de langage large, autrement dit un réseau de neurones avec plus de neurones par couche que de couches, entraîné à traiter du langage naturel.

source

Je suis très heureux de découvrir cette distinction entre profond et large. Je découvre que ces termes, omniprésents dans le marketing des IA, reflètent en réalité des caractéristiques architecturales précises des réseaux de neurones.

On constate empiriquement que certaines topologies de réseau sont plus efficaces pour certaines tâches. Par exemple, à nombre de neurones constant, un modèle large fera mieux pour du langage. À l’inverse, un modèle profond fera mieux pour de la reconnaissance d’images.

source

je peux assez facilement ajuster un modèle de régression logistique (qui est une variante de la régression linéaire où on fait prédire non pas une variable quantitative, mais une probabilité)

source

J'ai une meilleure idée de ce qu'est un modèle de régression logistique.

En définitive, on peut voir le réseau de neurones comme un outil qui résout approximativement un problème mal posé. S’il existe une solution formelle, et qu’on sait la coder en un temps acceptable, il faut le faire. Sinon, le réseau de neurones fera un taf acceptable.

source

Ok.

Posons-nous un instant la question : qu’est-ce que le code source d’un réseau de neurones ? Est-ce la liste des neurones ? Comme on l’a vu, ils ne permettent ni de comprendre ce que fait le réseau, ni de le modifier. Ce sont donc de mauvais candidats. La GPL fournit une définition : le code source est la forme de l’œuvre privilégiée pour effectuer des modifications. Dans cette acception, le code source d’un réseau de neurones serait l’algorithme d’entraînement, le réseau de neurones de départ et le corpus sur lequel le réseau a été entraîné.

source

👍️

Journal du jeudi 26 décembre 2024 à 15:03 #RAG, #llm, #MachineLearning

J'ai partagé Projet 20 - "Créer un POC d'un RAG" à un ami, il m'a dit « Pourquoi ne pas entraîner directement un modèle ? ».

Voici ma réponse sous forme de note.
Je tiens à préciser que je ne suis pas un expert du domaine.

Dans le manuscrit de l'épisode Augmenter ChatGPT avec le RAG de Science4All, je lis :

Quatre grandes catégories de solutions ont été proposées pour faire en sorte qu'un algorithme de langage apprenne une information.

source

Voici cette liste :

Concernant le pre-training, je lis :

En pratique, ce pré-entraînement est toutefois très insuffisant pour que les algorithmes de langage soient capables de se comporter de manière satisfaisante.

source

Ensuite, je lis au sujet du fine-tuning :

Pour augmenter la fiabilité de l'algorithme, on peut alors effectuer un "peaufinage", qu'on appelle "fine-tuning" en anglais, et qui consiste typiquement à demander à des humains d'évaluer différentes réponses de l'algorithme.

...

Cependant, cette approche de peaufinage est coûteuse, à la fois en termes de ressources humaines et de ressources en calculs, et son efficacité est loin d'être suffisante pour une tâche aussi complexe que le langage.

Notez qu'on parle aussi de "peaufinage" pour la poursuite du pré-entraînement, mais cette fois sur des données proches du cas d'usage de l'algorithme. C'est typiquement le cas quand on part d'un algorithme open-weight comme Llama, et qu'on cherche à l'adapter aux contextes d'utilisation d'une entreprise particulière. Mais là encore, le coût de cette approche est important, et son efficacité est insuffisante.

source

Ensuite, au sujet du pré-prompting, je lis :

si cette approche est la plus efficace et la moins coûteuse, elle demeure encore très largement non-sécurisée ; et il faut s'attendre à ce que le chatbot déraille. Mais surtout, le pré-prompting est nécessairement limité car il ne peut pas être trop long.

source

Et, pour finir, je lis :

On en vient alors à la quatrième et dernière approche, qui va demander plus de travail humain et calculatoire que le pré-prompting, mais nettement moins que le pré-entraînement et le peaufinage. Cette approche, c'est donc le "Retrieval Augmented Generation" ou RAG

source

Je trouve que le paragraphe suivant donne une bonne explication du fonctionnement d'un RAG :

L'idée du RAG est la suivante : on va indexer tout un tas de documents qu'on souhaite enseigner à l'algorithme, et on va définir des méthodes pour lui permettre d'identifier, étant donné une requête d'un utilisateur, les bouts de documents qui sont les plus pertinents pour répondre à la requête de l'utilisateur. Ces bouts de documents sont ainsi "récupérés", et ils seront alors ajoutés à un preprompt fourni à l'algorithme, d'où "l'augmentation". Enfin, on va demander à l'algorithme de générer une réponse avec ce préprompt, d'où le nom de "Retrieval Augmented Generation". La boucle est bouclée !

source

Après lecture de ces informations, je pense qu'entrainer directement un modèle est une solution moins efficace qu'utiliser un RAG pour les objectifs décrits dans le Projet 20 - "Créer un POC d'un RAG".

Journal du mardi 24 décembre 2024 à 10:59 #YouTube, #MachineLearning, #mathématique, #géométrie, #JaiDécouvert

En écoutant la vidéo "La réduction de la dimensionnalité (ACP et SVD)", #JaiDécouvert la vidéo "Deux (deux ?) minutes pour l'éléphant de Fermi & Neumann" de la chaine YouTube nommée El Jj (lien direct), à laquelle je viens de m'abonner 🙂.

J'ai été époustouflé par cette vidéo ! Ce qui y est présenté m'impressionne profondément et m'aide à comprendre de nombreuses choses qui m'étaient jusqu'à présent inconnues.

Cette vidéo traite entre autres des Épicycloïde, qui me font penser aux rosaces que je dessinais en école primaire.
Je ne pensais pas que l'étude et l'utilisation de ces courbes étaient aussi intéressantes !

Ce que je retiens :

  • Il est possible de représenter n'importe quelle forme avec des épicycloïdes
  • Le nombre de cercles permet d'augmenter ou de réduire la précision de la forme, ce qui est utile pour "compresser" le nombre de paramètres nécessaires — avec perte — pour dessiner une forme.

Dans la vidéo, j'ai découvert WolframAlpha (https://www.wolframalpha.com/).
Je n'ai pas réellement compris l'utilité de ce site 😔.
L'article Wikipédia classe ce site dans la catégorie "Moteur de recherche" ou "Base de connaissance" 🤔.

Journal du mardi 24 décembre 2024 à 10:34 #llm, #MachineLearning

En travaillant sur la note 2024-12-26_1503, j'ai essayé de retrouver la vidéo qui est mentionnée dans l'épisode Augmenter ChatGPT avec le RAG de Science4All :

...il y a une décennie, avec l'introduction de word2vec, un algorithme dont je vous ai parlé il y a maintenant 6 ans... et oui le temps passe vite...

source

Pour cela, j'ai commencé à réécouter l'épisode "La réduction de la dimensionalité (ACP et SVD)" (voir ma note à ce sujet 2024-12-24_1057). Mais je constate qu'elle ne traite pas de word2vec.

Ensuite, j'ai écouté "L'IA sait-elle lire ? Intelligence Artificielle 21" (lien direct). Je pense que c'est cette vidéo qui est mentionnée par . Cette vidéo traite du papier de recherche nommé "Efficient Estimation of Word Representations in Vector Space" qui, d'après ce que j'ai compris, est implémenté dans word2vec.

Journal du samedi 21 décembre 2024 à 20:40 #JaiLu, #JaiDécouvert, #MachineLearning, #llm, #AGI, #JaimeraisUnJour

Chose amusante, alors que ce matin même, j'ai découvert l'existence de o1, sortie il y a seulement quelques jours, le 5 décembre 2024.
Voilà que je découvre ce soir, dans ce thread Hacker News la sortie de o3 le 20 décembre 2024 : "OpenAI O3 breakthrough high score on ARC-AGI-PUB".

Les releases sont très réguliers en ce moment, il est difficile de suivre le rythme 😮 !

Dans ce thread, j'ai découvert le prix ARC (https://arcprize.org), lancé le 11 juin 2024, par le français Francois Chollet, basé sur le papier de recherche "On the Measure of Intelligence" sorti en 2019, il y a 5 ans.

ARC est un outil de mesure de AGI.

#JaimeraisUnJour prendre le temps de lire On the Measure of Intelligence.

Je lis ici :

OpenAI o3 Breakthrough High Score on ARC-AGI-Pub

OpenAI's new o3 system - trained on the ARC-AGI-1 Public Training set - has scored a breakthrough 75.7% on the Semi-Private Evaluation set at our stated public leaderboard $10k compute limit. A high-compute (172x) o3 configuration scored 87.5%.

This is a surprising and important step-function increase in AI capabilities, showing novel task adaptation ability never seen before in the GPT-family models. For context, ARC-AGI-1 took 4 years to go from 0% with GPT-3 in 2020 to 5% in 2024 with GPT-4o. All intuition about AI capabilities will need to get updated for o3.

source

Plus loin, je lis :

However, it is important to note that ARC-AGI is not an acid test for AGI – as we've repeated dozens of times this year. It's a research tool designed to focus attention on the most challenging unsolved problems in AI, a role it has fulfilled well over the past five years.

Passing ARC-AGI does not equate to achieving AGI, and, as a matter of fact, I don't think o3 is AGI yet. o3 still fails on some very easy tasks, indicating fundamental differences with human intelligence.

source

Donc, j'en conclus qu'il ne faut pas s'emballer outre mesure sur les résultats de ce test, bien que les progrès soient impressionnants.

La première partie du thread semble aborder la thématique du coût financier de o3 versus un humain : 309 commentaires.

Dans ce commentaire #JaiDécouvert le papier de recherche "H-ARC: A Robust Estimate of Human Performance on the Abstraction and Reasoning Corpus Benchmark" qui date de 2024.

Journal du lundi 18 novembre 2024 à 09:44 #MachineLearning, #UnJourPeuxÊtre

Un ami me demande des ressources pour se former au Machine Learning.

Je ne suis pas expert dans ce domaine.

Lorsque je me forme sur un sujet, j’aime commencer par comprendre le contexte global, son histoire et alterner entre l’acquisition de connaissances théoriques et pratiques.

Pour me former sérieusement, j'envisage un jour de prendre le temps de :

Je n'ai pas classé l'ordre d'étude des séries avec rigueur, cet ordre est sans doute à modifier.

Pour chaque élément, j'ai précisé entre parenthèses une estimation optimiste du temps nécessaire à l'écoute ou à la lecture.

D'après cette liste, j'estime à environ 86 heures pour me former sur ce sujet, soit l'équivalent de 15 jours à temps plein ou presque un mois complet.

Ensuite, j'ai quelques idées de projets de mise en pratique :

  • Développer une extension pour navigateur qui, lors de la rédaction d’un e-mail depuis Fastmail, transforme automatiquement le contenu du message en HTML en texte brut au format Markdown.
    • Ajouter ensuite une fonctionnalité pour supprimer automatiquement les signatures.
  • Concevoir un outil capable de découper une vidéo de Tennis de Table en segments correspondant à chaque point joué.

Journal du mardi 23 juillet 2024 à 15:54 #MachineLearning, #scaleway, #JaiDécouvert

#JaiDécouvert que Scaleway a déployé en public beta une offre d'Managed Inference Service : Scaleway Managed Inference.

Added : Managed Inference is available in Public Beta

Managed Inference lets you deploy generative AI models and answer prompts from European end-consumers securely. Now available in public beta! (from)

C'est une alternative à Replicate.com.

Models now support longer and better conversations :

  • All models on catalog now support conversations to their full context window (e.g Mixtral-8x7b up to 32K tokens, Llama3 up to 8k tokens).
  • Llama3 70B is now available in FP8 quantization, INT8 is deprecated.
  • Llama3 8b is now available in FP8 quantization, BF16 remains default.

L'offre est beaucoup moins large que celle de Replicate mais c'est un bon début 🙂.

Tarif de l'offre de Scaleway :

Tarif de l'offre de Replicate.com :

Bien que le matériel soit différent, j'essaie tout de même de faire une comparaison de prix :

  • Scaleway : 0,93 € / heure pour une machine à 24Go de Ram GPU
  • Replicate : 0,81 $ / heure pour une machine à 16GB de Ram GPU

Ensuite :

  • Scaleway : 3,40 € / heure pour une machine à 80Go de Ram GPU
  • Replicate : 5,04 € / heure pour une machine à 80Go de Ram GPU

Je précise, que je n'ai aucune idée si ma comparaison a du sens ou non.
Je n'ai pas creusé plus que cela le sujet.

Note en lien avec 2024-05-17_1257.

Journal du dimanche 07 juillet 2024 à 15:11 #llm, #MachineLearning, #Idée

L'année dernière, j'ai publié poc-api-gpt-generate-demo-datas, dont le but était de générer du contenu fictif pour un blog avec l'API de OpenAI.

J'étais moyennement satisfait du résultat, en particulier au niveau de la définition des contraintes de rendu : un fichier JSON.

Aujourd'hui, j'aimerais essayer de générer du contenu fictif d'un knowlege management system, créé par Obsidian, que j'aimerais utiliser pour le projet obsidian-vault-to-apache-age-poc.

Pour réaliser ce projet, j'aimerais essayer de mettre en œuvre :

Je viens de créer le Projet 10.

Journal du samedi 08 juin 2024 à 11:38 #tops, #MachineLearning, #hardware

Dans 2024-06-08_1056 j'ai listé la puissance en TOPS de NPU AMD.
Suite à cela, j'ai eu envie de comparer la puissance de ces NPU à des puces Apple et Intel ainsi qu'à des GPU de NVidia.

Concernant Apple

Ici je lis :

  • M1, M1 Pro, M1 Max : NPU à 11 TOPS
  • M1 Ultra : NPU à 22 TOPS

Ici je lis :

  • M2, M2 Pro, M2 Max : NPU à 15,8 TOPS
  • M2 Ultra : NPU à 31,6 TOPS

Ici je lis :

  • M3, M3 Pro, M3 Max : NPU à 18 TOPS

Ici je lis :

  • M4 (sortie en mai 2024) : NPU à 38 TOPS

Concernant AMD

Dans cet article je lis :

  • Des puces de la série Ryzen 7040 intègrent des NPU à 10 TOPS
  • Des puces de la série Ryzen 8000 intègrent des NPU à 16 TOPS
  • Des puces de la série Ryzen AI 300 intègrent des NPU à 50 TOPS

Concernant Intel

J'ai l'impression que ce sont les puces Intel Core Ultra qui intègrent des NPU.

For the Ultra 7 165H chip, you get roughly up to 34 TOPS with 11 TOPS for the NPU, 18 TOPS for the GPU and the rest for the CPU.

  • Ici je lis que les prochaines puces de Intel basé sur l'architecture Lunar Lake intégre un NPU de 48 TOPS

Concernant Nvidia

Je ne sais pas si les TOPS d'un NPU sont comparables aux TOPS de GPU mais d'après ce document je lis qu'une puce Nvidia T4 :

  • Single-Precision : 8.1 TFLOPS
  • Mixed-Precision (FP16/FP32) : 65 TFLOPS
  • INT8 : 130 TOPS
  • INT4 : 260 TOPS

Conclusion

J'ai l'impression qu'ici les ratios de puissances en TOPS entre des NPU et GPU tournent autour de x5 et x30.

Journal du samedi 08 juin 2024 à 10:56 #hardware, #NPU, #CPU, #AMD, #MachineLearning, #Inference, #tops, #JaiDécouvert

En lisant ceci :

AI accelerators are used in mobile devices, such as neural processing units (NPUs) in Apple iPhones, AMD Laptops or Huawei cellphones, and personal computers such as Apple silicon Macs, to cloud computing servers such as tensor processing units (TPU) in the Google Cloud Platform.

#JaiDécouvert que AMD XDNA semble être l'architecture des puces NPU de AMD.

Je lis ici que Ryzen AI est le nom commercial du matériel AMD qui implémente l'architecture XDNA.

La première puce qui intégrèe AMD XDNA est le Ryzen 7040 sorti 2023.

Dans cet article je lis :

  • Des puces de la série Ryzen 7040 intègrent des NPU à 10 TOPS
  • Des puces de la série Ryzen 8000 intègrent des NPU à 16 TOPS
  • Des puces de la série Ryzen AI 300 intègrent des NPU à 50 TOPS

Journal du samedi 08 juin 2024 à 10:35 #Inference, #MachineLearning, #vocabulaire, #llm, #JaiDécidé

Dans 2024-06-06_1047 #JaiDécidé d'utiliser le terme Inference Engines pour définir la fonction ou la catégorie de Llama.cpp.

J'ai échangé avec un ami au sujet des NPU et j'ai dit que j'avais l'impression que ces puces sont spécialés pour exécuter des Inference Engines, c'est-à-dire, effectuer des calculs d'inférence à partir de modèles.

Après vérification, dans cet article je lis :

An AI accelerator, deep learning processor, or neural processing unit (NPU) is a class of specialized hardware accelerator or computer system designed to accelerate artificial intelligence and machine learning applications, including artificial neural networks and machine vision.

et je comprends que mon impression était fausse. Il semble que les NPU ne sont pas seulement dédiés aux opérations d'exécution d'inférence, mais semblent être optimisés aussi pour faire de l'entrainement 🤔.

Un ami me précise :

Inference Engines

Pour moi, c'est un terme très générique qui couvre tous les aspects du machine learning, du deep learning et des algorithmes type LLM mis en œuvre.

et il me partage l'article Wikipedia Inference engine que je n'avais pas lu quand j'avais rédigé 2024-06-06_1047, honte à moi 🫣.

Dans l'article Wikipedia Inference engine je lis :

In the field of artificial intelligence, an inference engine is a software component of an intelligent system that applies logical rules to the knowledge base to deduce new information.

et

Additionally, the concept of 'inference' has expanded to include the process through which trained neural networks generate predictions or decisions. In this context, an 'inference engine' could refer to the specific part of the system, or even the hardware, that executes these operations.

Je comprends qu'un Inference Engines n'effectue pas l'entrainement de modèles.

Pour éviter la confusion, #JaiDécidé d'utiliser à l'avenir le terme "Inference Engine (comme LLama.cpp)".

Le contenu de l'article Wikipedia Llama.cpp augmente mon niveau de confiance dans ce choix de vocabulaire :

llama.cpp is an open source software library written in C++, that performs inference on various Large Language Models such as Llama

Journal du jeudi 06 juin 2024 à 16:20 #llm, #MachineLearning, #JaiDécouvert, #JaiLu

En travaillant sur 2024-06-06_1047 :

Hugging Face Hub supports all file formats, but has built-in features for GGUF format, a binary format that is optimized for quick loading and saving of models, making it highly efficient for inference purposes. GGUF is designed for use with GGML and other executors. GGUF was developed by @ggerganov who is also the developer of llama.cpp, a popular C/C++ LLM inference framework.

https://huggingface.co/docs/hub/gguf

ggml.ai is a company founded by Georgi Gerganov to support the development of ggml. Nat Friedman and Daniel Gross provided the pre-seed funding.

We are currently seeking to hire full-time developers that share our vision and would like to help advance the idea of on-device inference. If you are interested and if you have already been a contributor to any of the related projects, please contact us at jobs@ggml.ai

Journal du jeudi 06 juin 2024 à 10:47 #llm, #MachineLearning, #LLM, #JaiDécidé, #JaiDécouvert, #JaimeraisUnJour

Cette semaine, j'ai déjeuné avec un ami dont les connaissances dans le domaine du #MachineLearning et des #LLM dépassent largement les miennes... J'en ai profité pour lui poser de nombreuses questions.
Voici ci-dessous quelques notes de ce que j'ai retenu de notre discussion.

Avertissement : Le contenu de cette note reflète les informations que j'ai reçues pendant cette conversation. Je n'ai pas vérifié l'exactitude de ces informations, et elles pourraient ne pas être entièrement correctes. Le contenu de cette note est donc à considérer comme approximatif. N'hésitez pas à me contacter à contact@stephane-klein.info si vous constatez des erreurs.

Histoire de Llama.cpp ?

Question : quelle est l'histoire de Llama.cpp ? Comment ce projet se positionne dans l'écosystème ?

D'après ce que j'ai compris, début 2023, PyTorch était la solution "mainstream" (la seule ?) pour effectuer de l'inférence sur le modèle LLaMa — sortie en février 2023.

PyTorch — écrit en Python et C++ — est optimisée pour les GPU, plus précisément pour le framework CUDA.
PyTorch est n'est pas optimisé pour l'exécution sur CPU, ce n'est pas son objectif.

Georgi Gerganov a créé Llama.cpp pour pouvoir effectuer de l'inférence sur le modèle LLaMa sur du CPU d'une manière optimisé. Contrairement à PyTorch, plus de Python et des optimisations pour Apple Silicon, utilisation des instructions AVX / AVX2 sur les CPU x86… Par la suite, « la boucle a été bouclée » avec l'ajout du support GPU en avril 2023.

À la question « Maintenant que Llama.cpp a un support GPU, à quoi sert PyTorch ? », la réponse est : PyTorch permet beaucoup d'autres choses, comme entraîner des modèles…

Aperçu de l'historique du projet :

Comment nommer Llama.cpp ?

Question : quel est le nom d'un outil comme Llama.cpp ?

Réponse : Je n'ai pas eu de réponse univoque à cette question.

C'est un outil qui effectue des inférences sur un modèle.

Voici quelques idées de nom :

  • Moteur d'inférence (Inference Engines) ;
  • Exécuteur d'inférence (Inference runtime) ;
  • Bibliothèque d'inférence.

Personnellement, #JaiDécidé d'utiliser le terme Inference Engines.

Autre projet comme Llama.cpp ?

Question : Existe-t-il un autre projet comme Llama.cpp

Oui, il existe d'autres projets, comme llm - Large Language Models for Everyone, in Rust. Article Hacker News publié le 14 mars 2023 sous le nom LLaMA-rs: a Rust port of llama.cpp for fast LLaMA inference on CPU.

Et aussi, https://github.com/karpathy/llm.c - LLM training in simple, raw C/CUDA (from).
Le README de ce projet liste de nombreuses autres implémentations de Inference Engines.

Mais, à ce jour, Llama.cpp semble être l'Inference Engines le plus complet et celui qui fait consensus.

GPU vs CPU

Question : Jai l'impression qu'il est possible de compiler des programmes généralistes sur GPU, dans ce cas, pourquoi ne pas remplacer les CPU par des GPU ? Pourquoi ne pas tout exécuter par des GPU ?

Mon ami n'a pas eu une réponse non équivoque à cette question. Il m'a répondu que l'intérêt du CPU reste sans doute sa faible consommation énergique par rapport au GPU.

Après ce déjeuner, j'ai fait des recherches et je suis tombé sur l'article Wikipedia nommé General-purpose computing on graphics processing units (je suis tombé dessus via l'article ROCm).

Cet article contient une section nommée GPU vs. CPU, mais qui ne répond pas à mes questions à ce sujet 🤷‍♂️.

ROCm ?

Question : J'ai du mal à comprendre ROCm, j'ai l'impression que cela apporte le support du framework CUDA sur AMD, c'est bien cela ?

Réponse : oui.

J'ai ensuite lu ici :

HIPIFY is a source-to-source compiling tool. It translates CUDA to HIP and reverse, either using a Clang-based tool, or a sed-like Perl script.

RAG ?

Question : comment setup facilement un RAG ?

Réponse : regarde llama_index.

#JaiDécouvert ensuite https://github.com/abetlen/llama-cpp-python

Simple Python bindings for @ggerganov's llama.cpp library. This package provides:

  • Low-level access to C API via ctypes interface.
  • High-level Python API for text completion
    • OpenAI-like API
    • LangChain compatibility
    • LlamaIndex compatibility
  • ...

dottextai / outlines

Il m'a partagé le projet https://github.com/outlines-dev/outlines alias dottxtai, pour le moment, je ne sais pas trop à quoi ça sert, mais je pense que c'est intéressant.

Embedding ?

Question : Thibault Neveu parle souvent d'embedding dans ses vidéos et j'ai du mal à comprendre concrètement ce que c'est, tu peux m'expliquer ?

Le vrai terme est Word embedding et d'après ce que j'ai compris, en simplifiant, je dirais que c'est le résultat d'une "sérialisation" de mots ou de textes.

#JaiDécouvert ensuite l'article Word Embeddings in NLP: An Introduction (from) que j'ai survolé. #JaimeraisUnJour prendre le temps de le lire avec attention.

Transformers ?

Question : et maintenant, peux-tu me vulgariser le concept de transformer ?

Réponse : non, je t'invite à lire l'article Natural Language Processing: the age of Transformers.

Entrainement décentralisé ?

Question : existe-t-il un système communautaire pour permettre de générer des modèles de manière décentralisée ?

Réponse - Oui, voici quelques liens :

Au passage, j'ai ajouté https://huggingface.co/blog/ à mon agrégateur RSS (miniflux).

La suite…

Nous avons parlé de nombreux autres sujets sur cette thématique, mais j'ai décidé de m'arrêter là pour cette note et de la publier. Peut-être que je publierai la suite un autre jour 🤷‍♂️.

Journal du vendredi 17 mai 2024 à 12:57 #llm, #POC, #MachineLearning, #scaleway, #JeMeDemande, #PremièreActionConcrète

#JeMeDemande combien me coûterait la réalisation du #POC suivant :

🤔.

Tarifs :

Dans un premier temps, j'aimerais me limiter aaux instances les moins chères :

  • GPU-3070 à environ 1 € / heure
  • L4-1-24G à 0.75 € / heure
  • et peut-être RENDER-S à 1,24 € / heure

Tous ces prix sont hors taxe.

Au moment où j'écris ces lignes, Scaleway a du stock de ces trois types d'instances :

  • #JeMeDemande comment je pourrais me préparer en amont pour installer rapidement sur le serveur un environnement pour faire mes tests.
  • #JeMeDemande s'il existe des tutoriaux tout prêts pour faire ce type de tâches.
  • #JeMeDemande combien de temps prendrait le déploiement.

Si je prends 2h pour l'installation + 3h pour faire des tests, cela ferait 5h au total.
J'ai cherché un peu partout, je n'ai pas trouvé de coût "caché" de setup de l'instance.
Le prix de cette expérience serait entre 4,5 € et 7,44 € TTC.


  • #JeMeDemande combien me coûterait l'achat de ce type de machine.
  • #JeMeDemande à partir de combien d'heures d'utilisation l'achat serait plus rentable que la location.
  • Si par exemple, j'utilise cette machine 3h par jour, je me demande à partir de quelle date cette machine serait rentabilisée et aussi, #JeMeDemande si cette machine ne serait totalement obsolète ou non à cette date 🤔.

Journal du vendredi 17 mai 2024 à 11:05 #RAG, #llm, #MachineLearning, #JaimeraisUnJour, #JePense

Dans l'article "Qu'est-ce que la génération augmentée de récupération (RAG, retrieval-augmented generation) ?" je découvre l'acronyme Génération Augmentée de Récupération.

Je constate qu'il existe un paragraphe à ce sujet sur Wikipedia.

The initial phase utilizes dense embeddings to retrieve documents.

source

Je tombe encore une fois sur "embeddings", #JaimeraisUnJour prendre le temps de comprendre correctement cette notion.

Prenez l'exemple d'une ligue sportive qui souhaite que les fans et les médias puisse utiliser un chat pour accéder à ses données et obtenir des réponses à leurs questions sur les joueurs, les équipes, l'histoire et les règles du sport, ainsi que les statistiques et les classements actuels. Un LLM généralisé pourrait répondre à des questions sur l'histoire et les règles ou peut-être décrire le stade d'une équipe donnée. Il ne serait pas en mesure de discuter du jeu de la nuit dernière ou de fournir des informations actuelles sur la blessure d'un athlète, parce que le LLM n'aurait pas ces informations. Étant donné qu'un LLM a besoin d'une puissance de calcul importante pour se réentraîner, il n'est pas possible de maintenir le modèle à jour.

source

Le contenu de ce paragraphe m'intéresse beaucoup, parce que c'était un de mes objectifs lorsque j'ai écrit cette note en juin 2023.

Sans avoir fait de recherche, je pensais que la seule solution pour faire apprendre de nouvelles choses — injecter de nouvelle données — dans un modèle était de faire du fine-tuning.

En lisant ce paragraphe, je pense comprendre que le fine-tuning n'est pas la seule solution, ni même, j'ai l'impression, la "bonne" solution pour le use-case que j'aimerais mettre en pratique.

En plus du LLM assez statique, la ligue sportive possède ou peut accéder à de nombreuses autres sources d'information, y compris les bases de données, les entrepôts de données, les documents contenant les biographies des joueurs et les flux d'actualités détaillées concernant chaque jeu.

source

#JaimeraisUnJour implémenter un POC pour mettre cela en pratique.

Dans la RAG, cette grande quantité de données dynamiques est convertie dans un format commun et stockée dans une bibliothèque de connaissances accessible au système d'IA générative.

Les données de cette bibliothèque de connaissances sont ensuite traitées en représentations numériques à l'aide d'un type spécial d'algorithme appelé modèle de langage intégré et stockées dans une base de données vectorielle, qui peut être rapidement recherchée et utilisée pour récupérer les informations contextuelles correctes.

source

Intéressant.

Il est intéressant de noter que si le processus de formation du LLM généralisé est long et coûteux, c'est tout à fait l'inverse pour les mises à jour du modèle RAG. De nouvelles données peuvent être chargées dans le modèle de langage intégré et traduites en vecteurs de manière continue et incrémentielle. Les réponses de l'ensemble du système d'IA générative peuvent être renvoyées dans le modèle RAG, améliorant ses performances et sa précision, car il sait comment il a déjà répondu à une question similaire.

source

Ok, si je comprends bien, c'est la "kill feature" du RAG versus du fine-tuning.

bien que la mise en oeuvre de l'IA générative avec la RAG est plus coûteux que l'utilisation d'un LLM seul, il s'agit d'un meilleur investissement à long terme en raison du réentrainement fréquent du LLM

source

Ok.

Bilan de cette lecture, je dis merci à Alexandre de me l'avoir partagé, j'ai appris RAG et #JePense que c'est une technologie qui me sera très utile à l'avenir 👌.

Journal du mercredi 07 juin 2023 à 19:37 #llm, #MachineLearning, #selfhosting, #JaiDécouvert

#JaiDécouvert le projet PrivateGPT (https://github.com/zylon-ai/private-gpt).

Cela fait plusieurs mois que je souhaite trouver une solution pour self hosted une alternative à ChatGPT. J'ai bien envie de tester ce projet.

Projet 20 - "Créer un POC d'un RAG" #llm, #MachineLearning, #RAG

Date de la création de cette note : 2024-12-20.

Quel est l'objectif de ce projet ?

Je souhaite réaliser un POC qui setup un Retrieval-augmented generation (RAG) qui permet d'aller chercher des informations dans des documents.

Fonctionnalités que j'aimerais arriver à implémenter :

  • Le LLM doit pouvoir indiquer précisément ses sources pour chaque réponse.
  • Le LLM devrait être en mesure de s’inspirer du style des documents importés dans le RAG.
  • Les informations importées dans le RAG doivent avoir une priorité absolue sur les connaissances préexistantes du moteur LLM.

Je souhaite me baser sur LLaMa.

Dans ce projet, je souhaite aussi étudier les coûts d'hébergement d'un RAG.

Documents à importer dans le RAG ?

Mes critères de sélection sont les suivants :

  • Des documents récents, contenant de préférence des informations inconnues des modèles LLaMa.
  • Des documents en français.
  • Des documents en libre accès.
  • Si possible, avec peu de tableaux.

J’avais envisagé d’importer des threads de Hacker News via https://hnrss.github.io/, mais je préfère réaliser mes tests en français.

J’ai également exploré https://fr.wikinews.org, mais le projet contient malheureusement trop peu d’articles.

Finalement, je pense importer les 10 derniers articles disponibles sur https://www.projets-libres.org/interviews/.

Pourquoi je souhaite réaliser ce projet ?

Je souhaite implémenter un RAG depuis que j'ai commencé à utiliser ChatGPT — début 2023 (par exemple, ici ou ici).

Alexandre souhaite aussi réaliser ce type de POC : https://github.com/Its-Alex/backlog/issues/25.

Je pense qu'un RAG me serait utile pour interroger mon Personal knowledge management. Un RAG m'aurait été utile quand j'étais président du club de Tennis de Table d'Issy-les-Moulineaux.
De plus, j'ai plusieurs projets professionnels qui pourraient bénéficier d'un RAG.

Repository de ce projet :

  • rag-poc (je n'ai pas encore créé ce repository)

Liste de tâches

  • [ ] Étudier kotaemon. Après cette étude, à moins d'avoir découvert des éléments bloquants :
  • [ ] Étudier llama_index

Ressources :

Dernière page.