🌠Qwen3-Coder: Anleitung zum lokalen Betrieb

Führe Qwen3-Coder-30B-A3B-Instruct und 480B-A35B lokal mit Unsloth Dynamic-Quants aus.

Qwen3-Coder ist Qwens neue Serie von Coding-Agent-Modellen, verfügbar in 30B (Qwen3-Coder-Flash) und 480B Parametern. Qwen3-480B-A35B-Instruct erreicht SOTA-Coding-Performance, die mit Claude Sonnet-4, GPT-4.1 und Kimi K2wetteifert, mit 61,8% auf Aider Polyglot und Unterstützung für einen Kontext von 256K (erweiterbar auf 1M) Tokens.

Wir haben außerdem Qwen3-Coder mit nativer 1M Kontextlänge erweitert durch YaRN sowie Vollpräzisions-8bit- und 16bit-Versionen hochgeladen. Unslotharrow-up-right unterstützt jetzt auch Fine-Tuning und RL von Qwen3-Coder.

circle-check

30B-A3B ausführen480B-A35B ausführen

circle-check

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 diese Inferenz-Einstellungen für beide Modelle:

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 Standard in llama.cpp ist 0,1)

  • Top_P von 0,8

  • Repetition Penalty von 1,05

  • Chat-Vorlage:

    {% code overflow="wrap" %}

    <|im_start|>user
    Hey there!<|im_end|>
    <|im_start|>assistant
    What is 1+1?<|im_end|>
    <|im_start|>user
    2<|im_end|>
    <|im_start|>assistant

    {% endcode %}

  • Empfohlene 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 (Abfrage der aktuellen Temperatur für San Francisco). Mehr Details dazu, wie man Tool-Aufrufe formatiert.

circle-info

Zur Erinnerung: Dieses Modell unterstützt nur den Non-Thinking-Modus und erzeugt keine <think></think> Blöcke in seiner Ausgabe. Gleichzeitig ist die Angabe von enable_thinking=False nicht mehr erforderlich.

Qwen3-Coder-30B-A3B-Instruct ausführen:

Um Inferenzgeschwindigkeiten von 6+ Tokens pro Sekunde für unsere Dynamic 4-Bit-Quantisierung zu erreichen, benötigen Sie mindestens 18GB vereinheitlichter Speicher (kombiniertes VRAM und RAM) oder 18GB Systemspeicher (RAM) allein. Als Faustregel sollte dein verfügbarer Speicher der Größe des verwendeten Modells entsprechen oder diese übersteigen. Z. B. erfordert der UD_Q8_K_XL-Quant (Vollpräzision), der 32,5GB groß ist, mindestens 33GB vereinheitlichten Speicher (VRAM + RAM) oder 33GB RAM für optimale Leistung benötigen.

HINWEIS: Das Modell kann mit weniger Speicher als seiner Gesamtgröße laufen, aber dies verlangsamt die Inferenz. Maximale Speicherkapazität wird nur für die schnellsten Geschwindigkeiten benötigt.

Da dies ein nicht-denkendes Modell ist, ist es nicht nötig, thinking=False zu setzen und das Modell generiert nicht <think> </think> Blöcke.

circle-info

Befolgen Sie die oben genannten Best Practices. Diese sind gleich wie beim 480B-Modell.

🦙 Ollama: Qwen3-Coder-30B-A3B-Instruct Tutorial ausführen

  1. Installieren Sie ollama wenn Sie es noch nicht getan haben! Sie können nur Modelle bis zu einer Größe von 32B ausführen.

  1. 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 hinzu!

Llama.cpp: Qwen3-Coder-30B-A3B-Instruct Tutorial ausführen

  1. Holen Sie sich die neueste llama.cpp auf GitHub hierarrow-up-right. 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.

  1. Sie können direkt von HuggingFace ziehen via:

  2. Laden Sie das Modell herunter über (nach Installation von pip install huggingface_hub hf_transfer ). Sie können UD_Q4_K_XL oder andere quantisierte Versionen wählen.

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 150GB vereinheitlichter Speicher (kombiniertes VRAM und RAM) oder 150GB Systemspeicher (RAM) allein. Als Faustregel sollte dein verfügbarer Speicher der Größe des verwendeten Modells entsprechen oder diese übersteigen. Z. B. erfordert der Q2_K_XL-Quant, der 180GB groß ist, mindestens 180 GB einheitlichen Speicher (VRAM + RAM) oder 180 GB RAM für optimale Leistung benötigen.

HINWEIS: Das Modell kann mit weniger Speicher als seiner Gesamtgröße laufen, aber dies verlangsamt die Inferenz. Maximale Speicherkapazität wird nur für die schnellsten Geschwindigkeiten benötigt.

circle-info

Befolgen Sie die oben genannten Best Practices. Diese sind gleich wie beim 30B-Modell.

📖 Llama.cpp: Qwen3-Coder-480B-A35B-Instruct Tutorial ausführen

