Microsoft propose un framework pour l'inférence de modèles à 1bit.
Cela signifie que la précision du modèle est à 1 seul bit au lieu des 32 bits habituels pour un float. Réduire le nombre de bits de précision est le processus de "quantization" et cela permet de réduire les exigences en terme de hardware pour un modèle.
D'ailleurs, la précision n'est pas de 1 bit mais plutôt une moyenne de 1.58 bit car la représentation interne des poids du modèle se fait avec des ternaires (1, 0 ou -1) et il faut donc 1 ou 2 bits pour les représenter.
Ainsi, un modèle "quantizé" à 16, 8, 4 voir 1 bit aura un meilleur débit de token et pourra fonctionner sur du matériel moins puissant au prix d'une diminution des capacités de "raisonnement" du modèle.
Alors oui ça peut être utile pour faire tourner des modèles sur du matériel de consommateur (ordinateur, téléphone) mais il y quand même un inconvénient majeur il faudrait ré-entrainer le modèle de 0 par rapport aux techniques habituelles de quantization qui peuvent simplement s'appliquer un modèle déjà entrainé.
Il est possible d'essayer des modèles 1 bit sur Huggingface et se faire une idée des capacités:
- bitnet_b1_58-3B (le modèle de Microsoft)
- Llama3-8B-1.58 (un LlaMa 3 "quantizé" à 1bit)
Une alternative aux runner CI de GitHub avec un pricing 2x moins cher et de meilleures performances.
Ils utilisent des CPU plus modernes, conçus pour le jeu vidéo et avec de meilleures performances par cœur.
Ils proposent aussi une action de cache plus performante qui remplace celle fournie par GitHub
La recherche en optimisation des modèles de langue fais des pas de géant avec GaLore et maintenant Q-GaLore !
Concrètement ces techniques permettent de réduire la mémoire nécessaire pour entraîner un LLM.
Un modèle comme LlaMa 7B ne peut être entraîné que sur des GPU de datacenter car les poids pèsent lourd en mémoire.
Avec Q-GaLore, on peut entraîner ce modèle avec seulement 16Go de RAM et donc sur des GPU grand publique comme la RTX 4060 de Nvidia.
Autant du vote de l'inférence que de l'entraînement, les exigences en matériel dont de plus en plus basses, ce qui contribue à la baisse de coût du token.
Pleins de bon conseils de performance en Javascript
OpenAI partage des technique pour réduire la latence des LLMs.
C'est toujours bon à prendre car le paradigme de latence des LLMs est assez inédit dans le mode du Software Engineering ou on optimise à la dizaine de micro-seconde.
-
Taille du modèle: plus petit = plus rapide mais surtout moins performance. Si vous n'êtes pas capable de mesurer la performance alors il vaut peut-être mieux ne pas risquer un autre modèle que ceux de la gamme GPT4.
-
Générer moins de tokens: les tokens de sortie sont long à générer et en plus coûtent 2x plus cher. Je partage une de mes technique pour Modifier efficacement un texte avec un Agent LLM par exemple
-
Utiliser moins de tokens en entrée: rien à redire ici
-
Faire moins de requêtes: regrouper les requêtes dans le même prompt réduit la latence mais fait baisser les performances (J'en parle dans Spécialisez vos Agents LLM pour de meilleures performances
-
Paralléliser les requêtes: basic software engineering
-
Montrer la progression à l'utilisateur: basic user experience
-
Ne pas utiliser des LLMs partout: cela ne sert à rien de taper sur une vis avec un marteau
LlaMA 3 sur Groq est d'une vitesse incroyable: 800 token/sec.
Les modèles sont disponible sur l'API de Groq Cloud
Ils n'ont pas encore d'offre entreprise payante mais on peut déjà essayer avec le free tiers
Avec la hype des framework frontend bundlé, on a des pages qui chargent constamment plusieurs Mo uniquement de Javascript.
Même de simple landing page font plusieurs Mo.
La palme de performance review à Pornhub avec seulement 1.4 Mo et bien sur Jira se positionne confortablement dans les dernières places (50 Mo)
Mention spécial à react.dev qui charge continuellement du JS jusqu'à atteindre la centaine rien qu'en scrollant quelques articles.
Un autre runtime JS fait par AWS et spécialisé dans le démarrage rapide pour leur infrastructure Lambda.
Ça vient morceler un peu plus l'écosystème JS avec de plus en plus de runtime qui supportent tous plus ou moins des choses différentes: Node, Deno, Bun, Cloudflare Worker, Edge (Vercel), WinterJS et ajd LLRT.
Au final tous ces runtime utilisent quand même la base de Node.js car niveau perfs aucun runtime ne bat v8 et son JIT dans lequel Google a investit des centaines de millions de $
L'histoire d'un développeur frustré du temps de chargement de GTA Online qui l'a examiné en détails pour se rendre compte que le parsing JSON était fait d'une très mauvaise manière.
Décompilation, inspection de la mémoire, hook DLL, du très beau hacking :D
Un article qui résume assez bien tout ce qu'on a autour des Web Performance, ces métriques utilisées (entre autre) par Google pour mesurer la performance des sites web.
A part Google, il existe plusieurs outils en SaaS ou open source pour mesurer ces métriques soit même en vu de les améliorer.
Groq propose une technologie pour accélérer la vitesse d'inférence des LLMs.
Le résultat est impressionnant, ils arrivent à générer plus de 300 tokens/seconde avec Llama 2 70B.
- Il faut 8 GPU A100 à 30$ de l'heure chez Amazon pour arriver au même résultat
- la génération est de 35 tokens/seconde sur le GPU d'un particulier (Nvidia 4090)
Le moteur qu'il utilise s'appelle Groq LPU. Je suppose qu'ils utilisent la quantization et d'autres techniques comme PowerInfer
Ils développent aussi leur propre hardware, ce sont des puces spécialisés dans l'inférence.
Les opérations couteuses comme les multiplications de matrice sont gravés directement dans le silicium ce qui multiplie la vitesse par plusieurs ordres de grandeur.
Après les TPU de Google et les NPU de Microsoft, Groq propose une alternative hardware crédible sur un marché très dur à adresser.
PowerInfer est un nouveau moteur d'inférence qui permet d'utiliser les plus gros modèles sur du matériel de particulier.
Ils ont remarqué qu'il y a une répétition des neurones activés lors des phases d'inférence ("hot neurons") quelque soit le prompt et ils sont donc pré-chargés dans le GPU.
PowerInfer utilise également le CPU dans son moteur d'inférence hybride et atteint des performances à ~30 tokens/seconde sur une NVIDIA RTX 4090, soit seulement 20% moins que sur des GPU datacenter A100.
Avec LlamaCPP, la vitesse d'inférence est multipliée par 11!
Une comparaison des différentes manières de cloner un objet en Javascript.
Sans surprise c'est toujours JSON.parse(JSON.stringify(object))
qui est le plus rapide et surtout le plus portable.
Une explication technique du moteur de recherche de code de Github.
Avec 155 To de données et plus de 15 milliards de documents, ils ont développé une solution maison de l'ingestion jusqu'au moteur de recherche.
Le moteur de recherche est basé sur des ngrams (trigramme à priori)
Une lib frontend pour avoir le Largest Content Paint et le First Content Paint des pages d'un site web.
Un outil en ligne de commande qui remplace apt
.
En plus d'avoir un output terminal sexy, nala propose surtout le téléchargement en parallèle des paquets APT.
Un routeur HTTP basé sur un arbre et non des regex.
Les regex pour router des requêtes HTTP c'est vraiment bof, lent et très dur à maintenir. Ça reste cependant le choix par défaut pour des "framework" populaires comme Next.js.
Une limitation codé en dur dans le kernel Linux limitait son utilisation du d'une machine à 8 coeurs seulement.
On devrait voir une amélioration des perfs dans la prochaine version.
Un outil open source pour mesurer la performance des applications frontend.
Ça s'intègre même à la CI !
Blake3 est plus sur que SHA256 et sûrement plus sur que Keccak qui a gagné le concours SHA3.
C'est aussi l'algorithme le plus performant dans les benchmarks