Gemma 4 E2B / E4B attribue à chaque mot un « embedding par couche » (PLE) distinct à chaque couche, représentant 35.2% paramètres dans E4B et 5.64 Go en BF16. OPTIC ne stocke qu'un seul ensemble de codes quantifiés partagés par toutes les couches pour chaque mot, chaque couche utilisant ensuite un petit décodeur affine pour la reconstruction. Le codebook et le décodeur sont ajustés en fonction de l'erreur au niveau de la projection de sortie du PLE, et non des vecteurs stockés eux-mêmes.
J'aime 14 · Étoiles du code 5
Raisons
- Les auteurs affirment qu'avec une compression d'environ 100 fois, E4B en BF16 conserve 97.8% des performances sur 7 benchmarks, tandis que la quantification par produit, la plus performante parmi six méthodes conventionnelles, n'en conserve que 66.3% ; la même compression conserve 96.9% des performances sur la version officielle W4A16 (poids en 4 bits).
- Des chiffres existent également pour des compressions plus extrêmes : 90.5% des performances conservées avec une compression de 594 fois, 84.1% avec une compression de 1002 fois, et les PLE de E4B ne pèsent plus que 5.6 Mo à un facteur de 1002 (selon les auteurs).
- L'économie concerne la mémoire vidéo, avec un impact minime sur la vitesse : le README indique que sur une seule RTX 4090, avec un cache KV fixe de 1 GiB, la mémoire vidéo des poids BF16 est réduite de 29.7% et celle de W4A16 de 43.1%, avec une augmentation du temps d'exécution maximale de 0.40% / 0.69% ; vLLM rapporte une réduction de la mémoire vidéo du modèle de 15.3 GiB à environ 10 GiB.
- Directement lié au déploiement sur appareils de bord : la série E de Gemma 4 est conçue pour les appareils à faible mémoire vidéo, et la table d'embeddings est précisément la partie la plus volumineuse et la plus difficile à compresser avec des méthodes de quantification conventionnelles.
Utilisation
- Code : github.com/VILA-Lab/optic (Apache-2.0) ; artefacts de compression : Hugging Face zcahjl3/gemma-4-E4B-it-OPTIC-100x (apache-2.0, un seul fichier compressed_ple.npz), téléchargés automatiquement lors de la première exécution avec le modèle original Gemma 4 E4B de la version spécifiée.
- Nécessite Python 3.12 et une carte graphique CUDA. Le README indique que 24 GiB de mémoire vidéo suffisent pour des générations courtes avec BF16 E4B : après
pip install -r requirements-inference.txt && pip install -e ., exécutezpython examples/generate.py --prompt "…"; ajoutez--imagepour le question-réponse multimodal. - vLLM (documentation exigeant 0.19.1) : pointez
PLE_OPTIC_ARTIFACTvers le fichier npz téléchargé, servez normalementvllm serve google/gemma-4-E4B-it; le plugin installé depuis le dépôt remplace la table PLE dense au chargement ; les modèles déjà chargés peuvent également être intégrés viainstall_compact_ple(model, artifact). - Reproduction de l'article :
ple-eval evaluate --gpus 0 --run-id optic-e4bexécute les 7 benchmarks ; consultezdocs/fitting.mdpour ajuster votre propre version compressée.
Risques
- Conçu uniquement pour les modèles de type Gemma 4 E2B / E4B avec embeddings par couche ; les autres poids ne sont pas compressés ; seuls les artefacts de compression à 100 fois pour E4B BF16 sont publiés, E2B et les facteurs de compression plus élevés nécessitent un ajustement par l'utilisateur.
- Sous vLLM, la compression PLE ne prend en charge que la parallélisation tensorielle 1 ; les chiffres de mémoire et de vitesse ont été mesurés sur une seule RTX 4090 et sont rapportés par les auteurs.
Éditeur : Notez que « 100 fois » fait référence à la table d'embeddings elle-même, et non au modèle entier ; l'économie totale de mémoire vidéo est d'environ 30 %.