Moteur d'inférence LLM rapide construit à partir de zéro
Cet article détaille le parcours de l'auteur dans la construction d'un moteur d'inférence LLM à partir de zéro en utilisant C++ et CUDA, sans recourir à aucune bibliothèque. Ce processus a permis une plongée profonde dans la pile complète de l'inférence LLM, des noyaux CUDA à l'architecture du modèle, montrant comment les optimisations affectent la vitesse d'inférence. L'objectif était de créer un programme capable de charger les poids de modèles open-source courants et d'effectuer une inférence mono-lot sur un seul serveur CPU+GPU, en améliorant itérativement le débit de jetons pour surpasser llama.cpp. L'article décrit méticuleusement les étapes d'optimisation sur la CPU et le GPU, notamment le multithreading, la quantification des poids, le SIMD, la fusion des noyaux et la quantification du cache KV, tout en analysant les goulots d'étranglement et les défis. Le résultat final atteint des performances proches de l'état de l'art pour l'inférence LLM locale.