🐋DeepSeek-V3.1 : Comment l'exécuter localement
Un guide sur la façon d'exécuter DeepSeek-V3.1 et Terminus sur votre propre appareil local !
V3.1 de DeepSeek et Terminus la mise à jour introduit un raisonnement hybride en inférence, combinant « think » et « non-think » en un seul modèle. Le modèle complet de 671B paramètres nécessite 715 Go d’espace disque. La version dynamique quantifiée 2 bits utilise 245 Go (réduction de taille de -75 %). GGUF : DeepSeek-V3.1-GGUF
NOUVEAU : DeepSeek-V3.1-Terminus est maintenant disponible : DeepSeek-V3.1-Terminus-GGUF Mise à jour du 10 sept. 2025 : Vous avez demandé des benchmarks plus difficiles, alors nous présentons les résultats d’Aider Polyglot ! Notre DeepSeek V3.1 GGUF dynamique 3 bits obtient 75.6%, surpassant de nombreux LLM SOTA en précision complète. En savoir plus.
Nos GGUF DeepSeek-V3.1 incluent les correctifs de template de chat de chat pour les backends pris en charge par llama.cpp.
Tous les fichiers téléversés utilisent Unsloth Dynamic 2.0 pour des performances SOTA en MMLU 5-shot et en divergence KL, ce qui signifie que vous pouvez exécuter et fine-tuner des LLM DeepSeek quantifiés avec une perte d’exactitude minimale.
Navigation des tutoriels :
Exécuter dans llama.cppExécuter dans Ollama/Open WebUI
⚙️ Paramètres recommandés
La quantification dynamique 1 bit TQ1_0 (1 bit pour les couches MoE non importantes, 2-4 bits pour les MoE importantes, et 6-8 bits pour le reste) utilise 170 Go d’espace disque - cela fonctionne bien sur une carte 1x24 Go et 128 Go de RAM avec le déchargement MoE - cela fonctionne aussi nativement dans Ollama!
Vous devez utiliser --jinja pour les quants llama.cpp - cela utilise nos templates de chat corrigés et active le bon template ! Vous pourriez obtenir des résultats incorrects si vous n’utilisez pas --jinja
Les quants 2 bits tiendront sur un GPU 1x 24 Go (avec les couches MoE déchargées vers la RAM). Attendez-vous à environ 5 jetons/s avec cette configuration si vous disposez aussi de 128 Go de RAM supplémentaires. Il est recommandé d’avoir au moins 226 Go de RAM pour exécuter ce modèle 2 bits. Pour des performances optimales, vous aurez besoin d’au moins 226 Go de mémoire unifiée ou de 226 Go combinés de RAM+VRAM pour 5+ jetons/s. Pour apprendre à augmenter la vitesse de génération et faire tenir des contextes plus longs, lisez ici.
Bien que ce ne soit pas obligatoire, pour de meilleures performances, faites en sorte que votre VRAM + RAM combinées soit égale à la taille du quant que vous téléchargez. Sinon, le déchargement sur disque dur / SSD fonctionnera avec llama.cpp, mais l’inférence sera plus lente.
🦋Correctifs de bug du template de chat
Nous avons corrigé quelques problèmes avec le template de chat de DeepSeek V3.1, car ils ne fonctionnaient pas correctement dans llama.cpp et d’autres moteurs :
DeepSeek V3.1 est un modèle de raisonnement hybride, ce qui signifie que vous pouvez modifier le template de chat pour activer le raisonnement. Le template de chat introduisait
thinking = True, mais d’autres modèles utilisentenable_thinking = True. Nous avons ajouté l’option d’utiliserenable_thinkingcomme mot-clé à la place.Le rendu jinja de llama.cpp via minja n’autorise pas l’utilisation d’arguments supplémentaires dans la commande
.split()donc utiliser.split(text, 1)fonctionne en Python, mais pas dans minja. Nous avons dû modifier cela pour que llama.cpp fonctionne correctement sans erreur. Vous obtiendrez l’erreur suivante lors de l’utilisation d’autres quants :terminate called after throwing an instance of 'std::runtime_error' what(): split method must have between 1 and 1 positional arguments and between 0 and 0 keyword arguments at row 3, column 1908Nous l’avons corrigé dans tous nos quants !
🐳Paramètres recommandés officiels
Selon DeepSeek, voici les paramètres recommandés pour l’inférence V3.1 :
Réglez la température à 0,6 pour réduire la répétition et l’incohérence.
Réglez top_p à 0,95 (recommandé)
longueur de contexte de 128K ou moins
Utilisez
--jinjapour les variantes llama.cpp - nous avons également corrigé certains problèmes de template de chat !Utilisez
enable_thinking = Truepour utiliser le mode raisonnement/pensée. Par défaut, il est réglé sur non-raisonnement.
🔢 Format du template de chat / prompt
Vous n’avez pas besoin de forcer <think>\n , mais vous pouvez quand même l’ajouter ! Avec le préfixe fourni, DeepSeek V3.1 génère des réponses aux requêtes en mode sans réflexion. Contrairement à DeepSeek V3, il introduit un jeton supplémentaire </think>.
Un BOS est ajouté de force, et un EOS sépare chaque interaction. Pour contrer les doubles jetons BOS lors de l’inférence, vous ne devez appeler que tokenizer.encode(..., add_special_tokens = False) car le template de chat ajoute automatiquement aussi un jeton BOS. Pour l’inférence llama.cpp / GGUF, vous devez ignorer le BOS puisqu’il sera ajouté automatiquement.
📔 Mode sans réflexion (utiliser thinking = Falseou enable_thinking = False et c’est la valeur par défaut)
thinking = Falseou enable_thinking = False et c’est la valeur par défaut)Premier tour
Préfixe : <|begin▁of▁sentence|>{system prompt}<|User|>{query}<|Assistant|></think>
Avec le préfixe fourni, DeepSeek V3.1 génère des réponses aux requêtes en mode sans réflexion. Contrairement à DeepSeek V3, il introduit un jeton supplémentaire </think>.
Tours multiples
Contexte : <|begin▁of▁sentence|>{system prompt}<|User|>{query}<|Assistant|></think>{response}<|end▁of▁sentence|>...<|User|>{query}<|Assistant|></think>{response}<|end▁of▁sentence|>
Préfixe : <|User|>{query}<|Assistant|></think>
En concaténant le contexte et le préfixe, nous obtenons le prompt correct pour la requête.
📚 Mode réflexion (utiliser thinking = Trueou enable_thinking = True et c’est la valeur par défaut)
thinking = Trueou enable_thinking = True et c’est la valeur par défaut)Premier tour
Préfixe : <|begin▁of▁sentence|>{system prompt}<|User|>{query}<|Assistant|><think>
Le préfixe du mode réflexion est similaire à DeepSeek-R1.
Tours multiples
Contexte : <|begin▁of▁sentence|>{system prompt}<|User|>{query}<|Assistant|></think>{response}<|end▁of▁sentence|>...<|User|>{query}<|Assistant|></think>{response}<|end▁of▁sentence|>
Préfixe : <|User|>{query}<|Assistant|><think>
Le template multi-tour est le même que le template de chat multi-tour sans réflexion. Cela signifie que le jeton de réflexion du dernier tour sera supprimé, mais le </think> est conservé à chaque tour du contexte.
🏹 Appel d’outils
L’appel d’outils est pris en charge en mode sans réflexion. Le format est :
<|begin▁of▁sentence|>{system prompt}{tool_description}<|User|>{query}<|Assistant|></think> où nous remplissons la zone tool_description après le prompt système.
▶️Exécuter les tutoriels DeepSeek-V3.1 :
🦙 Exécuter dans Ollama/Open WebUI
Installez ollama si ce n’est pas déjà fait ! Pour exécuter davantage de variantes du modèle, voir ici.
Exécutez le modèle ! Notez que vous pouvez appeler ollama servedans un autre terminal si cela échoue ! Nous incluons tous nos correctifs et paramètres suggérés (température, etc.) dans params dans notre téléversement sur Hugging Face !
(NOUVEAU) Pour le modèle DeepSeek-V3.1 dans Ollama, vous pouvez utiliser notre TQ1_0 (quant 170 Go) :
Pour exécuter d’autres quants, vous devez d’abord fusionner les fichiers GGUF découpés en un seul comme dans le code ci-dessous. Ensuite, vous devrez exécuter le modèle localement.
Open WebUI a également créé un tutoriel étape par étape sur la manière d’exécuter R1 et, pour V3.1, vous n’aurez qu’à remplacer R1 par le nouveau quant V3.1.
✨ Exécuter dans llama.cpp
Obtenez la dernière version de llama.cpp sur GitHub ici. Vous pouvez aussi suivre les instructions de compilation ci-dessous. Remplacez -DGGML_CUDA=ON par -DGGML_CUDA=OFF si vous n’avez pas de GPU ou si vous voulez simplement une inférence CPU.
Si vous voulez utiliser llama.cpp directement pour charger les modèles, vous pouvez faire ce qui suit : (:Q2_K_XL) est le type de quantification. Vous pouvez aussi télécharger via Hugging Face (point 3). Cela ressemble à ollama run . Utilisez export LLAMA_CACHE="folder" pour forcer llama.cpp à enregistrer dans un emplacement spécifique. N’oubliez pas que le modèle a une longueur de contexte maximale de 128K uniquement.
Veuillez essayer -ot ".ffn_.*_exps.=CPU" pour décharger toutes les couches MoE sur le CPU ! Cela permet en pratique de faire tenir toutes les couches non MoE sur 1 GPU, ce qui améliore les vitesses de génération. Vous pouvez personnaliser l’expression regex pour faire tenir davantage de couches si vous avez plus de capacité GPU.
Si vous avez un peu plus de mémoire GPU, essayez -ot ".ffn_(up|down)_exps.=CPU" Cela décharge les couches MoE de projection up et down.
Essayez -ot ".ffn_(up)_exps.=CPU" si vous avez encore plus de mémoire GPU. Cela ne décharge que les couches MoE de projection up.
Et enfin, déchargez toutes les couches via -ot ".ffn_.*_exps.=CPU" Cela utilise le moins de VRAM.
Vous pouvez aussi personnaliser la regex, par exemple -ot "\.(6|7|8|9|[0-9][0-9]|[0-9][0-9][0-9])\.ffn_(gate|up|down)_exps.=CPU" signifie décharger les couches MoE gate, up et down, mais seulement à partir de la 6e couche.
Téléchargez le modèle via (après avoir installé pip install huggingface_hub hf_transfer ). Vous pouvez choisir UD-Q2_K_XL (quant dynamique 2 bits) ou d’autres versions quantifiées comme Q4_K_M . Nous recommandons d’utiliser notre quant dynamique 2,7 bits UD-Q2_K_XL pour équilibrer taille et précision.
Vous pouvez modifier --threads 32 pour le nombre de threads CPU, --ctx-size 16384 pour la longueur de contexte, --n-gpu-layers 2 pour le déchargement GPU, selon le nombre de couches. Essayez d’ajuster si votre GPU est à court de mémoire. Supprimez-le aussi si vous n’avez qu’une inférence CPU.
Obtenez la version 1 bit (170 Go) si vous n’avez pas assez de RAM et de VRAM combinées :
✨ Déployer avec llama-server et la bibliothèque de complétion d’OpenAI
Pour utiliser llama-server pour le déploiement, utilisez la commande suivante :
Ensuite, utilisez la bibliothèque Python d’OpenAI après pip install openai :
💽Téléversements de modèles
TOUS nos téléversements - y compris ceux qui ne sont pas basés sur imatrix ou dynamiques, utilisent notre jeu de données d’étalonnage, spécialement optimisé pour les tâches conversationnelles, de code et de langue.
Téléversements du modèle complet DeepSeek-V3.1 ci-dessous :
Nous avons également téléversé IQ4_NL et Q4_1 des quants qui s’exécutent respectivement plus rapidement sur les appareils ARM et Apple.
Nous avons également téléversé des versions au format BF16, et au format original FP8 (float8).
🏂 Améliorer la vitesse de génération
Si vous avez plus de VRAM, vous pouvez essayer de décharger davantage de couches MoE, ou de décharger des couches entières.
Normalement, -ot ".ffn_.*_exps.=CPU" décharge toutes les couches MoE sur le CPU ! Cela permet en pratique de faire tenir toutes les couches non MoE sur 1 GPU, ce qui améliore les vitesses de génération. Vous pouvez personnaliser l’expression regex pour faire tenir davantage de couches si vous avez plus de capacité GPU.
Si vous avez un peu plus de mémoire GPU, essayez -ot ".ffn_(up|down)_exps.=CPU" Cela décharge les couches MoE de projection up et down.
Essayez -ot ".ffn_(up)_exps.=CPU" si vous avez encore plus de mémoire GPU. Cela ne décharge que les couches MoE de projection up.
Vous pouvez aussi personnaliser la regex, par exemple -ot "\.(6|7|8|9|[0-9][0-9]|[0-9][0-9][0-9])\.ffn_(gate|up|down)_exps.=CPU" signifie décharger les couches MoE gate, up et down, mais seulement à partir de la 6e couche.
Le dernier correctif de llama.cpp introduit aussi un mode haut débit. Utilisez llama-parallel. En savoir plus à ce sujet ici. Vous pouvez également quantifier le cache KV à 4 bits par exemple pour réduire les déplacements VRAM / RAM, ce qui peut aussi accélérer le processus de génération.
📐Comment faire tenir un long contexte (128K complet)
Pour faire tenir un contexte plus long, vous pouvez utiliser la quantification du cache KV pour quantifier les caches K et V avec moins de bits. Cela peut aussi augmenter la vitesse de génération grâce à la réduction des transferts de données RAM / VRAM. Les options autorisées pour la quantification K (la valeur par défaut est f16) sont les suivantes.
--cache-type-k f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1
Vous devriez utiliser les _1 variantes pour une précision légèrement meilleure, bien que ce soit un peu plus lent. Par exemple q4_1, q5_1
Vous pouvez aussi quantifier le cache V, mais vous devrez compiler llama.cpp avec la prise en charge de Flash Attention via -DGGML_CUDA_FA_ALL_QUANTS=ON, et utiliser --flash-attn pour l’activer. Ensuite, vous pouvez l’utiliser avec --cache-type-k :
--cache-type-v f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1
Mis à jour
Ce contenu vous a-t-il été utile ?

