Présentation d’AutoThink, qui améliore les performances des LLM locaux grâce au raisonnement adaptatif
(news.ycombinator.com)- AutoThink permet d’améliorer les performances des grands modèles de langage (LLM) en environnement local grâce à une technologie de raisonnement adaptatif
- Ce projet prend en charge l’utilisation de LLM haute performance même dans des environnements aux ressources GPU limitées
- Il offre des avantages en vitesse et en qualité de réponse par rapport à l’exploitation classique des LLM
- Par rapport aux solutions de LLM cloud comme l’API OpenAI, il permet une meilleure protection de la vie privée et une réduction des coûts
- Il est utile aux développeurs et aux chercheurs en IA pour le déploiement et l’expérimentation de leurs propres LLM
Présentation du projet open source AutoThink
AutoThink est un framework de raisonnement adaptatif conçu pour maximiser les performances des grands modèles de langage (LLM) fonctionnant en environnement local. Voici ses principales caractéristiques et ses avantages concurrentiels.
Pourquoi AutoThink est important
- La plupart des solutions avancées d’amélioration des LLM dépendent d’un cloud externe, comme l’API OpenAI ou HuggingFace Spaces
- Les services de LLM dans le cloud posent des problèmes d’exposition des données personnelles, de coût et de dépendance au réseau
- AutoThink aide à garantir la meilleure qualité de réponse possible même sur des GPU modestes ou des PC peu puissants, grâce à une structure d’inférence optimisée
- Sa structure adaptative analyse en temps réel les conditions d’exploitation et la difficulté du problème, puis sélectionne dynamiquement le chemin et la stratégie d’inférence les plus adaptés
Principales fonctionnalités et avantages
- Introduction d’un raisonnement en plusieurs étapes : applique automatiquement plusieurs étapes de raisonnement selon le problème en entrée, afin d’améliorer la qualité des réponses même pour les questions complexes
- Réglage automatique des performances : ajuste le processus d’inférence et les ressources en fonction du matériel disponible, du temps imparti, de la difficulté et d’autres contraintes
- Expérimentation rapide : conçu pour permettre aux chercheurs en IA et aux développeurs de tester rapidement des LLM sur des infrastructures variées
- Conception modulaire : prend en charge la séparation entre les stratégies d’inférence et le moteur LLM, ce qui facilite l’intégration avec différents moteurs
Avantages par rapport aux projets concurrents
- Jusqu’ici, il était courant d’avoir des structures d’inférence fixes conçues pour le cloud ou pour du matériel à grande échelle
- AutoThink se distingue par son allègement pour les environnements locaux, son équilibre entre précision et vitesse, et sa structure adaptative
- Il excelle dans la protection des données internes et des informations sensibles
Exemples d’utilisation
- Il est efficace pour l’adoption de LLM en interne dans des environnements aux ressources GPU limitées, comme les petites startups ou les laboratoires de recherche
- Il permet une application rapide dans les cycles d’expérimentation répétée et d’amélioration fonctionnelle
Conclusion
AutoThink est un projet open source innovant qui fournit une structure légère et flexible d’optimisation de l’inférence, afin d’aider les développeurs et les experts en IA à exploiter efficacement leurs propres modèles LLM en local. Il constitue une alternative pratique capable de surmonter les coûts et les enjeux de confidentialité des solutions de LLM basées sur le cloud, tout en renforçant leur applicabilité concrète en entreprise dans divers environnements.
1 commentaires
Commentaires sur Hacker News
Je précise que la motivation derrière AutoThink vient du constat que les modèles de raisonnement existants gaspillent des ressources de calcul : même pour une question très simple comme « combien font 2+2 ? », ils consomment autant de « temps de réflexion » que pour une démonstration mathématique complexe, et cette inefficacité sautait aux yeux. Ce qui m’a surpris, c’est qu’en combinant deux pistes que j’explorais séparément — la classification adaptative (capable d’apprendre de nouvelles catégories sans réentraînement) et le Pivotal Token Search publié en open source dans le papier de Microsoft sur Phi-4 — puis en y ajoutant une allocation dynamique du budget de tokens, on a obtenu un gain de performance bien plus important que prévu. En pratique, le nombre moyen de tokens utilisés a même baissé : les requêtes simples se terminent réellement beaucoup plus vite, et le calcul supplémentaire n’est alloué qu’aux requêtes complexes. Quelques points techniques : le steering vector est petit, moins de 1 Mo par motif, donc le surcoût mémoire est quasi nul ; la phase de classification n’ajoute qu’environ 10 ms de latence, ce qui est négligeable ; et le choix de la couche cible est important, les couches intermédiaires 15 à 20 donnant les meilleurs résultats sur la plupart des modèles. Les retours que j’aimerais avoir portent sur l’expérience de méthodes adaptatives similaires, les motifs de raisonnement qu’il serait encore plus utile de steer, et des idées pour détecter automatiquement la meilleure couche cible. N’hésitez pas à poser toutes vos questions sur l’implémentation ou les résultats.
Ce n’est plus forcément le cas maintenant. Avez-vous essayé Gemini 2.5 Pro ? Sur les questions simples, il ne « réfléchit » pratiquement pas, tandis que sur les questions de code il produit des réponses qui ressemblent à de longs articles de raisonnement. J’ai l’impression que c’est pareil avec o3.
Félicitations ! Toute tentative d’améliorer l’efficacité des LLM est la bienvenue. Jusqu’ici, j’optimisais de façon assez paresseuse en traitant seulement les requêtes simples avec des modèles MLX sur un Mac Mini M4, et en envoyant les requêtes complexes vers une Nvidia 4090 ; l’efficacité du M4 par rapport à Nvidia est vraiment stupéfiante. Je pense qu’Apple est sur la bonne voie avec MLX. Je vais lire davantage de choses sur AutoThink et essayer de l’intégrer à mon workflow personnel.
Je pense que ça vaudrait la peine d’essayer une approche consistant à insérer, après le prompt utilisateur, une « réponse d’un modèle non reasoning », par exemple : « Voici ce qu’un modèle non reasoning a pensé : ... Est-ce bien le résultat souhaité par l’utilisateur ? » Quand la version non reasoning suffit, le modèle de reasoning pourrait ainsi répondre plus vite lui aussi.
Même Claude Sonnet 3.5 — pas la toute dernière version 3.7 ni 4 — montre clairement des temps de traitement différents selon la complexité de la requête ; on observe bien un ajustement dynamique du temps de traitement.
Je me demande comment on peut classer une question comme « complexe » ou « simple ». Une question qui paraît simple peut en réalité être très difficile. Par exemple, trouver une solution entière à x³+y³+z³=42 a mobilisé plus de 100 ans de ressources de calcul. Ou encore une expression comme x/(y+z)+y/(z+x)+z/(x+y)=4 peut sembler simple en apparence, alors qu’elle admet des solutions gigantesques nécessitant la théorie des courbes elliptiques. Lien vers une solution de référence
Classer la difficulté d’un problème est en soi une compétence distincte — une capacité qui peut s’apprendre indépendamment de la résolution elle-même. Par exemple, en voyant l’équation ci-dessus, il faut immédiatement repérer trois difficultés : le domaine des entiers, trois variables et une équation cubique. La combinaison de ces trois éléments fait exploser la difficulté. Avec des réels ou des complexes, moins de variables ou un degré plus faible, ce serait bien plus facile. Bien sûr, cela ne veut pas dire que c’est forcément difficile, mais ça peut indiquer qu’on est face à un problème non résolu. Je n’ai pas les compétences pour le résoudre moi-même, mais je me suis entraîné à savoir où chercher des informations, donc je peux tout de suite sentir que « c’est extrêmement difficile ». Je me demande si un LLM ne pourrait pas apprendre ce genre d’indices et développer la capacité à classer la difficulté d’un problème sans le résoudre réellement — ou peut-être qu’il l’a déjà appris.
Ici, la difficulté d’une requête est définie à partir du nombre de tokens consommés par le modèle pour produire une réponse correcte sur des jeux de données de vérité terrain comme GSM8k. Le classifieur adaptatif est entraîné sur ce jeu de données, puis utilisé pour la classification au moment de l’inférence.
Quand le bouton
extended thinkingest apparu dans Claude 3.7, j’ai moi aussi créé un POC autothink similaire — il s’appelle même autothink.github.com/NiloCK/autothink
blog think-toggles-are-dumb
Ma version fonctionne avec une première passe où le LLM note la difficulté de la requête sur une échelle de 0 à 100, puis alloue linéairement le budget de réflexion en fonction de ce score. C’est évidemment plus simple que le travail de l’OP, mais je suis vraiment heureux de voir des résultats quantitatifs — c’est une très belle réalisation !
Ça me paraît être une optimisation évidente, et je trouve étonnant que ce changement ne soit pas déjà en cours. La façon dont c’est expliqué et implémenté est impressionnante.
Avec des modèles de reasoning comme QwQ ou Qwen 3, pour être honnête, je n’ai pas consacré beaucoup de temps à améliorer les résultats ; j’ai surtout essayé de contraindre la sortie des reasoning tokens avec différents prompts. Gemma 3 27B QAT n’est pas un modèle de reasoning, mais il est excellent pour suivre les instructions lorsqu’on l’utilise dans une chaîne ou une route de LLM ; on peut donc l’employer pour la pré-classification ou l’optimisation linguistique avant de confier le véritable reasoning à l’étape suivante. On peut aussi intercaler des réponses intermédiaires entre plusieurs thinking tags. Dans ce type d’expérimentation, je définis les « tokens de réflexion » non pas séparément de la conclusion, mais comme tous les tokens servant de marches intermédiaires vers la résolution du problème. J’ai souvent constaté qu’en imposant l’usage prioritaire de certains tokens ou de certaines formulations, on améliore globalement les résultats, et l’idée d’AutoThink d’utiliser automatiquement les tokens les plus performants sur un dataset pourrait devenir une optimisation plus générale et plus efficace. En revanche, si on utilise trop de pivot tokens, il y a un risque de surapprentissage sur les questions de benchmark, donc j’aimerais voir dans quelle mesure cette approche se généralise. À titre personnel, je considère qu’un choix soigneux des mots ou des tokens est une optimisation peu coûteuse et très rentable pour améliorer la qualité des résultats, et j’attends beaucoup de la capacité de généralisation d’AutoThink.
C’est vraiment génial que les petits modèles permettent désormais à de petites équipes et à des chercheurs individuels de démontrer facilement des approches ou des expériences innovantes sans envier les grands laboratoires d’IA. Plus la compétitivité des SML (Small Language Model) augmente, plus le champ de ce qui devient réalisable on-device s’élargit au-delà de ce qu’on imaginait.
Si vous hébergez un modèle pour d’autres personnes, il est aussi très utile d’économiser des ressources de calcul sur les questions très simples. Dans ce cas, le modèle peut avoir le défaut de moins bien traiter les questions jugées faciles, mais ce coût, ce n’est pas moi qui le supporte. À l’inverse, si j’utilise le modèle directement sur mon PC, alors après avoir déjà investi beaucoup dans un GPU, j’ai plutôt envie d’exploiter au maximum les ressources — réduire le calcul même sur les requêtes simples n’est pas forcément ce que je souhaite.
C’est une excellente piste de réflexion ! Nous devons justement discuter en interne du fait que, dans la conception de notre crawler IA, il faut pouvoir déterminer de manière flexible s’il faut lancer plus ou moins de requêtes selon le site visité. Pour information, nous sommes samaritanscout.org, un projet de moteur de recherche qui agrège toutes les opportunités locales de bénévolat publiées sur différents sites d’organisations à but non lucratif.
Je suis arrivé très récemment dans le domaine des LLM et de l’IA, mais ce projet m’intéresse énormément. Le fait qu’AutoThink ajuste l’effort de calcul pour permettre à l’IA de « réfléchir plus intelligemment » selon la difficulté du problème me paraît intuitivement très convaincant — un peu comme une personne qui résout immédiatement 2+2 et ne prend vraiment le temps de réfléchir que sur les problèmes difficiles. Je ne maîtrise pas bien les aspects techniques comme le budget de tokens ou les steering vectors, mais cette idée de devenir à la fois plus rapide et plus intelligent me fascine. Je vais continuer à suivre cela.
Je pense qu’il vaudrait mieux éviter d’utiliser des termes comme « pensée » ou « raisonnement » pour les LLM — ces deux mots ont un sens particulier et un bagage philosophique, alors qu’en réalité les LLM ne pensent ni ne raisonnent ainsi ; ils produisent simplement des résultats en mobilisant davantage de calcul (temps processeur), ce qui relève davantage d’un mécanisme informatique.
C’est déjà trop tard. Comme le mot « ordinateur » désignait autrefois des calculateurs humains avant de passer entièrement aux machines, on assiste ici au même glissement de vocabulaire.
J’y vois une analogie avec « ping » : quand on « ping » une adresse IP, on n’envoie pas réellement des ondes sonores sur une coque métallique, mais le terme est utilisé de manière métaphorique en lien avec le comportement réel. Si la métaphore est utile, on l’emploie au quotidien même sans correspondance parfaite avec la réalité.
Ma vision du monde est, sur le plan des principes, matérialiste et déterministe. Mais dans la vie courante, j’y ajoute de l’existentialisme et même une légère sensibilité spirituelle. D’un point de vue pratique, attribuer temporairement à ces outils des propriétés anthropomorphiques peut faciliter la conversation et aider à les appréhender intuitivement. Cette méthode montre parfois ses limites, mais dans ces cas-là, je pense qu’on peut facilement revenir à un cadre plus analytique.