- 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
Aucun commentaire pour le moment.