Für Coder-480B-A35B werden wir speziell Llama.cpp für optimierte Inferenz und eine Fülle von Optionen verwenden.

circle-check
  1. Holen Sie sich die neueste llama.cpp auf GitHub hierarrow-up-right. 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.

  2. Sie können llama.cpp direkt verwenden, um das Modell herunterzuladen, aber ich empfehle normalerweise die Nutzung von huggingface_hub Um llama.cpp direkt zu verwenden, tun Sie:

    {% code overflow="wrap" %}

    {% endcode %}

  3. Oder laden Sie das Modell herunter via (nach Installation von pip install huggingface_hub hf_transfer ). Du kannst UD-Q2_K_XL oder andere quantisierte Versionen wählen..

  4. Führen Sie das Modell im Konversationsmodus aus und probieren Sie beliebige Eingaben.

  5. Bearbeiten --threads -1 für die Anzahl der CPU-Threads bearbeiten, --ctx-size 262114 für Kontextlänge, --n-gpu-layers 99 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.

circle-check
circle-check

🛠️ 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-Versionarrow-up-right führt auch einen Hochdurchsatzmodus ein. Verwenden Sie llama-parallel. Lesen Sie mehr darüber hierarrow-up-right. 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 (256K bis 1M) anpasst

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.

Wir haben außerdem 1-Million-Kontextlängen-GGUFs via YaRN-Skalierung hochgeladen hier.

🧰 Tool-Calling-Fixes

Es ist uns gelungen, Tool-Calling über llama.cpp --jinja speziell für das Bereitstellen über llama-server! Wenn du unsere 30B-A3B-Quants herunterlädst, brauchst du dir keine Sorgen zu machen, da diese bereits unsere Fixes enthalten. Für das 480B-A35B-Modell bitte:

  1. Lade 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 ersetze deine aktuelle Datei

  2. Verwenden Sie snapshot_download wie üblich gemäß https://docs.unsloth.ai/basics/qwen3-coder-how-to-run-locally#llama.cpp-run-qwen3-tutorial, was die alten Dateien automatisch überschreiben wird

  3. Verwende die neue Chat-Vorlage über --chat-template-file. Siehe GGUF-Chat-Vorlagearrow-up-right oder chat_template.jinjaarrow-up-right

  4. Als Zusatz haben wir außerdem eine einzelne 150GB UD-IQ1_M-Datei (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 erstellt

Das sollte Probleme wie dieses lösen: https://github.com/ggml-org/llama.cpp/issues/14915

Verwendung von Tool-Calling

Um die Prompts für Tool-Calling zu formatieren, zeigen wir es mit einem Beispiel.

Ich habe eine Python-Funktion namens get_current_temperature erstellt, die die aktuelle Temperatur für einen Ort abrufen soll. Fürs Erste haben wir eine Platzhalterfunktion erstellt, die immer 21,6 Grad Celsius zurückgibt. Du solltest dies in eine echte Funktion ändern!!

Verwende dann den Tokenizer, um den gesamten Prompt zu erstellen:

💡Performance-Benchmarks

circle-info

Diese offiziellen Benchmarks gelten für den vollständigen BF16-Checkpoint. Um diesen zu verwenden, nutze einfach die Q8_K_XL, Q8_0, BF16 Checkpoints, die wir hochgeladen haben – du kannst für diese Versionen weiterhin Tricks wie MoE-Offloading verwenden!

Hier sind die Benchmarks für das 480B-Modell:

Agentic Coding

Benchmark
Qwen3‑Coder 480B‑A35B‑Instruct
Kimi‑K2
DeepSeek‑V3-0324
Claude 4 Sonnet
GPT‑4.1

Terminal‑Bench

37.5

30.0

2.5

35.5

25.3

SWE‑bench Verifiziert mit OpenHands (500 Durchläufe)

69.6

70.4

SWE‑bench Verifiziert mit OpenHands (100 Durchläufe)

67.0

65.4

38.8

68.0

48.6

SWE‑bench Verifiziert mit Privatem Scaffolding

65.8

72.7

63.8

SWE‑bench Live

26.3

22.3

13.0

27.7

SWE‑bench Mehrsprachig

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

Agentic Browser‑Nutzung

Benchmark
Qwen3‑Coder 480B‑A35B‑Instruct
Kimi‑K2
DeepSeek‑V3 0324
Claude Sonnet‑4
GPT‑4.1

WebArena

49.9

47.4

40.0

51.1

44.3

Mind2Web

55.8

42.7

36.0

47.4

49.6

Agentic Tool‑Nutzung

Benchmark
Qwen3‑Coder 480B‑A35B‑Instruct
Kimi‑K2
DeepSeek‑V3 0324
Claude Sonnet‑4
GPT‑4.1

BFCL‑v3

68.7

65.2

56.9

73.3

62.9

TAU‑Bench Retail

77.5

70.7

59.1

80.5

TAU‑Bench Airline

60.0

53.5

40.0

60.0

Zuletzt aktualisiert

War das hilfreich?