🌠QwQ-32B: Wie man es effektiv ausführt
Wie man QwQ-32B effektiv mit unseren Fehlerbehebungen und ohne endlose Generierungen + GGUFs ausführt.
Qwen hat QwQ-32B veröffentlicht - ein Reasoning-Modell mit vergleichbarer Leistung wie DeepSeek-R1 bei vielen Benchmarks. Allerdings erleben die Leute endlose Generierungen, viele Wiederholungen, <think>-Token-Probleme und Fine-Tuning-Probleme. Wir hoffen, dass dieser Leitfaden hilft, die meisten Probleme zu debuggen und zu beheben!
Unsere Modell-Uploads mit unseren Fehlerbehebungen eignen sich hervorragend für Fine-Tuning, vLLM und Transformers. Wenn du llama.cpp und Engines verwendest, die llama.cpp als Backend nutzen, befolge unsere Anweisungen hier um endlose Generierungen zu beheben.
Unsloths QwQ-32B-Uploads mit unseren Fehlerbehebungen:
⚙️ Offizielle empfohlene Einstellungen
Laut Qwen, dies sind die empfohlenen Einstellungen für die Inferenz:
Temperatur von 0,6
Top_K von 40 (oder 20 bis 40)
Min_P von 0,00 (optional, aber 0,01 funktioniert gut; der Standardwert von llama.cpp ist 0,1)
Top_P von 0.95
Wiederholungsstrafe von 1.0. (1.0 bedeutet deaktiviert in llama.cpp und transformers)
Chat-Vorlage:
<|im_start|>user\nErstelle ein Flappy-Bird-Spiel in Python.<|im_end|>\n<|im_start|>assistant\n<think>\n
llama.cpp verwendet min_p = 0.1standardmäßig, was Probleme verursachen könnte. Erzwinge es auf 0.0.
👍 Empfohlene Einstellungen für llama.cpp
Wir haben bemerkt, dass viele Leute einen Wiederholungsstrafe größer als 1.0 verwenden. Zum Beispiel 1.1 bis 1.5. Das stört tatsächlich die Sampling-Mechanismen von llama.cpp. Das Ziel einer Wiederholungsstrafe ist es, wiederholte Generierungen zu bestrafen, aber wir haben festgestellt, dass das nicht wie erwartet funktioniert.
Ausschalten von Wiederholungsstrafe funktioniert ebenfalls (also es auf 1.0 setzen), aber wir fanden es nützlich, damit endlose Generierungen zu bestrafen.
Um es zu verwenden, haben wir festgestellt, dass du auch die Reihenfolge der Sampler in llama.cpp vor dem Anwenden bearbeiten musst von Wiederholungsstrafe, andernfalls wird es endlose Generierungen geben. Also füge dies hinzu:
Standardmäßig verwendet llama.cpp diese Reihenfolge:
Wir ordnen im Wesentlichen temperature und dry um und verschieben min_p nach vorne. Das bedeutet, wir wenden Sampler in dieser Reihenfolge an:
Wenn weiterhin Probleme auftreten, kannst du die--repeat-penalty von 1.0 auf 1.2 oder 1.3 erhöhen.
Mit freundlicher Genehmigung von @krist486 dafür, dass er mich auf die Sampling-Richtlinien von llama.cpp aufmerksam gemacht hat.
☀️ Dry-Wiederholungsstrafe
Wir haben die Verwendung von dry penalty untersucht, wie in https://github.com/ggml-org/llama.cpp/blob/master/examples/main/README.md mit einem Wert von 0.8 vorgeschlagen, aber wir haben tatsächlich festgestellt, dass dies eher Syntaxprobleme verursacht, insbesondere beim Programmieren. Wenn weiterhin Probleme auftreten, kannst du diedry penalty auf 0.8 erhöhen.
Die Nutzung unserer vertauschten Sampling-Reihenfolge kann auch helfen, wenn du dich entscheidest, dry penalty.
🦙 Tutorial: Wie man QwQ-32B in Ollama ausführt
Installieren Sie
ollamafalls Sie das noch nicht getan haben!
Führe das Modell aus! Beachte, dass du
ollama servein einem anderen Terminal aufrufen kannst, falls es fehlschlägt! Wir enthalten alle unsere Fixes und vorgeschlagenen Parameter (temperature, min_p usw.) inparamin unserem Hugging-Face-Upload!
📖 Tutorial: Wie man QwQ-32B in llama.cpp ausführt
Hole dir die neueste
llama.cppauf GitHub hier. Du kannst auch den untenstehenden Build-Anweisungen folgen. Ändere-DGGML_CUDA=ONzu-DGGML_CUDA=OFFwenn du keine GPU hast oder nur CPU-Inferenz möchtest. Für Apple Mac / Metal-Geräte, setze-DGGML_CUDA=OFFund fahre dann wie gewohnt fort - Metal-Unterstützung ist standardmäßig aktiviert.
Lade das Modell herunter über (nach der Installation von
pip install huggingface_hub hf_transfer). Sie können Q4_K_M oder andere quantisierte Versionen wählen (wie BF16 Vollpräzision). Weitere Versionen unter: https://huggingface.co/unsloth/QwQ-32B-GGUF
Führe Unsloths Flappy-Bird-Test aus, der die Ausgabe speichert in
Q4_K_M_yes_samplers.txtBearbeiten
--threads 32für die Anzahl der CPU-Threads bearbeiten,--ctx-size 16384für die Kontextlänge,--n-gpu-layers 99fü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.Wir verwenden
--repeat-penalty 1.1und--dry-multiplier 0.5die du anpassen kannst.
Die vollständige Eingabe aus unserem https://unsloth.ai/blog/deepseekr1-dynamic 1.58bit-Blog lautet:
Der Anfang und das Ende der endgültigen Python-Ausgabe nach dem Entfernen der Denkabschnitte:
Wenn es ausgeführt wird, erhalten wir ein lauffähiges Spiel!

