🌠Qwen3-Coder: Lokal ausführen
Führe Qwen3-Coder-30B-A3B-Instruct und 480B-A35B lokal mit Unsloths Dynamic-Quants aus.
Qwen3-Coder ist Qwens neue Reihe von Coding-Agent-Modellen, verfügbar in 30B (Qwen3-Coder-Flash) und 480B Parametern. Qwen3-480B-A35B-Instruct erreicht eine SOTA-Coding-Performance und konkurriert mit Claude Sonnet-4, GPT-4.1 und Kimi K2, mit 61,8 % auf Aider Polygot und Unterstützung für einen 256K- (auf 1M erweiterbaren) Token-Kontext.
Wir haben Qwen3-Coder außerdem mit nativer 1M-Kontextlänge hochskaliert mit YaRN sowie vollständigen 8-Bit- und 16-Bit-Versionen hochgeladen. Unsloth unterstützt jetzt auch Fine-Tuning und RL von Qwen3-Coder.
UPDATE: Wir haben das Tool-Calling für Qwen3-Coder behoben! Ihr könnt Tool-Calling jetzt nahtlos in llama.cpp, Ollama, LMStudio, Open WebUI, Jan usw. verwenden. Dieses Problem war universell und betraf alle Uploads (nicht nur Unsloth), und wir haben die Qwen-Team über unsere Korrekturen informiert! Mehr lesen
30B-A3B ausführen480B-A35B ausführen
Funktionieren Unsloth Dynamic Quants sie? Ja, und zwar sehr gut. In unabhängigen Tests auf dem Aider-Polyglot-Benchmark kam die UD-Q4_K_XL (276GB) dynamische Quantisierung vollständigen bf16 (960GB) des Qwen3-Coder-Modells nahezu gleich und erreichte 60,9 % gegenüber 61,8 %. Weitere Details hier.
Qwen3 Coder - Unsloth Dynamic 2.0 GGUFs:
🖥️ Qwen3-Coder ausführen
Unten sind Anleitungen für die 30B-A3B und 480B-A35B Varianten des Modells.
⚙️ Empfohlene Einstellungen
Qwen empfiehlt für beide Modelle diese Inferenz-Einstellungen:
temperature=0.7, top_p=0.8, top_k=20, repetition_penalty=1.05
Temperatur von 0,7
Top_K von 20
Min_P von 0,00 (optional, aber 0,01 funktioniert gut; der Standardwert in llama.cpp ist 0,1)
Top_P von 0,8
Wiederholungsstrafe von 1,05
Chat-Vorlage:
<|im_start|>user Hey da!<|im_end|> <|im_start|>assistant Was ist 1+1?<|im_end|> <|im_start|>user 2<|im_end|> <|im_start|>assistantEmpfohlene Kontextausgabe: 65.536 Tokens (kann erhöht werden). Details hier.
Chat-Vorlage/Prompt-Format mit nicht gerenderten Zeilenumbrüchen
Chat-Vorlage für Tool-Calling (Aktuelle Temperatur für San Francisco abrufen). Weitere Details dazu, wie Tool-Aufrufe formatiert werden.
Zur Erinnerung: Dieses Modell unterstützt nur den Nicht-Denkmodus und erzeugt keine <think></think> Blöcke in seiner Ausgabe. Inzwischen ist das Angeben von enable_thinking=False nicht mehr erforderlich.
Qwen3-Coder-30B-A3B-Instruct ausführen:
Um Inferenzgeschwindigkeiten von 6+ Tokens pro Sekunde für unsere dynamische 4-Bit-Quantisierung zu erreichen, solltet ihr mindestens 18 GB Unified Memory (kombinierter VRAM und RAM) oder 18 GB Systemspeicher allein haben. Als Faustregel gilt: Euer verfügbarer Speicher sollte der Größe des verwendeten Modells entsprechen oder sie übertreffen. Z. B. benötigt die UD_Q8_K_XL-Quantisierung (volle Präzision), die 32,5 GB groß ist, mindestens 33 GB Unified Memory (VRAM + RAM) oder 33 GB RAM für optimale Leistung.
HINWEIS: Das Modell kann mit weniger Speicher als seiner Gesamtgröße ausgeführt werden, aber das verlangsamt die Inferenz. Der maximale Speicher wird nur für die höchste Geschwindigkeit benötigt.
Da dies ein Nicht-Denk-Modell ist, muss man thinking=False nicht setzen, und das Modell erzeugt keine <think> </think> Blöcke.
Befolgt die oben genannten Best Practices. Sie sind dieselben wie beim 480B-Modell.
🦙 Ollama: Tutorial zum Ausführen von Qwen3-Coder-30B-A3B-Instruct
Installieren
ollamafalls ihr das noch nicht getan habt! Ihr könnt nur Modelle bis zu einer Größe von 32B ausführen.
Führt das Modell aus! Beachtet, dass ihr
ollama servein einem anderen Terminal aufrufen könnt, falls es fehlschlägt! Wir enthalten alle unsere Korrekturen und vorgeschlagenen Parameter (Temperatur usw.) inparamsin unserem Hugging-Face-Upload!
✨ Llama.cpp: Tutorial zum Ausführen von Qwen3-Coder-30B-A3B-Instruct
Erhalten Sie das neueste
llama.cppstandardmäßig GitHub hier. Sie können auch die Build-Anweisungen unten befolgen. Ändern Sie-DGGML_CUDA=ONauf-DGGML_CUDA=OFFwenn Sie keine GPU haben oder nur CPU-Inferenz möchten. Für Apple Mac / Metal-Geräte, setzen Sie-DGGML_CUDA=OFFund fahren Sie dann wie üblich fort - Metal-Unterstützung ist standardmäßig aktiviert.
Ihr könnt direkt von HuggingFace ziehen über:
Ladet das Modell herunter über (nach der Installation von
pip install huggingface_hub hf_transfer). Ihr könnt UD_Q4_K_XL oder andere quantisierte Versionen auswählen. Falls Downloads hängen bleiben, siehe Hugging Face Hub, XET-Debugging
Qwen3-Coder-480B-A35B-Instruct ausführen:
Um Inferenzgeschwindigkeiten von 6+ Tokens pro Sekunde für unsere 1-Bit-Quantisierung zu erreichen, empfehlen wir mindestens 150 GB Unified Memory (kombinierter VRAM und RAM) oder 150 GB Systemspeicher allein. Als Faustregel gilt: Euer verfügbarer Speicher sollte der Größe des verwendeten Modells entsprechen oder sie übertreffen. Z. B. benötigt die Q2_K_XL-Quantisierung, die 180 GB groß ist, mindestens 180 GB Unified Memory (VRAM + RAM) oder 180 GB RAM für optimale Leistung.
HINWEIS: Das Modell kann mit weniger Speicher als seiner Gesamtgröße ausgeführt werden, aber das verlangsamt die Inferenz. Der maximale Speicher wird nur für die höchste Geschwindigkeit benötigt.
Befolgt die oben genannten Best Practices. Sie sind dieselben wie beim 30B-Modell.
📖 Llama.cpp: Tutorial zum Ausführen von Qwen3-Coder-480B-A35B-Instruct
Für Coder-480B-A35B verwenden wir speziell Llama.cpp für optimierte Inferenz und eine Fülle von Optionen.
Wenn ihr eine vollständige unquantisierte Version in voller Präzisionmöchtet, verwendet unsere Q8_K_XL, Q8_0 oder BF16 Versionen!
Erhalten Sie das neueste
llama.cppstandardmäßig GitHub hier. Sie können auch die Build-Anweisungen unten befolgen. Ändern Sie-DGGML_CUDA=ONauf-DGGML_CUDA=OFFwenn Sie keine GPU haben oder nur CPU-Inferenz möchten.Ihr könnt llama.cpp direkt verwenden, um das Modell herunterzuladen, aber ich empfehle normalerweise die Verwendung von
huggingface_hubUm llama.cpp direkt zu verwenden, macht Folgendes:Oder ladet das Modell herunter über (nach der Installation von
pip install huggingface_hub hf_transfer). Ihr könnt UD-Q2_K_XL oder andere quantisierte Versionen auswählen..Führt das Modell im Gesprächsmodus aus und probiert irgendeinen Prompt aus.
Bearbeiten Sie
--threads -1für die Anzahl der CPU-Threads,--ctx-size262114 für die Kontextlänge,--n-gpu-layers 99für GPU-Offloading, wie viele Schichten. Versucht, dies anzupassen, falls euer GPU-Speicher voll läuft. Entfernt es außerdem, wenn ihr nur CPU-Inferenz habt.
Verwenden Sie -ot ".ffn_.*_exps.=CPU" um alle MoE-Schichten auf die CPU auszulagern! Dadurch könnt ihr effektiv alle Nicht-MoE-Schichten auf 1 GPU unterbringen und die Generierungsgeschwindigkeiten verbessern. Ihr könnt den Regex-Ausdruck anpassen, um mehr Schichten auszulagern, wenn ihr mehr GPU-Kapazität habt. Weitere Optionen werden diskutiert hier.
Vergesst auch das neue Qwen3-Update nicht. Führt Qwen3-235B-A22B-Instruct-2507 lokal mit llama.cpp aus.
🛠️ Die Generierungsgeschwindigkeit verbessern
Wenn ihr mehr VRAM habt, könnt ihr versuchen, mehr MoE-Schichten auszulagern oder ganze Schichten selbst auszulagern.
Normalerweise -ot ".ffn_.*_exps.=CPU" werden alle MoE-Schichten auf die CPU ausgelagert! Dadurch könnt ihr effektiv alle Nicht-MoE-Schichten auf 1 GPU unterbringen und die Generierungsgeschwindigkeiten verbessern. Ihr könnt den Regex-Ausdruck anpassen, um mehr Schichten auszulagern, wenn ihr mehr GPU-Kapazität habt.
Wenn ihr etwas mehr GPU-Speicher habt, versucht -ot ".ffn_(up|down)_exps.=CPU" Dies lagert die Up- und Down-Projektions-MoE-Schichten aus.
Versucht -ot ".ffn_(up)_exps.=CPU" wenn ihr noch mehr GPU-Speicher habt. Dies lagert nur die Up-Projektions-MoE-Schichten aus.
Ihr könnt 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, aber nur ab der 6. Schicht.
Der neueste llama.cpp-Version führt auch einen Hochdurchsatzmodus ein. Verwendet llama-parallel. Lest mehr darüber hier. Ihr könnt auch den KV-Cache auf 4 Bit quantisieren zum Beispiel, um die VRAM-/RAM-Bewegung zu reduzieren, was den Generierungsprozess ebenfalls beschleunigen kann.
📐So passt langer Kontext hinein (256K bis 1M)
Um längeren Kontext unterzubringen, könnt ihr KV-Cache-Quantisierung verwenden, um die K- und V-Caches auf niedrigere Bitbreiten zu quantisieren. Dies kann auch die Generierungsgeschwindigkeit erhöhen, da weniger RAM-/VRAM-Datenbewegung anfällt. Die zulässigen Optionen für die 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
Ihr solltet die _1 Varianten verwenden, um etwas höhere Genauigkeit zu erhalten, auch wenn es etwas langsamer ist. Zum Beispiel q4_1, q5_1
Ihr könnt auch den V-Cache quantisieren, aber dafür müsst ihr llama.cpp mit Unterstützung für Flash Attention kompilieren über -DGGML_CUDA_FA_ALL_QUANTS=ON, und verwendet --flash-attn aktivieren.
Wir haben über YaRN-Scaling außerdem GGUFs mit 1 Million Kontextlänge hochgeladen hier.
🧰 Korrekturen für Tool-Calling
Wir haben Tool-Calling über llama.cpp --jinja speziell für das Bereitstellen über llama-serverreparieren können! Wenn ihr unsere 30B-A3B-Quantisierungen herunterladet, müsst ihr euch keine Sorgen machen, da diese unsere Korrekturen bereits enthalten. Für das 480B-A35B-Modell bitte:
Ladet die erste Datei unter https://huggingface.co/unsloth/Qwen3-Coder-480B-A35B-Instruct-GGUF/tree/main/UD-Q2_K_XL für UD-Q2_K_XL herunter und ersetzt eure aktuelle Datei
Verwenden Sie
snapshot_downloadwie gewohnt wie in https://docs.unsloth.ai/basics/qwen3-coder-how-to-run-locally#llama.cpp-run-qwen3-tutorial, wodurch die alten Dateien automatisch überschrieben werdenVerwendet die neue Chat-Vorlage über
--chat-template-file. Siehe GGUF-Chat-Vorlage oder chat_template.jinjaAls Zusatz haben wir auch eine einzelne 150GB große UD-IQ1_M-Datei erstellt (damit Ollama funktioniert) unter https://huggingface.co/unsloth/Qwen3-Coder-480B-A35B-Instruct-GGUF/blob/main/Qwen3-Coder-480B-A35B-Instruct-UD-IQ1_M.gguf
Das sollte Probleme wie dieses lösen: https://github.com/ggml-org/llama.cpp/issues/14915
Tool-Calling verwenden
Um die Prompts für Tool-Calling zu formatieren, zeigen wir es an einem Beispiel.
Ich habe eine Python-Funktion erstellt namens get_current_temperature die die aktuelle Temperatur für einen Ort abrufen soll. Derzeit haben wir eine Platzhalterfunktion erstellt, die immer 21,6 Grad Celsius zurückgibt. Das solltet ihr in eine echte Funktion ändern!!
Dann verwendet den Tokenizer, um den gesamten Prompt zu erstellen:
💡Leistungs-Benchmarks
Diese offiziellen Benchmarks gelten für den vollständigen BF16-Checkpoint. Um dies zu verwenden, nutzt einfach die Q8_K_XL, Q8_0, BF16 Checkpoints, die wir hochgeladen haben - ihr könnt für diese Versionen ebenfalls weiterhin Tricks wie MoE-Offloading verwenden!
Hier sind die Benchmarks für das 480B-Modell:
Agentisches Programmieren
Terminal‑Bench
37.5
30.0
2.5
35.5
25.3
SWE‑bench Verified mit OpenHands (500 Turns)
69.6
–
–
70.4
–
SWE‑bench Verified mit OpenHands (100 Turns)
67.0
65.4
38.8
68.0
48.6
SWE‑bench Verified mit Private Scaffolding
–
65.8
–
72.7
63.8
SWE‑bench Live
26.3
22.3
13.0
27.7
–
SWE‑bench Multilingual
54.7
47.3
13.0
53.3
31.5
Multi‑SWE‑bench mini
25.8
19.8
7.5
24.8
–
Multi‑SWE‑bench flash
27.0
20.7
–
25.0
–
Aider‑Polyglot
61.8
60.0
56.9
56.4
52.4
Spider2
31.1
25.2
12.8
31.1
16.5
Agentische Browser‑Nutzung
WebArena
49.9
47.4
40.0
51.1
44.3
Mind2Web
55.8
42.7
36.0
47.4
49.6
Agentische Tool‑Nutzung
BFCL‑v3
68.7
65.2
56.9
73.3
62.9
TAU‑Bench Einzelhandel
77.5
70.7
59.1
80.5
–
TAU‑Bench Fluggesellschaft
60.0
53.5
40.0
60.0
–
Zuletzt aktualisiert
War das hilfreich?

