🐋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-GGUFarrow-up-right

circle-check

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!

circle-info

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.

circle-check

🦋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:

  1. 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 verwenden enable_thinking = True . Wir haben die Option hinzugefügt, stattdessen enable_thinking als Schlüsselwort zu verwenden.

  2. llama.cpps jinja-Renderer über minjaarrow-up-right 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 1908 Wir haben es in all unseren Quants behoben!

🐳Offiziell empfohlene Einstellungen

Laut DeepSeekarrow-up-rightsind 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 --jinja für llama.cpp-Varianten – wir haben einige Probleme mit Chat-Vorlagen behoben!

  • Verwende enable_thinking = True um 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)

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)

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

2

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:

3

OLLAMA_MODELS=unsloth ollama run hf.co/unsloth/GLM-4.7-GGUF:TQ1_0

4

Open WebUI hat ebenfalls ein Schritt-für-Schritt-Tutorialarrow-up-right 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

1

Hole dir die neueste llama.cpp auf GitHub hierarrow-up-right. 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.

2

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.

circle-check
3

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.

4

--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

5

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_NLarrow-up-right und Q4_1arrow-up-right Quants, die speziell für ARM- bzw. Apple-Geräte jeweils schneller laufen.

MoE Bits
Typ + Link
Platzbedarf auf Datenträger
Details

1,66bit

170GB

1,92/1,56bit

1,78bit

185GB

2,06/1,56bit

1,93bit

200GB

2.5/2.06/1.56

2,42bit

216GB

2,5/2,06bit

2,71bit

251GB

3,5/2,5bit

3,12bit

273GB

3,5/2,06bit

3,5bit

296GB

4,5/3,5bit

4,5bit

384GB

5,5/4,5bit

5,5bit

481GB

6,5/5,5bit

Wir haben auch Versionen in BF16-Formatarrow-up-righthochgeladen, und originale FP8 (float8)-Formatarrow-up-right.

🏂 "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-Versionarrow-up-right führt außerdem einen Hochdurchsatzmodus ein. Verwenden Sie llama-parallel. Lesen Sie mehr darüber hierarrow-up-right. 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?