2.0 KiB
Bibliothèque pour l'utilisation de systèmes quantifiés (avec déquant à la volée) pour PyTorch.
Fonctions principales (attendues) :
- Kernels de Quant/DeQuant pour GPU
- GEMM (avec backward) en Q4_1 (plus tard d'autres quant)
- Optimiseurs avec APIs adaptées, agnostiques à la quant
- SGD custom avec compression géométrique 2 bits/poids
Avancement/roadmap :
- Apprentissage de Triton en profondeur
- Système de détection du matériel au premier démarrage dans l'env
- Kernels de Quant/DeQaunt en Q4_1
- GEMM fussionnée avec une DeQuant depuis Q4_1
- Réécriture de AdamW avec les API des quant pour update des poids et autres
- optionnel : Réécriture de Muon avec les APIs de quant (plus adapté pour les LLM)
- Implémentation d'
embeddinget autres composants utiles aux LLM - Ajout FP8 pour les calculs des kernels
- Implémentation du SGD avec compression géometrique (2 bits/poids)
- optionnel : Post-entraînement d'un Qwen3 0.6b/1.7b en Q4_1 + calculs en FP8 (ou FP16) + SGD 2bits (sur une RTX 4080)
Ce dernier point validera tout, avant de passer à la suite, l'ajout des quantifications se fera après (Q2_K en premier).
Détails importants :
-
La quantficiation Q4_1 est exactement la même que dans llama.cpp en implémentation 1:1 pour permettre pré/post entraînement directement en quantification.
-
Les kernels de fused-GEMM font une GEMM traditionnelle mais où le chargement des données (pointeurs I/J) se fait avec déquantification immédiate avant la dot (peut changer de logique). Les activations (ReLU, ReLU² et autres, sauf Softmax) ne seront pas codées pour le moment.
-
Une implémentation dans un moteur d'inférence compatible (ex: vLLM) n'est pas du tout prévue et l'objectif n'est pas d'entraîner des modèles mais seulement de développer les outils.
-
Un papier sur le SGD 2bits/poids est prévu en utilisant des principes de corrections géométriques dans le temps....
readme v1.1