Tests et réglages détaillés pour optimiser DeepSeek-V4-Flash-0731 en GGUF sur une RTX 3090, atteignant ~15 tok/s à 128K de contexte grâce à différentes quantifications et paramètres de chargement.
J'ai consacré beaucoup de temps à l'optimisation de DeepSeek-V4-Flash-0731 GGUF sur une seule RTX 3090. Mon exigence absolue pour chaque configuration était la suivante : Le modèle doit rester utilisable avec une fenêtre de contexte de 128 000 jetons. J'ai testé les différentes combinaisons de déchargement GPU, de placement expert du CPU, de quantification du cache KV, de tailles de lots, de mappage mémoire et de répartition de la mémoire CPU/GPU. Les paramètres ci-dessous ont permis d'obtenir les meilleures performances pour chaque niveau de quantification sur mon système. Matériel et logiciel GPU : NVIDIA GeForce RTX 3090 24 Go CPU : AMD Ryzen 9 9900X RAM : 128 Go DDR5-5600 avec AMD EXPO activé Carte mère : MSI X870E Gaming Plus WiFi BIOS : Dernière version disponible Backend : llama.cpp b10291 Frontend : Interface web de génération de texte Système d'exploitation : Windows Paramètres communs Ces paramètres sont restés identiques pour les quatre tests : Chargeur de modèle : llama.cpp Couches GPU : 44 Taille du contexte : 128 000 Type de cache KV : q8_0 Mode de fractionnement : couche Emplacements parallèles : 1 Threads : 0 / automatique Lot de threads : 0 / automatique Taille du lot : 512 Taille du micro-lot : 512 Taille cible : 512 Mio StreamingLLM : désactivé Déchargement KV : activé no-mmap : activé mlock : désactivé NUMA : désactivé Décodage spéculatif : désactivé J’ai laissé la case CPU MoE décochée dans l’interface Web et contrôlé explicitement le placement des experts sur le CPU via --n-cpu-moe. Le principal paramètre ajusté pour chaque quantification était donc le nombre de couches MoE dont les tenseurs experts restaient sur le CPU. Test 1/4 — UD-IQ4_XS — ~10 tok/s à 128K ctx Quantification : UD-IQ4_XS Estimation de la VRAM avec déchargement complet : 135 412 Mio Option supplémentaire : --n-cpu-moe 38 Temps de chargement : 65,83 secondes Vitesse de génération moyenne : ~9,9 tok/s Utilisation de la mémoire pendant la génération RAM système : environ 122 / 125 Go VRAM dédiée : environ 23,7 / 24,0 Go Mémoire GPU partagée : environ 0,9 Go Utilisation du GPU : environ 81 % Utilisation du CPU : environ 59 % Fréquence du CPU : environ 5,36 GHz Il s’agit de la quantification la plus intensive testée, qui pousse la RAM système et la VRAM dédiée à leurs limites. Test 2/4 — UD-IQ3_S — ~12,1 tok/s à 128K ctx Quantification : UD-IQ3_S Estimation de la VRAM avec déchargement complet : 115 330 Mio Option supplémentaire : --n-cpu-moe 38 Temps de chargement : 52,76 secondes Vitesse de génération moyenne : ~12,1 tok/s Utilisation de la mémoire pendant la génération RAM système : environ 105 / 125 Go VRAM dédiée : environ 22,1 / 24,0 Go Utilisation du GPU : environ 85 % Utilisation du CPU : environ 55 % Fréquence du CPU : environ 5,35 GHz UD-IQ3_S offre un gain de vitesse de génération d'environ 22 % par rapport à UD-IQ4_XS, tout en réduisant l'utilisation de la RAM d'environ 17 Go. Test 3/4 — UD-IQ3_XXS — ~12,5 tok/s à 128K ctx Quantification : UD-IQ3_XXS Estimation de la VRAM entièrement déchargée : 103 763 Mio Option supplémentaire : --n-cpu-moe 37 Temps de chargement : 47,76 secondes Vitesse de génération moyenne : ~12,5 tok/s Utilisation de la mémoire pendant la génération VRAM dédiée : environ 22–23 Go pendant l’exécution Activité du GPU : maintenue à un niveau élevé avant l’arrêt de la génération La capture d’écran du Gestionnaire des tâches a été prise immédiatement après la fin de l’exécution, comme l’indique la chute brutale de l’utilisation du GPU et de la VRAM allouée. La valeur affichée de 14 Go de RAM système n’est donc pas représentative de l’utilisation de la mémoire pendant la génération. Il est intéressant de noter que, sur cette configuration, l'UD-IQ3_XXS n'est que d'environ 0,4 tok/s plus rapide que l'UD-IQ3_S. La réduction du poids du modèle ne se traduit pas par une augmentation proportionnelle de la vitesse de décodage. Test 4/4 — UD-IQ2_M — ~14,9 tok/s à 128K ctx Quantification : UD-IQ2_M Estimation de la VRAM avec déchargement complet : 90 812 Mio Option supplémentaire : --n-cpu-moe 36 Temps de chargement : 42,72 secondes Vitesse de génération moyenne : ~14,9 tok/s Utilisation de la mémoire pendant la génération RAM système : environ 81 / 125 Go VRAM dédiée : environ 22,6 / 24,0 Go Utilisation du GPU : environ 91 % Utilisation du CPU : environ 61 % Fréquence du CPU : environ 5,27 GHz Il s’agissait de la configuration testée la plus rapide, atteignant près de 15 tok/s tout en conservant la même configuration de contexte de 128K et le même cache KV Q8_0. L'optimisation la plus importante a consisté à trouver le juste équilibre entre : conserver les composants denses et non experts sur le GPU ; conserver le cache KV Q8_0 déporté sur le GPU ; déplacer uniquement le nombre requis de tenseurs experts MoE vers la RAM système ; remplir la majeure partie de la VRAM de la RTX 3090 sans provoquer d'erreur de mémoire insuffisante. La valeur optimale de --n-cpu-moe varie selon la taille de chaque quantification : UD-IQ4_XS : --n-cpu-moe 38 UD-IQ3_S : --n-cpu-moe 38 UD-IQ3_XXS : --n-cpu-moe 37 UD-IQ2_M : --n-cpu-moe 36 Les résultats montrent également que la réduction de la taille de la quantification n’entraîne pas des gains de vitesse parfaitement linéaires. UD-IQ3_S et UD-IQ3_XXS présentent des performances assez similaires, tandis que UD-IQ2_M offre le gain le plus important et atteint une vitesse de génération environ 50 % supérieure à celle de UD-IQ4_XS. Cette comparaison porte uniquement sur les performances de génération et l’utilisation de la mémoire. Je n’ai pas encore inclus de comparaison contrôlée de la qualité ou de la précision entre les quatre quantifications.
User shares optimization benchmarks for DeepSeek-V4-Flash (Q2_K) running on an RTX 5090 using a fork of llama.cpp, achieving 21.3 tokens/s generation and 1 million context size.
DeepSeek V4 Flash (98GB) now runs up to 7 tokens per second on a single RTX 4060 Ti with CPU offloading, a 3x speed improvement over the previous week's 2 t/s.
The article details a customized quantized version of DeepSeek-V4-Flash with MTP self-speculation enabled, achieving significant speedups on dual RTX PRO 6000 Max-Q GPUs using a patched vLLM setup.
Technical write-up on running DeepSeek-V4-Flash-0731 with full 1M context on a single RTX 5090 + 256GB DDR5 desktop using vLLM with CPU/RAM offloading, achieving ~800 tps prefill and ~15 tps decode.
A user achieved a 29x speedup for DeepSeek V4 Flash inference on 4x RTX 3090 GPUs by optimizing llama.cpp, reducing a 23k prompt from 25 minutes to 53 seconds.