Cours pratique pour ingénieurs systèmes : implémenter l'inférence de Qwen3 sur les puces Apple à partir de la multiplication matricielle avec les tableaux MLX, puis ajouter progressivement le cache KV, la quantification, le batching continu et le cache KV paginé pour créer un mini vLLM, et enfin construire un agent de codage.
Étoiles 4851 (+22 / 24h)
Raison
- Parcours sur quatre semaines : la semaine 1 consiste à écrire l'attention, RoPE, GQA, RMSNorm, MLP, l'échantillonnage et la boucle autoregressive en utilisant uniquement mlx.core ; la semaine 2 ajoute le cache KV, la multiplication matrice-vecteur quantifiée sur 4 bits et le préfilling SIMD ; la semaine 3 met en œuvre le batching continu, l'admission par blocs et le cache KV paginé, permettant à l'attention de décodage et à FlashAttention de lire directement les pages
- Pour chaque opérateur abordé, vous devez l'implémenter vous-même en Python, C++ ou Metal, sans utiliser les versions optimisées prêtes à l'emploi de MLX ; MLX ne sert que de référence de correction et de base de performance
- L'agent de codage de la semaine 4 est publié jour par jour, actuellement ouvert jusqu'au jour 9 : modification de fichiers après approbation, commande de validation unique, points de contrôle et reprise, compression du contexte, évaluation déterministe, etc.
Utilisation
- Le matériel pédagogique se trouve sur skyzh.github.io/tiny-llm, commencez par le chapitre sur la configuration de l'environnement ; vérifiez l'environnement : pdm install -v, pdm run check-installation, pdm run test-refsol -- -- -k week_1
- Les exercices sont écrits dans le paquet tiny_llm, tiny_llm_ref contient les solutions de référence pour les tests, suivez l'ordre des chapitres du livre
Risques
- Nécessite un Mac avec puce Apple ; l'auteur avertit qu'à partir du jour 3 de la semaine 4, l'agent enverra le contenu des fichiers au modèle, pourra modifier des fichiers et exécuter des commandes, utilisez donc un espace de travail temporaire sans clés sensibles
- C'est un projet pédagogique, pas un framework d'inférence de production ; le dépôt existe depuis 2025 ans, licence Apache-2.0