🐋DeepSeek-V3.1: Wie man lokal ausführt
Ein Leitfaden, wie man DeepSeek-V3.1 und Terminus auf deinem eigenen lokalen Gerät ausführt!
DeepSeeks V3.1 und Terminus Update führt hybrides Reasoning-Inference ein und kombiniert „Think“ und „Non-Think“ in einem Modell. Das vollständige Modell mit 671B 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 habt nach härteren Benchmarks gefragt, also zeigen wir die Ergebnisse von Aider Polyglot! Unser dynamisches 3-Bit DeepSeek V3.1 GGUF erreicht 75.6%, und übertrifft damit viele SOTA-LLMs in Vollpräzision. Mehr lesen.
Unsere DeepSeek-V3.1-GGUFs enthalten Unsloth Korrekturen am Chat-Template für von llama.cpp unterstützte Backends.
Alle Uploads verwenden Unsloth Dynamic 2.0 für SOTA 5-Shot MMLU- und KL-Divergenz-Performance, was bedeutet, dass Sie quantisierte DeepSeek-LLMs mit minimalem Genauigkeitsverlust ausführen und feinabstimmen können.
Tutorial-Navigation:
In llama.cpp ausführenIn Ollama/Open WebUI ausführen
⚙️ Empfohlene Einstellungen
Die 1-Bit-Dynamik-Quant 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 – das nutzt unsere festen Chat-Vorlagen und aktiviert die korrekte Vorlage! Sie können falsche Ergebnisse erhalten, wenn Sie --jinja
Die 2-Bit-Quants passen auf 1x 24-GB-GPU (mit in den RAM ausgelagerten MoE-Schichten). Rechnen Sie mit etwa 5 Tokens/s mit diesem Setup, wenn Sie zusätzlich 128 GB RAM haben. Es wird empfohlen, mindestens 226 GB RAM zu haben, um diese 2-Bit-Version auszuführen. Für optimale Leistung benötigen Sie mindestens 226 GB Unified Memory oder 226 GB kombinierte RAM+VRAM für 5+ Tokens/s. Um zu lernen, wie man die Generierungsgeschwindigkeit erhöht und längere Kontexte unterbringt, lesen Sie hier.
Obwohl nicht zwingend erforderlich, sollte für beste Leistung VRAM + RAM zusammen der Größe der Quants entsprechen, die Sie herunterladen. Wenn nicht, funktioniert Auslagerung auf Festplatte/SSD mit llama.cpp, nur die Inferenz wird langsamer sein.
🦋Fehlerbehebungen am Chat-Template
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 hybrides Reasoning-Modell, was bedeutet, dass Sie das Chat-Template ändern können, um Reasoning zu aktivieren. Das eingeführte Chat-Template
thinking = Truewährend andere Modelleenable_thinking = Trueverwenden. Wir haben die Option hinzugefügt,enable_thinkingstattdessen als Schlüsselwort zu verwenden.Der Jinja-Renderer von llama.cpp über minja erlaubt die Verwendung zusätzlicher Argumente im
.split()Befehl nicht, daher funktioniert die Verwendung von.split(text, 1)in Python, aber nicht in minja. Wir mussten das ändern, damit llama.cpp korrekt funktioniert, ohne Fehler zu verursachen. Sie erhalten den folgenden Fehler, wenn Sie andere Quants verwenden: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!
🐳Offizielle 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)
128K Kontextlänge oder weniger
Verwende
--jinjafür llama.cpp-Varianten – wir haben auch einige Probleme mit Chat-Vorlagen behoben!Verwende
enable_thinking = Trueum den Reasoning-/Thinking-Modus zu verwenden. Standardmäßig ist er auf Non-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 erzeugt DeepSeek V3.1 Antworten auf Anfragen im Non-Thinking-Modus. Anders als DeepSeek V3 führt es ein zusätzliches Token ein </think>.
Ein BOS wird erzwungen 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 überspringen, da es automatisch hinzugefügt wird.
📔 Non-Thinking-Modus (verwenden Sie thinking = Falseoder enable_thinking = False und standardmäßig ist es so eingestellt)
thinking = Falseoder enable_thinking = False und standardmäßig ist es so eingestellt)Erste Runde
Präfix: <|begin▁of▁sentence|>{system prompt}<|User|>{query}<|Assistant|></think>
Mit dem angegebenen Präfix erzeugt DeepSeek V3.1 Antworten auf Anfragen im Non-Thinking-Modus. Anders als DeepSeek V3 führt es ein zusätzliches Token ein </think>.
Multi-Turn
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 die Verkettung von Kontext und Präfix erhalten wir den korrekten Prompt für die Anfrage.
📚 Thinking-Modus (verwenden Sie thinking = Trueoder enable_thinking = True und standardmäßig ist es so eingestellt)
thinking = Trueoder enable_thinking = True und standardmäßig ist es so eingestellt)Erste Runde
Präfix: <|begin▁of▁sentence|>{system prompt}<|User|>{query}<|Assistant|><think>
Das Präfix des Thinking-Modus ähnelt DeepSeek-R1.
Multi-Turn
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>
Das Multi-Turn-Template ist dasselbe wie das Non-Thinking-Multi-Turn-Chat-Template. Das bedeutet, dass das Thinking-Token in der letzten Runde verworfen wird, aber das </think> in jeder Runde des Kontexts beibehalten wird.
🏹 Tool-Aufruf
Tool-Aufrufe werden im Non-Thinking-Modus unterstützt. Das Format ist:
<|begin▁of▁sentence|>{system prompt}{tool_description}<|User|>{query}<|Assistant|></think> wobei wir den tool_description-Bereich nach dem System-Prompt befüllen.
▶️DeepSeek-V3.1-Tutorials ausführen:
🦙 In Ollama/Open WebUI ausführen
Installieren Sie ollama falls Sie es noch nicht getan haben! Um weitere Varianten des Modells auszuführen, sehen Sie hier.
Führen Sie das Modell aus! Beachten Sie, dass Sie ollama servein einem anderen Terminal aufrufen können, falls es fehlschlägt! Wir enthalten alle unsere Korrekturen und vorgeschlagenen Parameter (temperature usw.) in params in unserem Hugging-Face-Upload!
(NEU) Um das vollständige R1-0528-Modell in Ollama auszuführen, können Sie unsere TQ1_0 (170GB Quant) verwenden:
Um andere Quants auszuführen, müssen Sie zuerst die geteilten GGUF-Dateien zu einer einzigen zusammenführen, wie im folgenden Code. Danach müssen Sie das Modell lokal ausführen.
Open WebUI hat außerdem ein Schritt-für-Schritt-Tutorial zum Ausführen von R1 erstellt, und für V3.1 müssen Sie nur R1 durch den neuen V3.1-Quant ersetzen.
✨ In llama.cpp ausführen
Hole dir die neueste llama.cpp auf GitHub hier. Du kannst auch den untenstehenden Build-Anweisungen 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 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 gespeichert wird. Denken Sie daran, dass das Modell nur eine maximale Kontextlänge von 128K hat.
Bitte probiere -ot ".ffn_.*_exps.=CPU" verwenden, um alle MoE-Layer auf die CPU auszulagern! Dadurch können Sie effektiv alle Nicht-MoE-Layer auf 1 GPU unterbringen, was die Generierungsgeschwindigkeit verbessert. Sie können den Regex-Ausdruck anpassen, um mehr Layer 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 die MoE-Layer für Up- und Down-Projektionen aus.
Versuchen Sie -ot ".ffn_(up)_exps.=CPU" wenn Sie noch mehr GPU-Speicher haben. Dies lagert nur die MoE-Layer für Up-Projektionen aus.
Und schließlich lagern Sie alle Layer aus via -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-Layer auszulagern, aber nur ab der 6. Schicht.
Lade das Modell herunter über (nach der Installation von pip install huggingface_hub hf_transfer ). Du kannst UD-Q2_K_XL (dynamisches 2-Bit-Quant) oder andere quantisierte Versionen wie Q4_K_M . Wir empfehlen unser dynamisches 2,7-Bit-Quant UD-Q2_K_XL zu verwenden, um Größe und Genauigkeit auszubalancieren.
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 GPU-Offloading, also für wie viele Layer. Versuchen Sie, dies anzupassen, wenn Ihrem GPU-Speicher der Platz ausgeht. Entfernen Sie es auch, wenn Sie nur CPU-Inferenz haben.
Holen Sie sich die 1-Bit-Version (170 GB), wenn Sie nicht genügend kombinierten RAM und VRAM haben:
✨ Bereitstellen mit llama-server und der Completion-Bibliothek von OpenAI
Um llama-server für die Bereitstellung zu verwenden, nutzen Sie folgenden Befehl:
Verwenden Sie anschließend die Python-Bibliothek von OpenAI nach pip install openai :
💽Modell-Uploads
ALLE unsere Uploads - einschließlich derjenigen, die nicht auf imatrix-basiert oder dynamisch sind, verwenden unseren Kalibrierungsdatensatz, der speziell für Konversations-, Coding- und Sprachaufgaben optimiert ist.
Die vollständigen DeepSeek-V3.1-Modell-Uploads unten:
Wir haben auch IQ4_NL und Q4_1 Quants hochgeladen, die speziell auf ARM- bzw. Apple-Geräten schneller laufen.
Wir haben auch Versionen in BF16-Formatund originalem FP8-(Float8)-Format.
🏂 Die Generierungsgeschwindigkeit verbessern
Wenn Sie mehr VRAM haben, können Sie versuchen, mehr MoE-Layer oder ganze Layer auszulagern.
Normalerweise -ot ".ffn_.*_exps.=CPU" lagert alle MoE-Layer auf die CPU aus! Dadurch können Sie effektiv alle Nicht-MoE-Layer auf 1 GPU unterbringen, was die Generierungsgeschwindigkeit verbessert. Sie können den Regex-Ausdruck anpassen, um mehr Layer 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 die MoE-Layer für Up- und Down-Projektionen aus.
Versuchen Sie -ot ".ffn_(up)_exps.=CPU" wenn Sie noch mehr GPU-Speicher haben. Dies lagert nur die MoE-Layer für Up-Projektionen 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-Layer auszulagern, aber nur ab der 6. Schicht.
Die neueste llama.cpp-Version führt außerdem einen High-Throughput-Modus 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 den VRAM-/RAM-Datenverkehr zu reduzieren, was den Generierungsprozess ebenfalls beschleunigen kann.
📐Wie man langen Kontext unterbringt (volle 128K)
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 Generierungsgeschwindigkeit aufgrund des geringeren RAM-/VRAM-Datenverkehrs erhöhen. Die zulässigen Optionen für die K-Quantisierung (Standard ist f16) sind unten aufgeführt.
--cache-type-k f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1
Sie sollten die _1 Varianten verwenden, um die Genauigkeit etwas zu erhöhen, auch wenn es etwas langsamer ist. Zum Beispiel q4_1, q5_1
Sie können auch den V-Cache quantisieren, aber dafür müssen Sie llama.cpp mit Flash Attention-Unterstützung kompilieren via -DGGML_CUDA_FA_ALL_QUANTS=ON , und--flash-attn verwenden, 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 :
verwenden
Zuletzt aktualisiert
War das hilfreich?

