🐋DeepSeek-V3.1: Anleitung zum lokalen Betrieb
Eine Anleitung, wie man DeepSeek-V3.1 und Terminus auf dem eigenen lokalen Gerät ausführt!
DeepSeek’s V3.1 und Terminus Update führt hybrides Schlussfolgern ein, das „Denken“ und „Nicht-Denken“ in einem Modell kombiniert. Das vollständige 671B-Parameter-Modell benötigt 715 GB Festplattenspeicher. Die quantisierte dynamische 2-Bit-Version verwendet 245 GB (-75 % Größenreduzierung). GGUF: DeepSeek-V3.1-GGUF
NEU: DeepSeek-V3.1-Terminus jetzt verfügbar: DeepSeek-V3.1-Terminus-GGUF 10. Sept. 2025 Update: Ihr wolltet härtere Benchmarks, also präsentieren wir Aider Polyglot Ergebnisse! Unser dynamisches 3-Bit DeepSeek V3.1 GGUF erzielt 75.6%, und übertrifft damit viele SOTA-LLMs in voller Genauigkeit. Weiterlesen.
Unsere DeepSeek-V3.1 GGUFs enthalten Unsloth Chat-Template-Korrekturen für von llama.cpp unterstützte Backends.
Alle Uploads verwenden Unsloth Dynamic 2.0 für SOTA 5-shot MMLU- und KL-Divergenz-Leistung, was bedeutet, dass Sie quantisierte DeepSeek-LLMs mit minimalem Genauigkeitsverlust ausführen und feinabstimmen können.
Tutorial-Navigation:
In llama.cpp ausführenAusführen in Ollama/Open WebUI
⚙️ Empfohlene Einstellungen
Die 1-Bit dynamische Quantisierung TQ1_0 (1 Bit für unwichtige MoE-Schichten, 2–4 Bit für wichtige MoE-Schichten und 6–8 Bit für den Rest) benötigt 170 GB Festplattenspeicher – das funktioniert gut in einem 1x24GB-Karte und 128GB RAM mit MoE-Auslagerung – es funktioniert auch nativ in Ollama!
Sie müssen --jinja für llama.cpp-Quants verwenden – dies nutzt unsere festen Chat-Vorlagen und aktiviert die korrekte Vorlage! Sie könnten falsche Ergebnisse erhalten, wenn Sie nicht --jinja
Die 2-Bit-Quants passen in eine 1x 24GB GPU (mit MoE-Schichten, die in den RAM ausgelagert sind). Erwartet etwa 5 Tokens/s mit dieser Konfiguration, wenn ihr zusätzlich 128 GB RAM habt. Es wird empfohlen, mindestens 226 GB RAM zu haben, um dieses 2-Bit-Modell auszuführen. Für optimale Leistung benötigen Sie mindestens 226 GB Unified Memory oder 226 GB kombinierter RAM+VRAM für 5+ Tokens/s. Um zu lernen, wie man die Generationsgeschwindigkeit erhöht und längere Kontexte unterbringt, hier lesen.
Obwohl nicht zwingend erforderlich: Für beste Leistung sollten VRAM + RAM zusammen der Größe des heruntergeladenen Quants entsprechen. Falls nicht, funktioniert die Auslagerung auf Festplatte/SSD mit llama.cpp, nur die Inferenz wird langsamer sein.
🦋Fehlerbehebungen für Chat-Vorlage
Wir haben einige Probleme mit dem Chat-Template von DeepSeek V3.1 behoben, da sie in llama.cpp und anderen Engines nicht korrekt funktionierten:
DeepSeek V3.1 ist ein Hybrid-Reasoning-Modell, das heißt, Sie können das Chat-Template ändern, um Reasoning zu aktivieren. Das eingeführte Chat-Template
thinking = True, aber andere Modelle verwendenenable_thinking = True. Wir haben die Option hinzugefügt, stattdessenenable_thinkingals Schlüsselwort zu verwenden.llama.cpps jinja-Renderer über minja erlaubt nicht die Verwendung zusätzlicher Argumente in der
.split()Anweisung, sodass die Verwendung von.split(text, 1)in Python funktioniert, aber nicht in minja. Wir mussten dies ändern, damit llama.cpp korrekt funktioniert, ohne einen Fehler auszulösen. Beim Verwenden anderer Quants erhalten Sie folgenden Fehler: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 1908Wir haben es in all unseren Quants behoben!
🐳 Offiziell empfohlene Einstellungen
Laut DeepSeeksind dies die empfohlenen Einstellungen für die V3.1-Inferenz:
Setzen Sie die Temperatur auf 0,6 , um Wiederholungen und Inkohärenz zu reduzieren.
Setzen Sie top_p auf 0,95 (empfohlen)
Kontextlänge 128K oder weniger
Verwenden Sie
--jinjafür llama.cpp-Varianten – wir haben einige Probleme mit Chat-Vorlagen behoben!Verwenden Sie
enable_thinking = Trueum den Reasoning-/Denkmodus zu verwenden. Standardmäßig ist er auf Nicht-Reasoning gesetzt.
🔢 Chat-Template/Prompt-Format
Sie müssen nicht erzwingen <think>\n , aber Sie können es trotzdem hinzufügen! Mit dem angegebenen Präfix generiert DeepSeek V3.1 Antworten auf Anfragen im Nicht-Denkmodus. Im Gegensatz zu DeepSeek V3 führt es ein zusätzliches Token ein </think>.
Ein BOS wird zwangsweise hinzugefügt, und ein EOS trennt jede Interaktion. Um doppelte BOS-Token während der Inferenz zu vermeiden, solltest du nur tokenizer.encode(..., add_special_tokens = False) da das Chat-Template automatisch auch ein BOS-Token hinzufügt. Für llama.cpp / GGUF-Inferenz sollten Sie das BOS weglassen, da es automatisch hinzugefügt wird.
📔 Nicht-Denkmodus (verwenden thinking = Falseoder enable_thinking = False und ist standardmäßig aktiv)
thinking = Falseoder enable_thinking = False und ist standardmäßig aktiv)Erste Runde
Präfix: <|begin▁of▁sentence|>{system prompt}<|User|>{query}<|Assistant|></think>
Mit dem angegebenen Präfix generiert DeepSeek V3.1 Antworten auf Anfragen im Nicht-Denkmodus. Im Gegensatz zu DeepSeek V3 führt es ein zusätzliches Token ein </think>.
Mehr-Runden
Kontext: <|begin▁of▁sentence|>{system prompt}<|User|>{query}<|Assistant|></think>{response}<|end▁of▁sentence|>...<|User|>{query}<|Assistant|></think>{response}<|end▁of▁sentence|>
Präfix: <|User|>{query}<|Assistant|></think>
Durch das Aneinanderreihen des Kontexts und des Präfixes erhalten wir das korrekte Prompt für die Anfrage.
📚 Denkmodus (verwenden thinking = Trueoder enable_thinking = True und ist standardmäßig aktiv)
thinking = Trueoder enable_thinking = True und ist standardmäßig aktiv)Erste Runde
Präfix: <|begin▁of▁sentence|>{system prompt}<|User|>{query}<|Assistant|><think>
Das Präfix des Denkmodus ähnelt DeepSeek-R1.
Mehr-Runden
Kontext: <|begin▁of▁sentence|>{system prompt}<|User|>{query}<|Assistant|></think>{response}<|end▁of▁sentence|>...<|User|>{query}<|Assistant|></think>{response}<|end▁of▁sentence|>
Präfix: <|User|>{query}<|Assistant|><think>
Die Mehr-Runden-Vorlage ist dieselbe wie die Nicht-Denk-Mehr-Runden-Chatvorlage. Das bedeutet, dass das Denktoken in der letzten Runde entfernt wird, aber das </think> wird in jeder Runde des Kontexts beibehalten.
🏹 Tool-Aufruf
Tool-Aufrufe werden im Nicht-Denkmodus unterstützt. Das Format ist:
<|begin▁of▁sentence|>{system prompt}{tool_description}<|User|>{query}<|Assistant|></think> wobei wir die tool_description im Bereich nach dem System-Prompt einfügen.
▶️Führen Sie DeepSeek-V3.1 Tutorials aus:
🦙 Ausführen in Ollama/Open WebUI
Installieren Sie ollama falls Sie es noch nicht getan haben! Um weitere Varianten des Modells auszuführen, siehe hier.
Führen Sie das Modell aus! Beachten Sie, dass Sie aufrufen können ollama servein einem anderen Terminal, falls es fehlschlägt! Wir fügen alle unsere Fixes und vorgeschlagenen Parameter (Temperatur usw.) in params in unserem Hugging Face Upload!
&#xNAN;(NEU) Um das vollständige R1-0528-Modell in Ollama auszuführen, können Sie unser TQ1_0 (170 GB Quant) verwenden:
Um andere Quants auszuführen, müssen Sie zuerst die GGUF-Split-Dateien zu einer Datei wie im folgenden Code zusammenführen. Dann müssen Sie das Modell lokal ausführen.
Open WebUI hat auch ein Schritt-für-Schritt-Tutorial dazu erstellt, wie man R1 ausführt; für V3.1 müssen Sie lediglich R1 durch das neue V3.1-Quant ersetzen.
✨ In llama.cpp ausführen
Holen Sie sich die neueste llama.cpp auf GitHub hier. Sie können auch den unten stehenden Build-Anweisungen folgen. Ändern Sie -DGGML_CUDA=ON zu -DGGML_CUDA=OFF wenn Sie keine GPU haben oder nur CPU-Inferenz wünschen.
Wenn Sie llama.cpp direkt zum Laden von Modellen verwenden möchten, können Sie Folgendes tun: (:Q2_K_XL) ist der Quantisierungstyp. Sie können auch über Hugging Face herunterladen (Punkt 3). Dies ist ähnlich wie ollama run . Verwenden Sie export LLAMA_CACHE="folder" um zu erzwingen, dass llama.cpp an einem bestimmten Ort speichert. Denken Sie daran, dass das Modell nur eine maximale Kontextlänge von 128K hat.
Bitte probieren Sie aus -ot ".ffn_.*_exps.=CPU" um alle MoE-Schichten auf die CPU auszulagern! Dies ermöglicht es effektiv, alle Nicht-MoE-Schichten auf einer GPU unterzubringen und die Generationsgeschwindigkeit zu verbessern. Sie können den Regex-Ausdruck anpassen, um mehr Schichten auszulagern, wenn Sie mehr GPU-Kapazität haben.
Wenn Sie etwas mehr GPU-Speicher haben, versuchen Sie -ot ".ffn_(up|down)_exps.=CPU" Dies lagert up- und down-Projektions-MoE-Schichten aus.
Versuchen Sie -ot ".ffn_(up)_exps.=CPU" wenn Sie noch mehr GPU-Speicher haben. Dies lagert nur up-Projektions-MoE-Schichten aus.
Und schließlich alle Schichten auslagern über -ot ".ffn_.*_exps.=CPU" Dies verwendet am wenigsten VRAM.
Sie können den Regex auch anpassen, zum Beispiel -ot "\.(6|7|8|9|[0-9][0-9]|[0-9][0-9][0-9])\.ffn_(gate|up|down)_exps.=CPU" bedeutet, Gate-, Up- und Down-MoE-Schichten auszulagern, jedoch nur ab der 6. Schicht.
Laden Sie das Modell herunter über (nach Installation von pip install huggingface_hub hf_transfer ). Sie können wählen UD-Q2_K_XL (dynamische 2-Bit-Quantisierung) oder andere quantisierte Versionen wie Q4_K_M . Wir empfehlen die Verwendung unserer 2,7-Bit-dynamischen Quantisierung UD-Q2_K_XL um Größe und Genauigkeit auszugleichen.
Sie können --threads 32 für die Anzahl der CPU-Threads bearbeiten, --ctx-size 16384 für die Kontextlänge, --n-gpu-layers 2 für das GPU-Offloading für wie viele Schichten. Versuchen Sie, es anzupassen, wenn Ihre GPU nicht mehr genügend Speicher hat. Entfernen Sie es auch, wenn Sie nur CPU-Inferenz haben.
Holen Sie sich die 1-Bit-Version (170 GB), wenn Sie nicht genug kombinierten RAM und VRAM haben:
✨ Mit llama-server und OpenAIs Completion-Bibliothek bereitstellen
Um llama-server für die Bereitstellung zu verwenden, benutzen Sie den folgenden Befehl:
Verwenden Sie anschließend die OpenAI-Python-Bibliothek nachdem Sie pip install openai :
💽Model-Uploads
ALLE unsere Uploads - einschließlich jener, die nicht imatrix-basiert oder dynamisch sind, nutzen unseren Kalibrierungs-Datensatz, der speziell für Konversation, Programmierung und Sprachaufgaben optimiert ist.
Vollständige DeepSeek-V3.1 Modell-Uploads unten:
Wir haben auch hochgeladen IQ4_NL und Q4_1 Quants, die speziell für ARM- bzw. Apple-Geräte jeweils schneller laufen.
Wir haben außerdem Versionen in BF16-Formathochgeladen, und das ursprüngliche FP8 (float8)-Format.
🏂 Generationsgeschwindigkeit verbessern
Wenn Sie mehr VRAM haben, können Sie versuchen, mehr MoE-Schichten auszulagern oder ganze Schichten selbst auszulagern.
Normalerweise, -ot ".ffn_.*_exps.=CPU" lagert alle MoE-Schichten auf die CPU aus! Dies ermöglicht es effektiv, alle Nicht-MoE-Schichten auf einer GPU unterzubringen und die Generationsgeschwindigkeit zu verbessern. Sie können den Regex-Ausdruck anpassen, um mehr Schichten auszulagern, wenn Sie mehr GPU-Kapazität haben.
Wenn Sie etwas mehr GPU-Speicher haben, versuchen Sie -ot ".ffn_(up|down)_exps.=CPU" Dies lagert up- und down-Projektions-MoE-Schichten aus.
Versuchen Sie -ot ".ffn_(up)_exps.=CPU" wenn Sie noch mehr GPU-Speicher haben. Dies lagert nur up-Projektions-MoE-Schichten aus.
Sie können den Regex auch anpassen, zum Beispiel -ot "\.(6|7|8|9|[0-9][0-9]|[0-9][0-9][0-9])\.ffn_(gate|up|down)_exps.=CPU" bedeutet, Gate-, Up- und Down-MoE-Schichten auszulagern, jedoch nur ab der 6. Schicht.
Der neueste llama.cpp-Version führt auch einen Hochdurchsatzmodus ein. Verwenden Sie llama-parallel. Lesen Sie mehr darüber hier. Sie können auch den KV-Cache auf 4 Bit quantisieren zum Beispiel, um VRAM-/RAM-Bewegungen zu reduzieren, was den Generationsprozess auch beschleunigen kann.
📐Wie man langen Kontext unterbringt (vollständig 128K)
Um längere Kontexte unterzubringen, können Sie KV-Cache-Quantisierung verwenden, um die K- und V-Caches auf niedrigere Bits zu quantisieren. Dies kann auch die Generationsgeschwindigkeit aufgrund reduzierter RAM-/VRAM-Datenbewegung erhöhen. Die erlaubten Optionen für K-Quantisierung (Standard ist f16) umfassen die folgenden.
--cache-type-k f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1
Sie sollten die _1 Varianten für etwas erhöhte Genauigkeit verwenden, obwohl sie etwas langsamer sind. Zum Beispiel q4_1, q5_1
Sie können auch den V-Cache quantisieren, aber Sie müssen llama.cpp mit Flash Attention kompilieren Unterstützung über -DGGML_CUDA_FA_ALL_QUANTS=ON, und verwenden Sie --flash-attn um es zu aktivieren. Dann können Sie es zusammen mit --cache-type-k :
--cache-type-v f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1
Zuletzt aktualisiert
War das hilfreich?

