For the complete documentation index, see llms.txt. This page is also available as Markdown.

🐳DeepSeek-V3-0324 : comment l'exécuter localement

Comment exécuter DeepSeek-V3-0324 localement en utilisant nos quants dynamiques qui récupèrent la précision

Veuillez consulter https://docs.unsloth.ai/basics/deepseek-r1-0528-how-to-run-locally (Mise à jour du 28 mai 2025) pour apprendre à faire tourner DeepSeek plus rapidement et plus efficacement !

DeepSeek remet ça ! Après la sortie de V3, R1 Zero et R1 en décembre 2024 et janvier 2025, DeepSeek a mis à jour ses checkpoints / modèles pour V3 et a publié une mise à jour de mars !

Selon DeepSeek, MMLU-Pro a bondi de +5,3 % à 81,2 %. GPQA +9,3 points de pourcentage. AIME + 19,8 % et LiveCodeBench + 10,0 % ! Ils ont fourni un graphique montrant comment ils se comparaient au précédent checkpoint V3 et à d'autres modèles comme GPT 4.5 et Claude Sonnet 3.7. Mais comment faire tourner localement un modèle de 671 milliards de paramètres ?

Bits MoE
Type
Taille sur disque
Précision
Lien
Détails

1,78 bit

IQ1_S

173 Go

D'accord

2,06/1,56 bit

1,93 bit

IQ1_M

183 Go

Correct

2.5/2.06/1.56

2,42 bit

IQ2_XXS

203 Go

Suggéré

2,5/2,06 bit

2,71 bit

Q2_K_XL

231 Go

Suggéré

3,5/2,5 bit

3,5 bit

Q3_K_XL

320 Go

Super

4,5/3,5 bit

4,5 bit

Q4_K_XL

406 Go

Excellent

5,5/4,5 bit

⚙️ Paramètres officiels recommandés