Versuche jetzt dasselbe ohne unsere Fixes! Entferne also
--samplers "top_k;top_p;min_p;temperature;dry;typ_p;xtc"Dies speichert die Ausgabe inQ4_K_M_no_samplers.txt
Du wirst einiges an Schleifen erhalten, aber problematisch falsche Python-Syntax und viele andere Probleme. Zum Beispiel sieht das Folgende korrekt aus, ist aber falsch! Also Zeile 39 pipes.clear() ### <<< NameError: name 'pipes' is not defined. Hast du vergessen, 'pipes' zu importieren?
Wenn du
--repeat-penalty 1.5verwendest, wird es noch schlimmer und offensichtlicher, mit tatsächlich völlig falscher Syntax.
Du fragst dich vielleicht, ob es an Q4_K_M liegt? B16 also volle Präzision sollte doch gut funktionieren, oder? Falsch - die Ausgaben scheitern erneut, wenn wir unseren Fix nicht verwenden -
-samplers "top_k;top_p;min_p;temperature;dry;typ_p;xtc"wenn eine Wiederholungsstrafe verwendet wird.
🌄 Funktioniert immer noch nicht? Probiere Min_p = 0.1, Temperature = 1.5
Laut dem Min_p-Paper https://arxiv.org/pdf/2407.01082, für kreativere und vielfältigere Ausgaben, und wenn du immer noch Wiederholungen siehst, versuche top_p und top_k zu deaktivieren!
Ein anderer Ansatz ist, min_p direkt zu deaktivieren, da llama.cpp standardmäßig min_p = 0.1!
🤔 <think>-Token nicht angezeigt?
Einige Leute berichten, dass, weil <think> standardmäßig in der Chat-Vorlage hinzugefügt wird, einige Systeme die Denkspuren nicht korrekt ausgeben. Du musst die Jinja-Vorlage manuell ändern von:
zu einer anderen, indem du das <think>\n am Ende entfernst. Das Modell muss nun während der Inferenz manuell <think>\n hinzufügen, was möglicherweise nicht immer gelingt. DeepSeek hat außerdem alle Modelle so bearbeitet, dass standardmäßig ein <think> Token hinzugefügt wird, um das Modell in den Reasoning-Modus zu zwingen.
Also ändere {%- if add_generation_prompt %} {{- '<|im_start|>assistant\n<think>\n' }} {%- endif %} zu {%- if add_generation_prompt %} {{- '<|im_start|>assistant\n' }} {%- endif %}
also entferne <think>\n
Zusätzliche Hinweise
Wir dachten zuerst vielleicht:
QwQs Kontextlänge war nicht nativ 128K, sondern eher 32K mit YaRN-Erweiterung. Zum Beispiel in der Readme-Datei für https://huggingface.co/Qwen/QwQ-32B, sehen wir:
Wir haben versucht, llama.cpps YaRN-Behandlung zu überschreiben, aber nichts änderte sich.
Wir haben auch getestet, ob die Tokenizer-IDs zwischen llama.cpp und normalem Transformers übereinstimmen, mit freundlicher Genehmigung von @kalomaze. Sie stimmten überein, also war das nicht der Verursacher.
Wir präsentieren unten unsere experimentellen Ergebnisse:
✏️ Tokenizer-Fehlerbehebungen
Wir haben auch einige Probleme gefunden, die insbesondere das Fine-Tuning beeinträchtigen! Das EOS-Token ist korrekt, aber das PAD-Token sollte wahrscheinlich eher
"<|vision_pad|>" sein. Wir haben es aktualisiert in: https://huggingface.co/unsloth/QwQ-32B/blob/main/tokenizer_config.json
🛠️ Dynamische 4-Bit-Quants
Wir haben auch dynamische 4-Bit-Quants hochgeladen, die die Genauigkeit im Vergleich zu naiven 4-Bit-Quantisierungen erhöhen! Wir fügen die Analyse des QwQ-Quantisierungsfehlerdiagramms sowohl für Aktivierungs- als auch für Gewichtsquantisierungsfehler bei:

Wir haben dynamische 4-Bit-Quants hochgeladen auf: https://huggingface.co/unsloth/QwQ-32B-unsloth-bnb-4bit
Seit vLLM 0.7.3 (20. Februar 2025) https://github.com/vllm-project/vllm/releases/tag/v0.7.3, unterstützt vLLM jetzt das Laden von Unsloths dynamischen 4-Bit-Quants!
Alle unsere GGUFs sind unter https://huggingface.co/unsloth/QwQ-32B-GGUF!
Zuletzt aktualisiert
War das hilfreich?

