🌠Qwen3-Coder : Comment exécuter localement

Exécutez Qwen3-Coder-30B-A3B-Instruct et 480B-A35B localement avec les quantifications dynamiques d'Unsloth.

Qwen3-Coder est la nouvelle série de modèles agents de codage de Qwen, disponible en 30B (Qwen3-Coder-Flash) et 480B paramètres. Qwen3-480B-A35B-Instruct atteint des performances de codage SOTA rivalisant avec Claude Sonnet-4, GPT-4.1, et Kimi K2, avec 61,8 % sur Aider Polyglot et prise en charge d'un contexte de 256K (extensible à 1M) tokens.

Nous avons également téléversé Qwen3-Coder avec native longueur de contexte 1M étendue par YaRN et des versions en pleine précision 8bit et 16bit. Unslotharrow-up-right prend également désormais en charge le fine-tuning et RL de Qwen3-Coder.

circle-check

Exécuter 30B-A3BExécuter 480B-A35B

circle-check

Qwen3 Coder - Unsloth Dynamic 2.0 GGUFs:

🖥️ Exécution de Qwen3-Coder

Ci-dessous se trouvent 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 :

Sans réflexion :, temperature=0.7, top_p=0.95, 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 de prompt avec les sauts de ligne non rendus

Modèle de chat pour l'appel d'outils (Obtenir la température actuelle de San Francisco). Plus de détails ici sur la façon de formater les appels d'outils.

circle-info

Rappel : ce modèle ne prend en charge que le mode non pensant et ne génère pas <think></think> de blocs dans sa sortie. Par ailleurs, spécifier enable_thinking=False n'est plus requis.

Exécutez Qwen3-Coder-30B-A3B-Instruct :

Pour atteindre des vitesses d'inférence de 6+ tokens par seconde pour notre quantification Dynamic 4-bit, ayez au moins 18GB de mémoire unifiée (VRAM et RAM combinées) ou 18GB de RAM système seul. À titre indicatif, votre mémoire disponible doit correspondre ou dépasser la taille du modèle que vous utilisez. Par ex. le quant UD_Q8_K_XL (pleine précision), qui fait 32,5GB, nécessitera au minimum 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 rapides.

Étant donné qu'il s'agit d'un modèle non pensant, il n'est pas nécessaire de définir thinking=False et le modèle ne génère pas <think> </think> blocs.

circle-info

Suivez les meilleures pratiques ci-dessus. Ils sont identiques au modèle 480B.

🦙 Ollama : Tutoriel Exécuter Qwen3-Coder-30B-A3B-Instruct

  1. Installez ollama si vous ne l'avez pas déjà fait ! Vous ne pouvez exécuter que des modèles jusqu'à 32B de taille.

  1. Exécutez le modèle ! Notez que vous pouvez appeler ollama servedans un autre terminal s'il échoue ! Nous incluons toutes nos corrections et paramètres suggérés (température, etc.) dans params dans notre téléversement Hugging Face !

Llama.cpp : Tutoriel Exécuter Qwen3-Coder-30B-A3B-Instruct

  1. Obtenez le dernier llama.cpp sur GitHub iciarrow-up-right. Vous pouvez suivre les instructions de compilation ci-dessous également. Changez -DGGML_CUDA=ON en -DGGML_CUDA=OFF si vous n'avez pas de GPU ou si vous voulez simplement une inférence CPU.

  1. Vous pouvez récupérer directement depuis HuggingFace via :

  2. 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.

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 seul. À titre indicatif, votre mémoire disponible doit correspondre ou dépasser la taille du modèle que vous utilisez. Par ex. le quant Q2_K_XL, qui fait 180GB, nécessitera au minimum 180 Go de mémoire unifiée (VRAM + RAM) ou 180 Go 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 rapides.

circle-info

Suivez les meilleures pratiques ci-dessus. Ils sont identiques au modèle 30B.

📖 Llama.cpp : Tutoriel Exécuter 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.

circle-check
  1. Obtenez le dernier llama.cpp sur GitHub iciarrow-up-right. Vous pouvez suivre les instructions de compilation ci-dessous également. Changez -DGGML_CUDA=ON en -DGGML_CUDA=OFF si vous n'avez pas de GPU ou si vous voulez simplement une inférence CPU.

  2. Vous pouvez utiliser directement llama.cpp pour télécharger le modèle mais je suggère normalement d'utiliser huggingface_hub Pour utiliser llama.cpp directement, faites :

    {% code overflow="wrap" %}

    {% endcode %}

  3. Ou, téléchargez le modèle via (après avoir installé pip install huggingface_hub hf_transfer Nous suivons des étapes similaires à ci-dessus cependant cette fois nous devrons également effectuer des étapes supplémentaires car le modèle est si volumineux.

  4. Exécutez le modèle en mode conversation et essayez n'importe quel prompt.

  5. éditer --threads -1 pour le nombre de threads CPU, --ctx-size 262114 pour la longueur de contexte, --n-gpu-layers 99 pour le déchargement GPU sur le nombre de couches. Essayez de l'ajuster si votre GPU manque de mémoire. Supprimez-le également si vous n'avez qu'une inférence CPU.

circle-check
circle-check

🛠️ Amélioration de 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 complètes elles-mêmes.

Normalement, -ot ".ffn_.*_exps.=CPU" décharge toutes les couches MoE vers le CPU ! Cela vous permet effectivement de faire tenir 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 disposez de 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 aussi personnaliser le 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 6e couche.

Le dernière version de llama.cpparrow-up-right introduit également le mode haut débit. Utilisez llama-parallel. Lisez-en davantage iciarrow-up-right. 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 la quantification du cache KV pour quantifier les caches K et V en moins de bits. Cela peut aussi augmenter la vitesse de génération en réduisant les mouvements de données RAM / VRAM. Les options autorisées pour la quantification K (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 à longueur de contexte d'un million via le dimensionnement YaRN ici.

🧰 Corrections d'appel 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 besoin de vous inquiéter car ceux-ci incluent déjà nos corrections. Pour le modèle 480B-A35B, veuillez :

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

  2. Utilisez snapshot_download comme d'habitude comme dans https://docs.unsloth.ai/basics/qwen3-coder-how-to-run-locally#llama.cpp-run-qwen3-tutorial ce qui remplacera automatiquement les anciens fichiers

  3. Utilisez le nouveau modèle de chat via --chat-template-file. Voir modèle de chat GGUFarrow-up-right ou chat_template.jinjaarrow-up-right

  4. En bonus, nous avons également 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 prompts 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 pour un emplacement. 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 !!

Ensuite utilisez le tokenizer pour créer l'intégralité du prompt :

💡Benchmarks de performance

circle-info

Ces benchmarks officiels concernent le checkpoint BF16 complet. Pour l'utiliser, il suffit d'utiliser le 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 agentic

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 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 de navigateur agentique

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

Utilisation d'outil agentique

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

Mis à jour

Ce contenu vous a-t-il été utile ?