Final optimization: from ~10 tok/s to ~15 tok/s on DeepSeek-V4-Flash-0731 at 128K ctx - 1 RTX 3090
Mirrored from r/LocalLLaMA for archival readability. Support the source by reading on the original site.
| 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
Paramètres communsCes 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 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 ctxQuantification : 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érationRAM 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 ctxQuantification : 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érationRAM 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 ctxQuantification : 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érationVRAM 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 ctxQuantification : 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érationRAM 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 :
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. [link] [comments] |
Discussion (0)
Sign in to join the discussion. Free account, 30 seconds — email code or GitHub.
Sign in →No comments yet. Sign in and be the first to say something.