Selon DeepSeek, voici les paramètres recommandés pour l'inférence :

  • Température de 0,3 (Peut-être 0,0 pour le code comme vu ici)

  • Min_P de 0,00 (facultatif, mais 0,01 fonctionne bien, la valeur par défaut de llama.cpp est 0,1)

  • Modèle de conversation : <|User|>Créez un simple jeu Flappy Bird jouable en Python. Placez le jeu final dans une section markdown.<|Assistant|>

  • Un jeton BOS de <|begin▁of▁sentence|> est automatiquement ajouté lors de la tokenisation (ne l'ajoutez PAS manuellement !)

  • DeepSeek a mentionné utiliser un prompt système aussi (facultatif) - il est en chinois : Cet assistant est DeepSeek Chat, créé par DeepSeek.\nAujourd'hui, nous sommes le lundi 24 mars. ce qui se traduit par : L'assistant est DeepSeek Chat, créé par DeepSeek.\nAujourd'hui, nous sommes le lundi 24 mars.

  • Pour la quantification du cache KV, utilisez 8 bits, PAS 4 bits - nous avons constaté que c'était nettement moins performant.

📖 Tutoriel : Comment faire tourner DeepSeek-V3 dans llama.cpp

  1. Obtenez la dernière version llama.cpp sur GitHub ici. Vous pouvez également suivre les instructions de compilation ci-dessous. Modifiez -DGGML_CUDA=ON à -DGGML_CUDA=OFF si vous n'avez pas de GPU ou si vous souhaitez simplement une inférence CPU. Pour les appareils Apple Mac / Metal, définissez -DGGML_CUDA=OFF puis continuez comme d'habitude - la prise en charge de Metal est activée par défaut.

  1. Téléchargez le modèle via (après avoir installé pip install huggingface_hub hf_transfer ). Vous pouvez choisir UD-IQ1_S(quantification dynamique 1,78 bit) ou d'autres versions quantifiées comme Q4_K_M . Je recommande d'utiliser notre quantification dynamique 2,7 bits UD-Q2_K_XL pour équilibrer taille et précision. Plus de versions sur : https://huggingface.co/unsloth/DeepSeek-V3-0324-GGUF

  1. Exécutez le test Flappy Bird d'Unsloth comme décrit dans notre quantification dynamique 1,58 bit pour DeepSeek R1.

  2. 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 de combien de couches. Essayez de l'ajuster si votre GPU manque de mémoire. Supprimez-le aussi si vous faites une inférence uniquement CPU.

Si nous exécutons ce qui précède, nous obtenons 2 résultats très différents. Version standard 2 bits : Cliquez pour voir le résultat (avertissement de crise !) Version dynamique 2 bits : Voir le résultat ci-dessous :

Standard 2 bits. Échoue avec l'arrière-plan, échoue avec la collision

Dynamique 2 bits. Réussit à créer un jeu jouable.
  1. Comme DeepSeek-R1, V3 a 61 couches. Par exemple, avec un GPU de 24 Go ou un GPU de 80 Go, vous pouvez vous attendre à décharger après arrondi à l'entier inférieur (réduisez de 1 si cela dépasse la mémoire) :

Quantification
Taille du fichier
GPU de 24 Go
GPU de 80 Go
2 GPU de 80 Go

1,73 bit

173 Go

5

25

56

2,22 bit

183 Go

4

22

49

2,51 bit

212 Go

2

19

32

Exécution sur Mac / appareils Apple

Pour les appareils Apple Metal, faites attention à --n-gpu-layers. Si vous constatez que la machine manque de mémoire, réduisez cette valeur. Pour une machine avec 128 Go de mémoire unifiée, vous devriez pouvoir décharger environ 59 couches.

🎱 Test du heptagone

Nous testons également nos quantifications dynamiques via r/Localllama qui teste le modèle sur la création d'un moteur physique de base simulant des balles tournant dans un heptagone fermé en mouvement.

Le but est de faire tourner l'heptagone, et les balles à l'intérieur de l'heptagone doivent bouger.
Cover

Version 2 bits non dynamique. Échec - AVERTISSEMENT DE CRISE encore !

Cover

Dynamique 2 bits. Résout réellement correctement le puzzle de l'heptagone !!

Cover

Float8 original

La quantification dynamique 2,7 bits, qui ne fait que 230 Go, parvient réellement à résoudre le puzzle de l'heptagone ! La sortie complète pour les 3 versions (y compris le fp8 complet) est ci-dessous :

Code heptagone dynamique 2 bits
Code heptagone 2 bits non dynamique
Code de l'heptagone Float8

🕵️ Autres constats et conseils

  1. Nous constatons, d'après des tests empiriques, que l'utilisation d'une quantification plus faible du cache KV (4 bits) semble dégrader la qualité de génération — davantage de tests sont nécessaires, mais nous suggérons d'utiliser q8_0 la quantification du cache. L'objectif de la quantification est de prendre en charge des longueurs de contexte plus longues, puisque le cache KV utilise pas mal de mémoire.

  2. Nous avons constaté que le down_proj dans ce modèle est extrêmement sensible à la quantification. Nous avons dû refaire certaines de nos quantifications dynamiques qui utilisaient 2 bits pour down_proj et nous utilisons maintenant 3 bits comme minimum pour toutes ces matrices.

  3. L'utilisation de llama.cpp 's backend Flash Attention permet effectivement des vitesses de décodage un peu plus rapides. Utilisez -DGGML_CUDA_FA_ALL_QUANTS=ON lors de la compilation. Notez qu'il est également préférable de définir votre architecture CUDA comme indiqué dans https://developer.nvidia.com/cuda-gpus pour réduire les temps de compilation, puis définissez-la via -DCMAKE_CUDA_ARCHITECTURES="80"

  4. L'utilisation d'une min_p=0.01suffit probablement. llama.cppest par défaut à 0.1, ce qui n'est probablement pas nécessaire. Comme une température de 0.3 est de toute façon utilisée, nous aurons très probablement très peu de chances d'échantillonner des jetons à faible probabilité, donc supprimer les jetons très improbables est une bonne idée. DeepSeek recommande une température de 0.0 pour les tâches de codage.

Mis à jour

Ce contenu vous a-t-il été utile ?