17 points par GN⁺ 2026-03-13 | 1 commentaires | Partager sur WhatsApp
  • bitnet.cpp de Microsoft est le framework officiel d’inférence pour les grands modèles de langage (LLM) 1 bit, avec une inférence rapide et sans perte sur CPU et GPU
  • Sur CPU ARM, il atteint une accélération de 1,37 à 5,07x et une réduction de la consommation d’énergie de 55,4 à 70 % ; sur CPU x86, une accélération de 2,37 à 6,17x et une réduction de 71,9 à 82,2 %
  • L’ajout d’une implémentation de noyaux parallèles et de la quantification des embeddings apporte un gain de performances supplémentaire de 1,15 à 2,1x
  • Le modèle BitNet b1.58 peut s’exécuter sur un seul CPU à une vitesse de 5 à 7 tokens par seconde, ce qui élargit les possibilités d’exploitation locale de modèles très volumineux
  • Développé sur la base de llama.cpp et T-MAC, il contribue à l’extension de l’écosystème open source visant à améliorer l’efficacité de l’inférence des LLM à faible nombre de bits

Présentation de bitnet.cpp

  • bitnet.cpp est le framework officiel d’inférence pour les LLM 1 bit (par ex. BitNet b1.58), avec des noyaux optimisés pour CPU et GPU
    • La prise en charge des NPU est prévue ultérieurement
  • La première version prend en charge l’inférence sur CPU et démontre des gains en vitesse et en efficacité énergétique sur les architectures ARM et x86
    • CPU ARM : accélération de 1,37 à 5,07x, réduction d’énergie de 55,4 à 70 %
    • CPU x86 : accélération de 2,37 à 6,17x, réduction d’énergie de 71,9 à 82,2 %
  • Le modèle BitNet b1.58 de 100B de paramètres peut s’exécuter sur un seul CPU à une vitesse de 5 à 7 tokens par seconde

Dernières optimisations

  • L’ajout d’une implémentation de noyaux parallèles, de la configuration de tiling et de la quantification des embeddings permet un gain de vitesse supplémentaire de 1,15 à 2,1x par rapport à la version précédente
  • Des améliorations de performances ont été constatées sur diverses plateformes matérielles et charges de travail
  • Les détails techniques sont fournis dans le document optimization guide

Démo et modèles officiels

  • Une démo est proposée pour exécuter le modèle BitNet b1.58 3B sur Apple M2
  • Le modèle officiel BitNet-b1.58-2B-4T est publié sur Hugging Face et pris en charge sur CPU x86 et ARM
  • Les modèles pris en charge incluent bitnet_b1_58-large(0.7B), bitnet_b1_58-3B(3.3B), Llama3-8B-1.58, Falcon3 et la série Falcon-E

Installation et compilation

  • Prérequis : Python 3.9 ou plus, CMake 3.22 ou plus, Clang 18 ou plus
    • Les utilisateurs de Windows doivent installer Visual Studio 2022
    • Un script d’installation automatique est fourni pour les utilisateurs Debian/Ubuntu
  • L’utilisation d’un environnement Conda est recommandée, et setup_env.py permet de configurer l’environnement du modèle
  • Après téléchargement du modèle depuis Hugging Face, l’exécution peut se faire à partir d’un chemin local

Utilisation et benchmarks

  • run_inference.py permet d’exécuter l’inférence sur modèle quantifié
    • Principaux arguments : chemin du modèle (-m), prompt (-p), nombre de threads (-t), taille du contexte (-c), température (-temp)
  • Le script e2e_benchmark.py permet de mesurer les performances en spécifiant le nombre de tokens, la longueur du prompt et le nombre de threads
  • En l’absence de modèle public, generate-dummy-bitnet-model.py permet de générer un modèle factice puis d’exécuter des benchmarks

Conversion de modèle et FAQ

  • Un script est fourni pour convertir des checkpoints .safetensors au format gguf
  • La FAQ explique comment résoudre les erreurs de compilation de llama.cpp (liées à std::chrono) et comment configurer l’environnement clang sous Windows
    • Initialisation requise depuis l’invite de commandes développeur Visual Studio ou PowerShell

