Qu’est-ce qu’un grand modèle de langage ? Comment fonctionnent les LLM, expliqués sans battage médiatique
Comprenez ce qui se passe réellement lorsqu’une IA écrit du texte. Découvrez les jetons, les intégrations et l’attention dans un langage simple, exécutez un petit prédicteur du mot suivant et voyez pourquoi ces modèles peuvent être brillants et faux à la fois.
- Un grand modèle linguistique est un réseau de neurones entraîné sur d’énormes quantités de texte pour prédire ce qui va suivre.
- Il fonctionne sur les jetons et utilise attention pour déterminer quels jetons antérieurs sont les plus importants.
- Il génère une réponse un jeton à la fois, en choisissant parmi un ensemble de probabilités.
- Cela peut sembler confiant tout en étant faux, donc des résultats importants doivent être vérifiés.
Les outils qui discutent, résument et écrivent du code semblent presque magiques, jusqu’à ce que vous voyiez le mécanisme en dessous. Un grand modèle linguistique, ou LLM, est essentiellement un système très sophistiqué permettant de prédire le prochain morceau de texte. Cette seule idée explique à la fois ce que ces outils font bien et pourquoi ils échouent comme ils le font.
Ce guide explique les concepts principaux sans aucun calcul, puis construit un petit prédicteur du mot suivant pour rendre l’idée concrète. Nous avons exécuté ce code sur Python 3.13 et le résultat provient de cette exécution. Il s’agit d’un simple jouet de comptage plutôt que d’un réseau neuronal, et les vrais LLM sont bien plus performants. Nous évitons également de citer des chiffres pour des modèles spécifiques, car ils évoluent rapidement.
Qu’est-ce qu’un grand modèle de langage ?
Un LLM est un type d’intelligence artificielle formé pour comprendre et générer le langage humain. Prenons le nom un mot à la fois :
- Grand : il possède un grand nombre de valeurs internes réglables, appelées paramètres, et il apprend à partir d’une énorme quantité de texte.
- Langage : il fonctionne avec du texte, y compris le langage naturel et le code.
- Modèle : il s’agit d’un système mathématique qui capture des modèles à partir de données et les utilise pour faire des prédictions.
Les modèles sont le moteur, et les produits tels que les assistants de chat sont la voiture construite autour d’eux. Un produit ajoute souvent une interface utilisateur, des systèmes de sécurité, une recherche et d’autres outils.
L’idée centrale : prédire la suite
Vous faites cela vous-même. Si vous lisez « la capitale de la France est », votre esprit vous propose tout de suite « Paris ». Un LLM fait quelque chose de comparable, mais à une échelle beaucoup plus grande. Étant donné du texte, il calcule la probabilité de chaque jeton suivant possible, en choisit un, l’ajoute au texte et répète.
Il n’existe aucune base de données de réponses stockées en cours de recherche. Le modèle contient les modèles appris lors de l’entraînement, sous forme de nombres. Lorsque ces schémas correspondent à la vérité, vous obtenez une réponse correcte. Dans le cas contraire, vous pouvez toujours obtenir une réponse fluide, ce qui constitue une différence importante par rapport à un moteur de recherche.
Une petite démo fonctionnelle
Pour voir la prédiction du prochain jeton dans sa forme la plus simple, ce script compte quel mot suit lequel dans un petit texte. Il génère ensuite un nouveau texte à partir de ces décomptes. Les statisticiens appellent cela un modèle bigramme.
import random
from collections import Counter, defaultdict
TEXT = """the cat sat on the mat . the dog sat on the rug .
the cat saw the dog . the dog saw the cat ."""
tokens = TEXT.split()
follows = defaultdict(Counter)
for current, following in zip(tokens, tokens[1:]):
follows[current][following] += 1
def probabilities(word):
counts = follows[word]
total = sum(counts.values())
return {w: round(n / total, 2) for w, n in counts.most_common()}
print(probabilities("the"))
print(probabilities("sat"))
# {'cat': 0.38, 'dog': 0.38, 'mat': 0.12, 'rug': 0.12}
# {'on': 1.0}
Ce résultat est une distribution de probabilité. Après « le », le modèle considère « chat » et « chien » comme les plus probables. Maintenant, nous générons du texte en échantillonnant à plusieurs reprises ces probabilités :
def generate(start, length, seed):
rng = random.Random(seed)
words = [start]
for _ in range(length):
counts = follows[words[-1]]
words.append(rng.choices(list(counts), weights=counts.values())[0])
return " ".join(words)
print(generate("the", 6, seed=1))
print(generate("the", 6, seed=2))
print(generate("the", 6, seed=3))
# the cat . the cat saw the
# the rug . the cat . the
# the cat saw the dog . the
Remarquez trois choses. Un même début peut produire un texte différent, car le choix est aléatoire. La sortie ressemble à ses données d’entraînement, même pour les séquences qui n’y sont jamais apparues. Et il n’a aucune compréhension, c’est pourquoi « le tapis… le chat » se lit comme un non-sens.
Interrogez-le sur un mot qu’il n’a jamais vu, et il n’a rien à offrir : follows["elephant"] est vide. Notre jouet ne regarde que un mot précédent. L’énorme progrès dans les véritables LLM vient de la prise en compte de longues périodes de contexte et de l’apprentissage de beaucoup plus de données, en utilisant un réseau neuronal plutôt qu’un simple décompte.
Jetons : comment lit un modèle
Les LLM ne lisent pas des mots entiers comme nous. Le texte est d’abord divisé en jetons, qui peuvent être un mot, une partie d’un mot ou un signe de ponctuation. Chaque jeton correspond à un nombre et le modèle fonctionne entièrement avec des nombres.
Les jetons sont importants en pratique pour deux raisons. L’utilisation des modèles hébergés est généralement tarifée par jetons, et chaque modèle a une limite quant au nombre qu’il peut gérer à la fois. La tokenisation explique également certains comportements étranges célèbres. Étant donné que les modèles voient des morceaux plutôt que des lettres, des tâches telles que compter les lettres d’un mot ont toujours été étonnamment difficiles pour eux.
Embeddings : signification sous forme de nombres
Chaque jeton est transformé en un embedding, une longue liste de nombres qui le place dans une sorte d’espace de signification. Les concepts associés finissent par être rapprochés, donc « chat » et « chaton » ont des positions proches, alors que « chat » et « facture » n’en ont pas.
La même idée alimente la recherche sémantique, dans laquelle vous trouvez des documents par leur sens plutôt que par des mots exacts. Notre guide des bases de données vectorielles couvre cette utilisation.
Attention et le transformateur
La plupart des LLM modernes sont basés sur l’architecture transformer, introduite par les chercheurs de Google dans l’article de 2017 « Attention Is All You Need ». Son mécanisme clé est l’attention personnelle.
Considérez cette phrase : « Le trophée ne rentrait pas dans la valise car il était trop grand ». À quoi fait référence « ça » ? Vous savez, cela signifie le trophée. L’attention permet à un modèle de peser chaque jeton précédent lors du traitement de chaque nouveau, afin de pouvoir le lier aux mots les plus pertinents, même lorsqu’ils sont éloignés les uns des autres.
Les approches antérieures traitaient le texte étape par étape et avaient tendance à perdre la trace des mots distants. Les transformateurs examinent ensemble le contexte et peuvent exécuter une grande partie de ce travail en parallèle sur du matériel spécialisé, ce qui rend pratique la formation sur de si grandes quantités de texte.
Comment se forme un LLM
| Scène | Que se passe-t-il |
|---|---|
| Collecte de données | De grandes quantités de texte sont rassemblées et nettoyées |
| Pré-formation | Le modèle prédit à plusieurs reprises le prochain jeton et ses paramètres sont modifiés chaque fois qu’il est erroné. |
| Mise au point | Il apprend à partir d’exemples de réponses utiles, les commentaires humains étant souvent utilisés pour classer les réponses. |
| Évaluation | Les équipes le testent pour la qualité, la sécurité et les cas de défaillance |
La pré-formation donne au modèle de larges compétences linguistiques, mais il peut simplement continuer votre texte plutôt que d’y répondre. Les étapes ultérieures en font un assistant utile. La formation de grands modèles nécessite une puissance de calcul importante et coûte cher. L’utilisation d’un modèle fini, appelé inférence, coûte beaucoup moins cher par requête.
Comment il génère du texte
- Votre invite est divisée en jetons et convertie en intégrations.
- Le réseau les traite, en utilisant l’attention pour les relier les uns aux autres.
- Il génère une probabilité pour chaque prochain jeton possible.
- Un jeton est sélectionné et ajouté au contexte.
- Les étapes 2 à 4 se répètent jusqu’à ce qu’elles atteignent une condition d’arrêt.
C’est pourquoi les réponses apparaissent généralement mot par mot lors de leur diffusion. Le texte est littéralement produit en séquence. La Température contrôle le caractère aventureux de l’étape 4 : les valeurs faibles favorisent les jetons les plus probables, tandis que les valeurs plus élevées permettent plus de variété.
Conseil : Pour l’extraction, la classification et d’autres tâches répétables, utilisez une température basse lorsque le réglage est disponible. Pour le brainstorming, un réglage plus élevé peut être utile. Toutefois, une valeur faible ne garantit pas des réponses identiques à chaque fois.
Conditions que vous respecterez
| Durée | Signification |
|---|---|
| Invite | L’entrée que vous donnez au modèle |
| Fenêtre contextuelle | Le nombre maximum de jetons qu’il peut considérer à la fois |
| Paramètres | Les valeurs internes apprises lors de la formation |
| Inférence | Exécuter un modèle entraîné pour obtenir un résultat |
| Hallucinations | Sortie sûre et fausse |
| Seuil de connaissances | Le point après lequel les données d’entraînement se terminent |
| CHIFFON | Récupérer des documents pour donner un contexte supplémentaire à un modèle |
| Modèle à poids ouvert | Un modèle dont vous pouvez télécharger et exécuter vous-même les paramètres |
Limites à connaître
- Hallucinations. Un modèle peut inventer des faits, des citations ou coder des fonctions. Parce qu’il produit un texte probable, les fausses déclarations peuvent paraître tout à fait plausibles.
- Seuil de connaissance. À moins qu’un produit ne le connecte à la recherche ou à d’autres outils, il peut ne pas connaître les événements récents.
- Contexte limité. Si une conversation dépasse la fenêtre contextuelle, les détails antérieurs peuvent être supprimés ou résumés. Les modèles ne se souviennent pas non plus automatiquement des discussions passées, à moins qu’un produit n’ajoute cette fonctionnalité.
- Biais. Les données de formation reflètent les préjugés humains, et ceux-ci peuvent apparaître dans les résultats.
- Incohérence. La même question peut produire des réponses différentes, ce qui est important lorsque vous créez un logiciel par-dessus un seul.
- Risques de sécurité. Les instructions cachées dans le texte peuvent manipuler un modèle, un problème connu sous le nom d’injection rapide.
Bien utiliser les LLM
Traitez un LLM comme un assistant rapide et compétent dont le travail doit être révisé. Quelques habitudes font une grande différence :
- Soyez précis. Des instructions claires, un contexte et des exemples donnent de meilleurs résultats. Notre guide sur l’ingénierie des invites montre comment procéder.
- Fournissez les faits. Lorsque les réponses doivent provenir de vos propres documents, utilisez RAG plutôt que de vous fier à votre mémoire.
- Vérifiez ce qui compte. Vérifiez les chiffres, les citations et les allégations juridiques ou médicales par rapport à des sources fiables.
- Testez le code généré. Exécutez-le et écrivez des tests pour celui-ci, comme vous le feriez pour celui d’un collègue. Notre guide des outils de révision du code IA propose une certaine assistance.
- Protégez les données sensibles. Vérifiez les règles de votre organisation avant de partager des informations confidentielles avec un outil hébergé.
Si vous décidez comment personnaliser un modèle pour votre propre travail, notre comparaison entre RAG, réglage fin et ingénierie rapide vous aidera à choisir.
Pour conclure
Un LLM est un prédicteur de prochain jeton formé à une échelle extraordinaire, et il est plus utile et plus faillible que ne le suggère cette description. Garder le mécanisme à l’esprit vous aide à bien l’utiliser : il est solide en termes de langage et de modèles, et il a besoin de votre supervision sur les faits. Pour que cela soit concret, exécutez le petit script ci-dessus avec votre propre texte, puis essayez plusieurs fois la même invite dans un véritable assistant et comparez les réponses.
Questions fréquentes
Qu’est-ce qu’un grand modèle de langage en termes simples ?
Il s’agit d’un système d’IA entraîné sur d’énormes quantités de texte pour prédire ce qui va suivre. En répétant cette prédiction, il peut répondre aux questions, écrire et résumer.
Quelle est la différence entre l’IA et un LLM ?
L’IA est le vaste domaine de la construction de systèmes intelligents. Un LLM est un type spécifique de modèle d’IA, axé sur le traitement et la génération de langage.
Les LLM comprennent-ils ce qu’ils disent ?
Cela fait débat. Ils captent de riches schémas de signification et peuvent raisonner sur de nombreux problèmes, mais ils ne font pas l’expérience du monde et peuvent échouer d’une manière qu’une personne ne pourrait pas échouer.
Pourquoi les LLM inventent-ils les choses ?
Ils génèrent du texte probable plutôt que de récupérer des faits vérifiés. Lorsque les modèles pointent vers une réponse plausible mais fausse, le modèle peut l’énoncer avec une confiance apparente.
Qu’est-ce qu’un jeton dans un LLM ?
Un jeton est un morceau de texte traité par le modèle, tel qu’un mot, une partie de mot ou un signe de ponctuation. Les limites et les prix sont souvent mesurés en jetons.
Continuez à apprendre
Besoin d’aide pour les tests, WordPress ou le référencement ?
Nous aidons les équipes à proposer de meilleurs logiciels et à développer leurs sites. Dites-nous sur quoi vous travaillez et nous vous proposerons une prochaine étape claire.
Plus de guides sur tests, IA et développement moderne
Vous avez apprécié cet article ? Choisissez un sujet et accédez directement à nos nouveaux didacticiels.
Les hallucinations de l'IA expliquées : pourquoi les modèles de langage inventent les choses et comment les réduire
Les hallucinations de l'IA ont expliqué : ce qu'elles sont, pourquoi les modèles de langage les produisent, les types courants, comment les réduire …
Lire l'article →DevOpsVariables d'environnement expliquées : fichiers .env, secrets et configuration correctement effectués
Variables d'environnement expliquées avec des exemples Python que nous avons exécutés : lecture et définition, pourquoi chaque valeur est une chaîne…
Lire l'article →Développement logicielLimitation du débit de l'API expliquée : algorithmes, en-têtes et gestion des erreurs 429
Limitation du débit de l'API expliquée avec une simulation que nous avons exécutée : compartiment de jetons, fenêtre fixe, fenêtre glissante, 429 ré…
Lire l'article →Automatisation des testsSe moquer en Python : unittest.mock, patch et les erreurs qui font mentir les tests
Moquerie en Python avec unittest.mock, testée : Mock et return_value, side_effect, correctifs où un nom est utilisé, spec et autospec, dates moqueus…
Lire l'article →Tests logicielsCouverture du code expliquée : couverture des lignes par rapport aux branches et ce que signifie réellement 100 %
Couverture du code expliquée avec une véritable exécution de cover.py : couverture des lignes, des branches et des conditions, lecture d'un rapport,…
Lire l'article →Bases de données et SQLDELETE vs TRUNCATE vs DROP dans SQL : différences, restauration et quand les utiliser
DELETE vs TRUNCATE vs DROP expliqué avec SQL testé : ce que chacun supprime, restauration, déclencheurs, réinitialisation d'identité, vitesse et en …
Lire l'article →Bases de données et SQLVues SQL expliquées : créez, utilisez et évitez les pièges, avec des exemples
Vues SQL expliquées avec les requêtes que nous avons exécutées : création d'une vue, résultats en direct, masquage des colonnes, performances, vues …
Lire l'article →Développement logicielInterface TypeScript vs Type : différences réelles, testées avec le compilateur
Interface TypeScript vs type, vérifiée avec le vrai compilateur : ce que les deux peuvent faire, ce qu'un seul peut faire, la fusion des déclaration…
Lire l'article →Développement logicielPython *args et **kwargs expliqués : fonctions flexibles avec des exemples clairs
Python *args et **kwargs expliqués avec le code que nous avons exécuté : emballage et déballage, ordre des paramètres, arguments de mot-clé uniqueme…
Lire l'article →Développement logicielFonctions Python Lambda : syntaxe, utilisations réelles et quand ne pas les utiliser
Fonctions Python lambda expliquées avec le code que nous avons exécuté : syntaxe, tri avec clé, carte et filtre, fermetures, piège de liaison tardiv…
Lire l'article →Intelligence artificielleQue sont les agents IA ? Comment ils fonctionnent, avec une simple boucle d'agent que vous pouvez exécuter
Que sont les agents IA ? Un guide simple sur la boucle d'agent, les outils, la mémoire et les garde-fous, avec une petite boucle Python que nous avo…
Lire l'article →DevOpsSurveillance vs observabilité : la vraie différence, avec les journaux, les métriques et les traces
Surveillance et observabilité expliquées : échecs connus et inconnus, journaux, métriques et traces, présentation pas à pas des incidents de paiemen…
Lire l'article →DevOpsVolumes Docker vs montages Bind : conserver les données du conteneur de la bonne manière
Volumes Docker et montages de liaison expliqués : pourquoi les données du conteneur disparaissent, volumes nommés, montages de liaison, tmpfs, exemp…
Lire l'article →Automatisation des testsTDD vs BDD : principales différences, une fonctionnalité conçue dans les deux sens et quand les utiliser
TDD vs BDD expliqué avec une fonctionnalité de remise construite dans les deux sens : refactor rouge-vert avec le code que nous avons exécuté, scéna…
Lire l'article →Tests logicielsTests d'acceptation utilisateur (UAT) : processus, liste de contrôle et exemples réels
Les tests d'acceptation des utilisateurs sont expliqués : qui les exécute, en quoi ils diffèrent du contrôle qualité, un processus en sept étapes, u…
Lire l'article →Bases de données et SQLExplication des valeurs SQL NULL : IS NULL, COALESCE, NULLIF et les pièges à éviter
Les valeurs SQL NULL expliquées avec les requêtes que nous avons exécutées : logique à trois valeurs, IS NULL, COALESCE, NULLIF, comment les agrégat…
Lire l'article →Bases de données et SQLInstruction SQL CASE WHEN : syntaxe, exemples réels et erreurs courantes
SQL CASE WHEN expliqué avec les requêtes que nous avons exécutées : formulaires simples et recherchés, ordre des conditions, pivots avec SUM, astuce…
Lire l'article →Développement logicielQu'est-ce que JWT ? Les jetons Web JSON expliqués avec un exemple fonctionnel
Qu’est-ce que JWT ? JSON Web Tokens expliqué : les trois parties, un jeton construit et falsifié dans le code que nous avons exécuté, JWT vs session…
Lire l'article →Développement logicielBoucle d'événements JavaScript expliquée : pile d'appels, microtâches et minuteries avec des exemples
La boucle d'événements JavaScript expliquée avec le code que nous avons exécuté : pile d'appels, files d'attente de tâches et de microtâches, pourqu…
Lire l'article →Développement logicielGénérateurs Python et rendement expliqués : économisez de la mémoire avec des exemples réels
Les générateurs Python et le rendement expliqués avec le code que nous avons exécuté : comment ils s'arrêtent et reprennent, les économies de mémoir…
Lire l'article →Intelligence artificielleQue sont les intégrations ? Vecteurs et similarité cosinus expliqués simplement
Que sont les intégrations ? Un guide en langage simple sur les vecteurs, la similarité cosinus et la recherche sémantique, avec un petit exemple que…
Lire l'article →DevOpsDéploiement Bleu-Vert vs Canary : différences, compromis et comment choisir
Explication du déploiement bleu-vert ou canari : comment chacun fonctionne, coût, risque et restauration, regroupement d'utilisateurs stable que nou…
Lire l'article →Automatisation des testsTests instables : quelles sont leurs causes et comment les corriger définitivement
Des tests irréguliers expliqués avec des démos que nous avons exécutées : les principales causes, comment en confirmer et en diagnostiquer une, les …
Lire l'article →Tests logicielsTests de charge vs tests de contrainte : différences, métriques et exemples k6
Explication des tests de charge et des tests de stress : ce que chacun prouve, les tests de pointe et de trempage, les métriques qui comptent, pourq…
Lire l'article →Tests logicielsScénario de test et scénario de test : principales différences, exemples et quand les utiliser
Scénario de test et scénario de test expliqués : des définitions claires, un tableau côte à côte, une fonctionnalité de réinitialisation de mot de p…
Lire l'article →Bases de données et SQLOptimisation des requêtes SQL : lire les plans d'exécution et corriger les requêtes lentes, avec des délais
Optimisation des requêtes SQL testée sur un million de lignes : lire les plans d'exécution, ajouter les bons index, corriger les filtres non Sargabl…
Lire l'article →Bases de données et SQLSQL UNION vs UNION ALL : différences, exemples et performances testées
SQL UNION vs UNION ALL expliqué avec les requêtes que nous avons exécutées : des doublons, les règles suivent toutes les deux, un véritable bug de d…
Lire l'article →Développement logicielTutoriel API JavaScript Fetch : GET, POST, gestion des erreurs et délais d'attente
Un didacticiel de l'API JavaScript Fetch testé sur un serveur local : GET et POST, pourquoi 404 ne lance pas, un assistant réutilisable, des chaînes…
Lire l'article →Développement logicielGestion des fichiers Python : lecture, écriture, CSV, JSON et pathlib avec exemples
Gestion des fichiers Python expliquée avec le code que nous avons exécuté : modes ouverts, avec lecture de fichiers volumineux, CSV, JSON, pathlib, …
Lire l'article →Développement logicielClasses et objets Python : didacticiel POO avec des exemples réels
Classes et objets Python expliqués avec le code que nous avons exécuté : __init__, méthodes, attributs de classe par rapport à l'instance, héritage,…
Lire l'article →Intelligence artificielleQu'est-ce qu'un grand modèle de langage ? Comment fonctionnent les LLM, expliqués sans battage médiatique
Qu’est-ce qu’un grand modèle de langage ? Les LLM expliqués en langage simple : jetons, intégrations, attention, formation, fenêtres de température …
Lire l'article →DevOpsCommandes Linux pour les débutants : le guide du terminal essentiel avec des exemples
Commandes Linux pour débutants, regroupées par tâche : navigation, fichiers, affichage des journaux, grep, tuyaux, autorisations, processus et archi…
Lire l'article →Automatisation des testsSelenium vs Playwright : principales différences, code comparé et lequel choisir
Comparatif Selenium vs Playwright : architecture, attente, support du navigateur et du langage, débogage, même test dans les deux outils, conseils d…
Lire l'article →Tests logicielsPartitionnement d'équivalence : technique de conception de tests expliquée avec des exemples concrets
Le partitionnement d'équivalence expliqué : comment trouver des partitions valides et invalides, des exemples concrets d'âges, de mots de passe et d…
Lire l'article →Tests logicielsGravité vs priorité dans les tests logiciels : différences, matrice et exemples réels
Explication de la gravité et de la priorité dans les tests logiciels : des définitions claires, une matrice à quatre voies avec des exemples, des éc…
Lire l'article →Bases de données et SQLTutoriel sur les sous-requêtes SQL : types, sous-requêtes corrélées et EXISTE avec des exemples
Un didacticiel sur les sous-requêtes SQL avec les requêtes que nous avons exécutées : les sous-requêtes scalaires, IN, FROM et SELECT, les sous-requ…
Lire l'article →Bases de données et SQLTransactions SQL et ACID expliquées : COMMIT, ROLLBACK et niveaux d'isolement
Transactions SQL et ACID expliquées avec un virement bancaire que nous avons effectué : COMMIT, ROLLBACK, points de sauvegarde, verrous, niveaux d'i…
Lire l'article →Développement logicielGit merge vs rebase : différences, exemples et quand utiliser chacun
Git merge vs rebase expliqué avec de vraies sorties de log, un tableau comparatif, la règle d'or du rebase et un flux de travail sûr pour les équipes.
Lire l'article →Développement logicielList comprehension Python : syntaxe, exemples et cas à éviter
La list comprehension Python expliquée : syntaxe, filtres, if-else, boucles imbriquées, temps mesurés et cas où une boucle for classique est préféra…
Lire l'article →Bases de données et SQLJointures SQL expliquées avec exemples (Inner, Left, Right, Full)
Comprenez les jointures SQL pas à pas avec des tables et requêtes d'exemple : INNER, LEFT, RIGHT, FULL, CROSS et SELF, plus erreurs courantes et con…
Lire l'article →