🌠Qwen3-Coder : Comment exécuter localement
Exécutez Qwen3-Coder-30B-A3B-Instruct et 480B-A35B localement avec les quants dynamiques d'Unsloth.
Qwen3-Coder est la nouvelle série de modèles d'agents de codage de Qwen, disponible en 30B (Qwen3-Coder-Flash) et 480B paramètres. Qwen3-480B-A35B-Instruct obtient des performances SOTA en codage rivalisant avec Claude Sonnet-4, GPT-4.1, et Kimi K2, avec 61,8% sur Aider Polygot et prise en charge d'un contexte de 256K (extensible à 1M) de tokens.
Nous avons également téléversé Qwen3-Coder avec nativement longueur de contexte 1M étendue par YaRN et des versions en pleine précision 8bit et 16bit. Unsloth prend également désormais en charge le fine-tuning et RL de Qwen3-Coder.
MISE À JOUR : Nous avons corrigé l'appel d'outils pour Qwen3-Coder ! Vous pouvez maintenant utiliser l'appel d'outils de manière transparente dans llama.cpp, Ollama, LMStudio, Open WebUI, Jan, etc. Ce problème était universel et affectait tous les téléversements (pas seulement Unsloth), et nous avons communiqué avec l'équipe Qwen au sujet de nos corrections ! En savoir plus
Exécuter 30B-A3BExécuter 480B-A35B
Est-ce que Unsloth Dynamic Quants fonctionne ? Oui, et très bien. Dans des tests tiers sur le benchmark Aider Polyglot, le UD-Q4_K_XL (276GB) quant dynamique a presque égalé le bf16 complet (960GB) modèle Qwen3-coder, obtenant 60,9% contre 61,8%. Plus de détails ici.
Qwen3 Coder - GGUFs Unsloth Dynamic 2.0:
🖥️ Exécution de Qwen3-Coder
Vous trouverez ci-dessous des guides pour les 30B-A3B et 480B-A35B variantes du modèle.
⚙️ Paramètres recommandés
Qwen recommande ces paramètres d'inférence pour les deux modèles :
temperature=0.7, top_p=0.8, top_k=20, repetition_penalty=1.05
Température de 0,7
Top_K de 20
Min_P de 0,00 (optionnel, mais 0,01 fonctionne bien, la valeur par défaut de llama.cpp est 0,1)
Top_P de 0,8
Pénalité de répétition de 1,05
Modèle de chat :
{% code overflow="wrap" %}
<|im_start|>user Salut !<|im_end|> <|im_start|>assistant Quel est 1+1 ?<|im_end|> <|im_start|>user 2<|im_end|> <|im_start|>assistant{% endcode %}
Sortie de contexte recommandée : 65 536 tokens (peut être augmentée). Détails ici.
Modèle de chat/format d'invite avec retours à la ligne non rendus
Modèle de chat pour l'appel d'outils (Récupérer la température actuelle pour San Francisco). Plus de détails ici sur la façon de formater les appels d'outils.
Rappel : ce modèle ne prend en charge que le mode sans réflexion et ne génère pas de <think></think> blocs dans sa sortie. Par ailleurs, spécifier enable_thinking=False n'est plus requis.
Exécuter Qwen3-Coder-30B-A3B-Instruct :
Pour atteindre des vitesses d'inférence de 6+ tokens par seconde avec notre quantification dynamique 4 bits, disposez d'au moins 18GB de mémoire unifiée (VRAM et RAM combinées) ou 18GB de RAM système seule. En règle générale, votre mémoire disponible doit être égale ou supérieure à la taille du modèle que vous utilisez. Par ex. la quantification UD_Q8_K_XL (pleine précision), qui fait 32,5GB, nécessitera au moins 33GB de mémoire unifiée (VRAM + RAM) ou 33GB de RAM pour des performances optimales.
REMARQUE : Le modèle peut fonctionner avec moins de mémoire que sa taille totale, mais cela ralentira l'inférence. La mémoire maximale n'est nécessaire que pour les vitesses les plus élevées.
Étant donné qu'il s'agit d'un modèle sans réflexion, il n'est pas nécessaire de définir thinking=False et le modèle ne génère pas de <think> </think> blocs.
Suivez les meilleures pratiques ci‑dessus. Elles sont les mêmes que pour le modèle 480B.
🦙 Ollama : Tutoriel Exécution Qwen3-Coder-30B-A3B-Instruct
Installer
ollamasi vous ne l'avez pas encore fait ! Vous ne pouvez exécuter que des modèles jusqu'à 32B.
Exécutez le modèle ! Notez que vous pouvez appeler
ollama servedans un autre terminal si cela échoue ! Nous incluons toutes nos corrections et paramètres suggérés (température, etc.) dansparamsdans notre téléversement Hugging Face !
✨ Llama.cpp : Tutoriel Exécution Qwen3-Coder-30B-A3B-Instruct
Obtenez le dernier
llama.cppsur GitHub ici. Vous pouvez également suivre les instructions de compilation ci‑dessous. Changez-DGGML_CUDA=ONen-DGGML_CUDA=OFFsi vous n'avez pas de GPU ou si vous souhaitez uniquement l'inférence CPU.
Vous pouvez directement récupérer depuis HuggingFace via :
Téléchargez le modèle via (après avoir installé
pip install huggingface_hub hf_transfer). Vous pouvez choisir UD_Q4_K_XL ou d'autres versions quantifiées. Si les téléchargements se bloquent, voir Hugging Face Hub, débogage XET
Exécuter Qwen3-Coder-480B-A35B-Instruct :
Pour atteindre des vitesses d'inférence de 6+ tokens par seconde pour notre quantification 1 bit, nous recommandons au moins 150GB de mémoire unifiée (VRAM et RAM combinées) ou 150GB de RAM système seule. En règle générale, votre mémoire disponible doit être égale ou supérieure à la taille du modèle que vous utilisez. Par ex. la quantification Q2_K_XL, qui fait 180GB, nécessitera au moins 180GB de mémoire unifiée (VRAM + RAM) ou 180GB de RAM pour des performances optimales.
REMARQUE : Le modèle peut fonctionner avec moins de mémoire que sa taille totale, mais cela ralentira l'inférence. La mémoire maximale n'est nécessaire que pour les vitesses les plus élevées.
Suivez les meilleures pratiques ci‑dessus. Elles sont les mêmes que pour le modèle 30B.
📖 Llama.cpp : Tutoriel Exécution Qwen3-Coder-480B-A35B-Instruct
Pour Coder-480B-A35B, nous utiliserons spécifiquement Llama.cpp pour une inférence optimisée et une multitude d'options.
Si vous voulez une version non quantifiée en pleine précision, utilisez notre Q8_K_XL, Q8_0 ou BF16 versions !
Obtenez le dernier
llama.cppsur GitHub ici. Vous pouvez également suivre les instructions de compilation ci‑dessous. Changez-DGGML_CUDA=ONen-DGGML_CUDA=OFFsi vous n'avez pas de GPU ou si vous souhaitez uniquement l'inférence CPU.Vous pouvez utiliser directement llama.cpp pour télécharger le modèle mais je suggère généralement d'utiliser
huggingface_hubPour utiliser llama.cpp directement, faites :{% code overflow="wrap" %}
{% endcode %}
Ou, téléchargez le modèle via (après avoir installé
pip install huggingface_hub hf_transfer). Vous pouvez choisir UD-Q2_K_XL, ou d'autres versions quantifiées..Exécutez le modèle en mode conversation et essayez n'importe quelle invite.
Modifier
--threads -1pour le nombre de threads CPU,--ctx-size262114 pour la longueur du contexte,--n-gpu-layers 99pour le déchargement GPU du nombre de couches. Essayez de l'ajuster si votre GPU manque de mémoire. Supprimez-le également si vous n'avez que l'inférence CPU.
Utilisez -ot ".ffn_.*_exps.=CPU" pour décharger toutes les couches MoE vers le CPU ! Cela permet effectivement d'ajuster toutes les couches non-MoE sur 1 GPU, améliorant les vitesses de génération. Vous pouvez personnaliser l'expression regex pour décharger plus de couches si vous avez plus de capacité GPU. Plus d'options discutées ici.
N'oubliez pas non plus la nouvelle mise à jour Qwen3. Exécutez Qwen3-235B-A22B-Instruct-2507 localement avec llama.cpp.
🛠️ Améliorer la vitesse de génération
Si vous avez plus de VRAM, vous pouvez essayer de décharger plus de couches MoE, ou de décharger des couches entières elles-mêmes.
Normalement, -ot ".ffn_.*_exps.=CPU" décharge toutes les couches MoE vers le CPU ! Cela permet effectivement d'ajuster toutes les couches non-MoE sur 1 GPU, améliorant les vitesses de génération. Vous pouvez personnaliser l'expression regex pour décharger plus de couches si vous avez plus de capacité GPU.
Si vous avez un peu plus de mémoire GPU, essayez -ot ".ffn_(up|down)_exps.=CPU" Cela décharge les couches MoE de projection up et down.
Essayez -ot ".ffn_(up)_exps.=CPU" si vous avez encore plus de mémoire GPU. Cela ne décharge que les couches MoE de projection up.
Vous pouvez également personnaliser la regex, par exemple -ot "\.(6|7|8|9|[0-9][0-9]|[0-9][0-9][0-9])\.ffn_(gate|up|down)_exps.=CPU" signifie décharger les couches MoE gate, up et down mais seulement à partir de la 6ème couche.
La dernière version de llama.cpp introduit également le mode haut débit. Utilisez llama-parallel. En savoir plus à ce sujet ici. Vous pouvez aussi quantifier le cache KV en 4 bits par exemple pour réduire les mouvements VRAM / RAM, ce qui peut aussi accélérer le processus de génération.
📐Comment adapter un long contexte (256K à 1M)
Pour adapter un contexte plus long, vous pouvez utiliser quantification du cache KV pour quantifier les caches K et V en bits inférieurs. Cela peut aussi augmenter la vitesse de génération grâce à la réduction des mouvements de données RAM / VRAM. Les options autorisées pour la quantification de K (la valeur par défaut est f16) incluent ci‑dessous.
--cache-type-k f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1
Vous devriez utiliser les _1 variantes pour une précision quelque peu accrue, bien que ce soit légèrement plus lent. Par ex q4_1, q5_1
Vous pouvez aussi quantifier le cache V, mais vous devrez compiler llama.cpp avec le support Flash Attention via -DGGML_CUDA_FA_ALL_QUANTS=ON, et utiliser --flash-attn pour l'activer.
Nous avons également téléversé des GGUFs de longueur de contexte d'un million via la mise à l'échelle YaRN ici.
🧰 Corrections des appels d'outils
Nous avons réussi à corriger l'appel d'outils via llama.cpp --jinja spécifiquement pour le service via llama-server ! Si vous téléchargez nos quants 30B-A3B, pas de souci car ceux-ci incluent déjà nos corrections. Pour le modèle 480B-A35B, s'il vous plaît :
Téléchargez le premier fichier à https://huggingface.co/unsloth/Qwen3-Coder-480B-A35B-Instruct-GGUF/tree/main/UD-Q2_K_XL pour UD-Q2_K_XL, et remplacez votre fichier actuel
Utilisez
snapshot_downloadcomme d'habitude comme dans https://docs.unsloth.ai/basics/qwen3-coder-how-to-run-locally#llama.cpp-run-qwen3-tutorial qui remplacera automatiquement les anciens fichiersUtilisez le nouveau modèle de chat via
--chat-template-file. Voir Modèle de chat GGUF ou chat_template.jinjaEn complément, nous avons aussi créé un seul fichier UD-IQ1_M de 150GB (pour que Ollama fonctionne) à https://huggingface.co/unsloth/Qwen3-Coder-480B-A35B-Instruct-GGUF/blob/main/Qwen3-Coder-480B-A35B-Instruct-UD-IQ1_M.gguf
Cela devrait résoudre des problèmes comme : https://github.com/ggml-org/llama.cpp/issues/14915
Utilisation de l'appel d'outils
Pour formater les invites pour l'appel d'outils, illustrons-le avec un exemple.
J'ai créé une fonction Python appelée get_current_temperature qui est une fonction qui devrait obtenir la température actuelle d'un lieu. Pour l'instant nous avons créé une fonction factice qui renverra toujours 21,6 degrés Celsius. Vous devriez changer cela en une vraie fonction !!
Puis utilisez le tokenizer pour créer l'invite entière :
💡Benchmarks de performance
Ces benchmarks officiels concernent le checkpoint BF16 complet. Pour l'utiliser, utilisez simplement les Q8_K_XL, Q8_0, BF16 checkpoints que nous avons téléversés - vous pouvez toujours utiliser des astuces comme le déchargement MoE pour ces versions aussi !
Voici les benchmarks pour le modèle 480B :
Codage agentif
Terminal‑Bench
37.5
30.0
2.5
35.5
25.3
SWE‑bench Vérifié avec OpenHands (500 tours)
69.6
–
–
70.4
–
SWE‑bench Vérifié avec OpenHands (100 tours)
67.0
65.4
38.8
68.0
48.6
SWE‑bench Vérifié avec Scaffolding Privé
–
65.8
–
72.7
63.8
SWE‑bench En direct
26.3
22.3
13.0
27.7
–
SWE‑bench Multilingue
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
Utilisation agentive du navigateur
WebArena
49.9
47.4
40.0
51.1
44.3
Mind2Web
55.8
42.7
36.0
47.4
49.6
Utilisation agentive d'outils
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
–
Mis à jour
Ce contenu vous a-t-il été utile ?