1 commentaires

 
GN⁺ 2026-03-13
Avis sur Hacker News
  • Microsoft utilise en réalité 2 bits et non 1,58 bit
    Dans ce cas, on peut représenter quatre valeurs : -1, 0, 1, 2
    Étant donné que les synapses inhibitrices représentent 20 à 30 %, cette structure semble bien correspondre à l’architecture du cerveau biologique

    • Je me demande si tu pourrais expliquer un peu plus la troisième phrase, à savoir la partie « les synapses inhibitrices représentent 20 à 30 % »
  • Je me demande souvent à quoi ressemblerait un LLM minimalement fonctionnel
    Autrement dit, un modèle disposant du minimum d’informations, mais capable de produire des réponses suffisamment raisonnables en complétant le reste par des recherches Google
    Si un acteur comme Encyclopedia Britannica vendait ses données aux LLM et proposait un service de validation des résultats, cela pourrait faire une vraie différence
    Wikipedia est utile aussi, mais il est regrettable qu’il y ait autant d’erreurs et de biais humains

    • Dans une courte vidéo d’Andrej Karpathy, il parle de ce sujet
      Les petits LLM évoluent déjà dans cette direction : ils manquent de culture générale, mais leur capacité à utiliser des outils (par ex. Google) s’améliore progressivement
      En revanche, distinguer clairement ce qu’ils savent de ce qu’ils ignorent reste un problème difficile
    • Ce que j’ai en tête n’est pas tant un « LLM minimalement fonctionnel » qu’un LLM qui maîtrise bien le langage mais n’a presque pas de connaissances
      Comme un ingénieur qui ne connaît pas un appareil particulier : il sait résoudre des problèmes, mais manque de connaissances détaillées
      Je ne suis pas sûr qu’un tel modèle puisse vraiment s’en sortir simplement avec Google ou une recherche sur un wiki, mais l’architecture des LLM edge me semble appelée à devenir la norme
    • Les capacités de raisonnement dépendent au final du volume d’informations vu pendant l’apprentissage
      Plus une information figure dans les données d’entraînement, plus il devient facile de la retrouver et de l’interpréter
      Une approche d’entraînement davantage fondée sur une mémoire externe (recherche, etc.) que sur la mémorisation interne pourrait donc être plus pratique
    • S’inquiéter des erreurs et des biais de Wikipédia tout en pensant qu’un LLM avec accès au web ferait mieux me semble contradictoire
      Pour ma part, je pense plutôt l’inverse
    • Tout dépend sans doute du niveau concret qu’on met derrière l’expression « réponse raisonnable »
  • D’après l’article original (pdf), il faut environ 4 à 5 fois plus de paramètres qu’un modèle fp16
    On peut certes en construire un soi-même, mais comme il faut l’entraîner à partir de zéro, les options restent limitées
    Malgré cela, on peut s’attendre à une vitesse d’inférence supérieure à celle des modèles quantifiés récents en 4 bits ou 8 bits

  • Le véritable point clé, c’est le gain énergétique
    On parle d’une réduction de 70 à 82 % pour l’inférence sur CPU
    Si les modèles 1 bit deviennent suffisamment bons, on pourra faire tourner des LLM sur du matériel classique sans GPU, ce qui changera la donne en matière d’accessibilité

  • bitnet.cpp est présenté comme le framework officiel d’inférence pour les LLM 1 bit (BitNet b1.58, etc.),
    mais il y a une confusion entre « 1 bit » et « 1 trit »

    • « LLM 1 bit » relève surtout du marketing ; en réalité, on utilise 3 états (-1, 0, 1), ce qui correspond à 1,58 bit
    • Comme log₂(3)≈1,58, il s’agit non pas d’un modèle à 2 états (1 bit), mais bien d’un modèle à 3 états (1,58 bit)
      Mélanger les deux notions entretient la confusion
  • Je suis content de voir que ce projet continue d’être développé
    L’an dernier, en lisant ce billet lié, j’y avais vu du potentiel, mais j’étais déçu de ne pas voir arriver de nouveaux modèles

    • Mais au fond, cette approche n’est qu’une quantification de modèles en pleine précision : l’inférence devient plus rapide, mais l’entraînement ne l’est pas
      Ce qui serait vraiment intéressant, ce serait d’entraîner directement des modèles binaires sans opérations en virgule flottante
      Il existe un article à ce sujet dans NeurIPS 2024
  • Dire qu’on peut « exécuter un BitNet 100B » ne signifie pas qu’un tel modèle existe, mais que le framework d’inférence le permet

    • En pratique, il semble qu’un modèle factice ait été utilisé
      Même en cherchant « 1-bit 100b model », on ne trouve aucun modèle téléchargeable
  • La qualité de sortie du modèle ressemble davantage à un marmonnement de niveau GPT-2, avec répétition intégrale des paragraphes
    Il recycle même en boucle de fausses citations comme (Jenkins, 2010)

    • Cela dit, il s’agit d’un modèle de base de 3B paramètres vieux de deux ans, entraîné sur seulement 100B tokens à des fins de recherche
  • Le titre est trompeur
    En réalité, ce n’est pas un modèle 100B entraîné, mais un framework d’inférence capable de le traiter
    Je fais tourner des modèles quantifiés 70B sur un M2 Max 96GB avec llama.cpp + LiteLLM, et le goulot d’étranglement vient de la bande passante mémoire
    L’approche en 1,58 bit remplace les multiplications matricielles par des additions, donc le profil de calcul sur CPU est fondamentalement différent
    Si l’on pouvait faire tourner un modèle de classe 100B sur un seul cœur CPU à 5 à 7 tokens par seconde, ce serait un point de bascule pour l’inférence on-device
    Le framework est prêt ; il faut maintenant que quelqu’un entraîne réellement le modèle

    • Si Microsoft n’a pas entraîné lui-même un modèle pendant deux ans, j’ai du mal à prendre ses affirmations au pied de la lettre
    • On parle de « nouveau modèle », mais les poids mis en ligne sur Hugging Face datent d’il y a 11 mois et restent au niveau de 2B paramètres
      Le résultat concret paraît maigre par rapport à la communication
    • Les opérations en 2 bits sont très peu coûteuses à implémenter matériellement ; avec une puce dédiée, on pourrait avoir une inférence puissante sans GPU
      Les GPU resteraient sans doute nécessaires pour l’entraînement, mais le matériel d’inférence pourrait devenir bien plus simple
    • Une vitesse de 5 à 7 tokens par seconde reste inférieure à la vitesse réelle de lecture
      J’ai déjà utilisé un modèle qui sortait 7 tokens/s, et la sensation était aussi frustrante que de marcher derrière quelqu’un de lent
      En local, il faudrait viser au minimum 10 tokens/s
    • J’ai des doutes sur l’affirmation selon laquelle « le profil de calcul sur CPU est fondamentalement différent »
      Les instructions FMA (Fused Multiply-Add) des CPU modernes ont un débit presque identique à celui d’une simple addition
  • Je me demande quand les PC équipés de NPU commenceront réellement à tenir leurs promesses
    AMD obtient de bons résultats avec des noyaux hybrides d’inférence NPU/iGPU
    Si de tels gros modèles tournent sur NPU, l’efficacité énergétique sera bien meilleure que sur CPU

    • J’ai récemment fait tourner Whisper d’OpenAI sur CPU, puis j’ai essayé une version optimisée pour l’Intel NPU : c’était 6 fois plus rapide et beaucoup plus silencieux
      Depuis, je suis devenu fan des NPU. Ce n’est certes pas du niveau d’une RTX 5090, mais c’est bien plus efficace qu’un CPU
    • On peut déjà faire tourner de petits LLM sur le NPU du SBC Rockchip RK3588
      L’écosystème logiciel reste instable, mais cela fonctionne avec une utilisation CPU/GPU quasiment nulle
    • Cela dit, je me demande si les NPU sont vraiment si puissants
      J’avais compris qu’ils étaient surtout conçus autour de la basse consommation