🌠Qwen3-Coder: Anleitung zum lokalen Ausführen

Führe Qwen3-Coder-30B-A3B-Instruct und 480B-A35B lokal mit Unsloth 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 erzielt SOTA-Coding-Leistung, die mit Claude Sonnet-4, GPT-4.1 und Kimi K2mithalten kann, mit 61,8 % bei Aider Polyglot und Unterstützung für 256K (erweiterbar auf 1M) Token-Kontext.

Wir haben außerdem Qwen3-Coder mit nativer 1M Kontextlänge hochgeladen, erweitert durch YaRN sowie Vollpräzisions-8bit- und 16bit-Versionen. 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 finden Sie 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, 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 (Die aktuelle Temperatur für San Francisco abrufen). Weitere Details hier zur Formatierung von Tool-Aufrufen.

circle-info

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

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

Um Inferenzgeschwindigkeiten von 6+ Tokens pro Sekunde für unseren Dynamic 4-bit Quant zu erreichen, sollten Sie mindestens haben 18GB einheitlichen Speicher (kombiniertes VRAM und RAM) oder 18GB System-RAM allein. Als Faustregel sollte Ihr verfügbarer Speicher der Größe des verwendeten Modells entsprechen oder diese übertreffen. Zum Beispiel erfordert der UD_Q8_K_XL-Quant (volle Präzision), der 32,5GB ist, mindestens 33GB einheitlichen Speicher (VRAM + RAM) oder 33GB RAM für optimale Leistung.

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 Non-Thinking-Modell ist, besteht keine Notwendigkeit, thinking=False zu setzen, und das Modell erzeugt keine <think> </think> Blöcke.

circle-info

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

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

  1. Installieren Sie ollama wenn Sie es noch nicht haben! Sie können nur Modelle bis zu 32B ausführen.

  1. Führen Sie das Modell aus! Beachten Sie, dass Sie ollama servein einem anderen Terminal aufrufen können, wenn es fehlschlägt! Wir fügen alle unsere Fixes und vorgeschlagenen Parameter (Temperatur etc.) in params in unserem Hugging Face Upload bei!

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

  1. Holen Sie sich das neueste llama.cpp auf GitHub hierarrow-up-right. Sie können auch den Build-Anweisungen unten 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 via (nach der Installation von pip install huggingface_hub hf_transfer ). Sie können UD_Q4_K_XL oder andere quantisierte Versionen wählen. Wenn 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 unseren 1-Bit-Quant zu erreichen, empfehlen wir mindestens 150GB einheitlichen Speicher (kombiniertes VRAM und RAM) oder 150GB System-RAM allein. Als Faustregel sollte Ihr verfügbarer Speicher der Größe des verwendeten Modells entsprechen oder diese übertreffen. Zum Beispiel erfordert der Q2_K_XL-Quant, der 180GB groß ist, mindestens 180GB einheitlichen Speicher (VRAM + RAM) oder 180GB RAM für optimale Leistung.

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. Sie sind dieselben 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 das neueste llama.cpp auf GitHub hierarrow-up-right. Sie können auch den Build-Anweisungen unten 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 der Installation von pip install huggingface_hub hf_transfer ). Sie können UD-Q2_K_XL oder andere quantisierte Versionen wählen..

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

  5. Bearbeiten Sie --threads -1 für die Anzahl der CPU-Threads, --ctx-size 262114 für Kontextlänge, --n-gpu-layers 99 für GPU-Offloading wie viele Layer. Versuchen Sie, es anzupassen, wenn Ihre GPU keinen Speicher mehr hat. Entfernen Sie es ebenfalls, wenn Sie nur CPU-Inferenz haben.

circle-check
circle-check

🛠️ Verbesserung der Generierungsgeschwindigkeit

Wenn Sie mehr VRAM haben, können Sie versuchen, mehr MoE-Layer auszulagern oder ganze Layer selbst auszulagern.

Normalerweise, -ot ".ffn_.*_exps.=CPU" lagert alle MoE-Layer auf die CPU aus! Dies ermöglicht es effektiv, alle nicht-MoE-Layer auf 1 GPU unterzubringen und verbessert die Generierungsgeschwindigkeit. Sie können den Regex-Ausdruck anpassen, um mehr Layer zu verlagern, 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-Projection-MoE-Layer aus.

Versuchen Sie -ot ".ffn_(up)_exps.=CPU" wenn Sie noch mehr GPU-Speicher haben. Dies lagert nur Up-Projection-MoE-Layer 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-Layer auszulagern, aber nur ab dem 6. Layer.

Die neueste llama.cpp-Versionarrow-up-right führt außerdem einen High-Throughput-Modus 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 Generierungsprozess ebenfalls beschleunigen kann.

📐Wie man langen Kontext (256K bis 1M) unterbringt

Um längeren Kontext zu ermöglichen, können Sie KV-Cache-Quantisierung verwenden, um die K- und V-Caches auf niedrigere Bits zu quantisieren. Dies kann auch die Generierungsgeschwindigkeit erhöhen, da weniger RAM/VRAM-Datenbewegung erforderlich ist. 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=ONund --flash-attn verwenden, um sie zu aktivieren.

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

🧰 Tool-Calling-Fixes

Wir haben es geschafft, Tool-Calling über llama.cpp --jinja speziell für das Serving über llama-serverzu beheben! Wenn Sie unsere 30B-A3B-Quants herunterladen, müssen Sie sich keine Sorgen machen, da diese bereits unsere Fixes enthalten. Für das 480B-A35B-Modell tun Sie bitte:

  1. Laden Sie 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 ersetzen Sie Ihre aktuelle Datei

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

  3. Verwenden Sie die neue Chat-Vorlage via --chat-template-file. Siehe GGUF Chat-Vorlagearrow-up-right oder chat_template.jinjaarrow-up-right

  4. Zusätzlich haben wir auch 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 bereitgestellt

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

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 sollte. Für den Moment haben wir eine Platzhalterfunktion erstellt, die immer 21,6 Grad Celsius zurückgibt. Sie sollten dies durch eine echte Funktion ersetzen!!

Verwenden Sie dann den Tokenizer, um das gesamte Prompt zu erstellen:

💡Performance-Benchmarks

circle-info

Diese offiziellen Benchmarks gelten für den vollständigen BF16-Checkpoint. Um diesen zu verwenden, nutzen Sie einfach die Q8_K_XL, Q8_0, BF16 Checkpoints, die wir hochgeladen haben – Sie können für diese Versionen ebenfalls 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 Runden)

69.6

70.4

SWE‑bench Verifiziert mit OpenHands (100 Runden)

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?