🐋DeepSeek-V3.1: Wie man lokal ausführt
Eine Anleitung, wie man DeepSeek-V3.1 und Terminus auf dem eigenen lokalen Gerät ausführt!
DeepSeeks V3.1 und Terminus Update führt hybrides Schlussfolgern ein und kombiniert „Denken“ und „Nicht-Denken“ in einem Modell. Das vollständige Modell mit 671 Milliarden Parametern benötigt 715 GB Festplattenspeicher. Die quantisierte dynamische 2-Bit-Version verwendet 245 GB (-75% Größenreduktion). GGUF: DeepSeek-V3.1-GGUF
NEU: DeepSeek-V3.1-Terminus jetzt verfügbar: DeepSeek-V3.1-Terminus-GGUF Update vom 10. Sept. 2025: Ihr wolltet härtere Benchmarks, also zeigen wir Aider-Polyglot-Ergebnisse! Unser dynamisches 3-Bit DeepSeek V3.1 GGUF erzielt 75.6%, und übertrifft damit viele SOTA-LLMs in voller Präzision. Mehr lesen.
Unsere DeepSeek-V3.1 GGUFs beinhalten 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, das heißt, Sie können quantisierte DeepSeek-LLMs mit minimalem Genauigkeitsverlust ausführen und feinabstimmen.
Tutorial-Navigation:
In llama.cpp ausführenAusführung 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 richtige Vorlage! Sie könnten falsche Ergebnisse erhalten, wenn Sie nicht --jinja
Die 2-Bit-Quants passen in eine 1x24GB-GPU (mit Auslagerung der MoE-Schichten in den RAM). Erwarten Sie mit dieser Konfiguration etwa 5 Tokens/s, wenn Sie zusätzlich 128 GB RAM haben. 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 einpasst, hier lesen.
Obwohl nicht zwingend, sollten VRAM + RAM kombiniert ungefähr der Größe des heruntergeladenen Quants entsprechen für beste Leistung. Wenn nicht, funktioniert Festplatten-/SSD-Auslagerung mit llama.cpp, die Inferenz wird nur langsamer sein.
🦋Fehlerbehebungen für Chat-Vorlagen
Wir haben einige Probleme mit dem Chat-Template von DeepSeek V3.1 behoben, da es in llama.cpp und anderen Engines nicht korrekt funktionierte:
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, daher funktioniert.split(text, 1)in Python, aber nicht in minja. Wir mussten das ändern, damit llama.cpp korrekt funktioniert, ohne einen Fehler zu erzeugen. 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:
Stellen Sie die Temperatur 0.6 ein, um Wiederholungen und Inkohärenz zu reduzieren.
Setzen Sie top_p auf 0.95 (empfohlen)
Kontextlänge 128K oder weniger
Verwende
--jinjafür llama.cpp-Varianten – wir haben einige Probleme mit Chat-Vorlagen behoben!Verwende
enable_thinking = Trueum den Reasoning-/Thinking-Modus zu verwenden. Standardmäßig ist es auf Nicht-Reasoning eingestellt.
🔢 Chat-Template/Prompt-Format
Sie müssen nicht zwingend <think>\n erzwingen, aber Sie können es weiterhin hinzufügen! Mit dem gegebenen Präfix generiert DeepSeek V3.1 Antworten auf Anfragen im Nicht-Denk-Modus. 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-Tokens während der Inferenz zu vermeiden, solltest du nur tokenizer.encode(..., add_special_tokens = False) da das Chat-Template auch automatisch ein BOS-Token hinzufügt. Für llama.cpp / GGUF-Inferenz sollten Sie das BOS weglassen, da es automatisch hinzugefügt wird.
📔 Nicht-Denk-Modus (verwenden Sie 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|>{Anfrage}<|Assistant|></think>
Mit dem gegebenen Präfix generiert DeepSeek V3.1 Antworten auf Anfragen im Nicht-Denk-Modus. Im Gegensatz zu DeepSeek V3 führt es ein zusätzliches Token ein </think>.
Mehrere Runden
Kontext: <|begin▁of▁sentence|>{System-Prompt}<|User|>{Anfrage}<|Assistant|></think>{Antwort}<|end▁of▁sentence|>...<|User|>{Anfrage}<|Assistant|></think>{Antwort}<|end▁of▁sentence|>
Präfix: <|User|>{Anfrage}<|Assistant|></think>
Durch Aneinanderreihung des Kontexts und des Präfixes erhalten wir das korrekte Prompt für die Anfrage.
📚 Denkmodus (verwenden Sie 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|>{Anfrage}<|Assistant|><think>
Das Präfix des Denkmodus ist dem von DeepSeek-R1 ähnlich.
Mehrere Runden
Kontext: <|begin▁of▁sentence|>{System-Prompt}<|User|>{Anfrage}<|Assistant|></think>{Antwort}<|end▁of▁sentence|>...<|User|>{Anfrage}<|Assistant|></think>{Antwort}<|end▁of▁sentence|>
Präfix: <|User|>{Anfrage}<|Assistant|><think>
Die Multi-Turn-Vorlage ist dieselbe wie die Multi-Turn-Chat-Vorlage im Nicht-Denk-Modus. Das bedeutet, das Denk-Token in der letzten Runde wird entfernt, aber das </think> bleibt in jeder Kontextrunde erhalten.
🏹 Tool-Aufruf
Tool-Aufrufe werden im Nicht-Denk-Modus unterstützt. Das Format ist:
<|begin▁of▁sentence|>{System-Prompt}{tool_description}<|User|>{Anfrage}<|Assistant|></think> wobei wir die tool_description im Bereich nach dem System-Prompt einfügen.
▶️DeepSeek-V3.1 Tutorials ausführen:
🦙 Ausführung in Ollama/Open WebUI
In Ollama ausführen Installieren Sie ollama falls Sie es noch nicht getan haben! Um weitere Varianten des Modells auszuführen,.
curl -fsSL https://ollama.com/install.sh | sh Führen Sie das Modell aus! Beachten Sie, dass Sieollama serve in einem anderen Terminal aufrufen können, wenn es fehlschlägt! Wir fügen alle unsere Fixes und vorgeschlagenen Parameter (Temperatur usw.) in params
(NEU) Um das vollständige R1-0528-Modell in Ollama auszuführen, können Sie unser TQ1_0 (170GB-Quant) verwenden:
OLLAMA_MODELS=unsloth ollama run hf.co/unsloth/GLM-4.7-GGUF:TQ1_0
Open WebUI hat ebenfalls ein Schritt-für-Schritt-Tutorial dazu erstellt, wie man R1 ausführt; für V3.1 müssen Sie nur R1 durch das neue V3.1-Quant ersetzen.
✨ In llama.cpp ausführen
Hole dir die neueste llama.cpp auf GitHub hier. Du kannst auch den Build-Anweisungen unten folgen. Ändere -DGGML_CUDA=ON zu -DGGML_CUDA=OFF wenn du keine GPU hast oder nur CPU-Inferenz möchtest.
Wenn du 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 (Punkt 3) herunterladen. Das ist ähnlich wie ollama run . Verwenden Sie export LLAMA_CACHE="folder" um llama.cpp zu zwingen, an einem bestimmten Ort zu speichern. Denken Sie daran, dass das Modell nur eine maximale Kontextlänge von 128K hat.
Bitte probieren Sie -ot ".ffn_.*_exps.=CPU" um alle MoE-Schichten auf die CPU auszulagern! Dadurch können Sie effektiv alle Nicht-MoE-Schichten auf einer GPU unterbringen, was die Generationsgeschwindigkeit verbessert. Sie können den Regex-Ausdruck anpassen, um mehr Schichten zu verschieben, 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 lagern Sie alle Schichten über -ot ".ffn_.*_exps.=CPU" aus.
Sie können auch den Regex 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, aber nur ab der 6. Schicht.
Laden Sie das Modell herunter (nach der Installation pip install huggingface_hub hf_transfer ). Sie können wählen ). Sie können auswählenUD- Q4_K_M Q4_K_XL . Wir empfehlen die Verwendung unseres 2,7-Bit Dynamic Quant UD-Q2_K_XL.
--include "*UD-Q2_K_XL*" # Verwenden Sie "*UD-TQ1_0*" für Dynamic 1bit Sie können --threads 32 für die Anzahl der CPU-Threads bearbeiten, --ctx-size 16384 für Kontextlänge, --n-gpu-layers 2
Holen Sie sich die 1-Bit-Version (170GB), wenn Sie nicht genug kombinierten RAM und VRAM haben:
OLLAMA_MODELS=unsloth ollama run merged_file.gguf
✨ Mit llama-server und OpenAIs Completion-Bibliothek bereitstellen
--port 8001 \ pip install openai :
💽Model-Uploads
ALLE unsere Uploads - einschließlich derjenigen, die nicht imatrix-basiert oder dynamisch sind, nutzen unseren Kalibrierungsdatensatz, der speziell für Konversations-, Coding- und Sprachaufgaben optimiert ist.
Vollständige DeepSeek-V3.1 Modell-Uploads unten:
Wir haben außerdem hochgeladen IQ4_NL und Q4_1 Quants, die speziell für ARM- bzw. Apple-Geräte jeweils schneller laufen.
Wir haben auch Versionen in BF16-Formathochgeladen, und originale FP8 (float8)-Format.
🏂 "content": [{"type": "text", "text": "Erstelle eine Fibonacci-Funktion in Python und finde fib(20)."}],
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 effektiv, alle Nicht-MoE-Schichten auf 1 GPU unterzubringen und verbessert die Generationsgeschwindigkeit. Sie können den Regex-Ausdruck anpassen, um mehr Schichten unterzubringen, 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 auch den Regex 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, aber nur ab der 6. Schicht.
Die neueste llama.cpp-Version führt außerdem einen Hochdurchsatzmodus ein. Verwenden Sie llama-parallel. Lesen Sie mehr darüber hier. Sie können auch den KV-Cache z. B. auf 4 Bit quantisieren, den KV-Cache auf 4 Bit quantisieren
zum Beispiel, um VRAM-/RAM-Bewegungen zu reduzieren, was den Generationsprozess ebenfalls beschleunigen kann.
Um längeren Kontext unterzubringen, können Sie KV-Cache-Quantisierung verwenden, um die K- und V-Caches auf niedrigere Bits zu quantisieren. Dies kann auch die Generationsgeschwindigkeit erhöhen aufgrund reduzierter RAM-/VRAM-Datenbewegungen. Die erlaubten Optionen für K-Quantisierung (Standard ist f16) umfassen die untenstehenden.
--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 via -DGGML_CUDA_FA_ALL_QUANTS=ON, und verwenden --flash-attn --flash-attn um es zu aktivieren. Dann können Sie es zusammen mit :
--cache-type-k verwenden, und
Zuletzt aktualisiert
War das hilfreich?

