gpt-oss : guide d'exécution
Exécutez et fine-tunez les nouveaux modèles open source d'OpenAI !
OpenAI publie « gpt-oss-120b et « gpt-oss-20b», deux modèles de langage ouverts SOTA sous licence Apache 2.0. Les deux modèles à contexte 128k surpassent des modèles ouverts de taille similaire en raisonnement, utilisation d’outils et tâches agentiques. Vous pouvez maintenant les exécuter et les affiner localement avec Unsloth !
Exécuter gpt-oss-20bExécuter gpt-oss-120bAffiner gpt-oss
Affiner gpt-oss-20b gratuitement avec notre notebook Colab
Entraîné avec RL, gpt-oss-120b rivalise avec o4-mini et gpt-oss-20b rivalise avec o3-mini. Les deux excellent dans l’appel de fonctions et le raisonnement CoT, surpassant o1 et GPT-4o.
Pour de meilleures performances, assurez-vous que votre mémoire totale disponible (mémoire unifiée + VRAM + RAM système) dépasse la taille du fichier de modèle quantifié que vous téléchargez. Sinon, llama.cpp peut toujours fonctionner via déchargement sur SSD/HDD, mais l’inférence sera plus lente.
gpt-oss - GGUF Unsloth :
Inclut les corrections du modèle de chat. Pour de meilleurs résultats, utilisez nos mises en ligne et entraînez-vous avec Unsloth !
20B : gpt-oss-20B
120B : gpt-oss-120B
📜Correctifs Unsloth pour gpt-oss
Certains de nos correctifs ont été intégrés en amont au modèle officiel d’OpenAI sur Hugging Face. Voir
OpenAI a publié une bibliothèque autonome d’analyse et de tokenisation appelée Harmony qui permet de tokeniser les conversations au format préféré d’OpenAI pour gpt-oss.
Les moteurs d’inférence utilisent généralement à la place le modèle de chat jinja et non le package Harmony, et nous avons trouvé quelques problèmes après comparaison directe avec Harmony. Comme vous pouvez le voir ci-dessous, le haut correspond à la forme rendue correcte par Harmony. Le dessous est celle rendue par le modèle de chat jinja actuel. Il y a pas mal de différences !

Nous avons également créé quelques fonctions pour vous permettre d’utiliser directement la bibliothèque Harmony d’OpenAI sans modèle de chat jinja si vous le souhaitez — vous pouvez simplement analyser des conversations normales comme ci-dessous :
Ensuite, utilisez la encode_conversations_with_harmony fonction d’Unsloth :
Le format Harmony inclut plusieurs éléments intéressants :
reasoning_effort = "medium"Vous pouvez sélectionner low, medium ou high, et cela modifie le budget de raisonnement de gpt-oss — en général, plus il est élevé, meilleure est la précision du modèle.developer_instructionsest comme une invite système que vous pouvez ajouter.model_identityvaut mieux être laissé tel quel — vous pouvez le modifier, mais nous ne savons pas si des versions personnalisées fonctionneront.
Nous avons constaté plusieurs problèmes avec les modèles de chat jinja actuels (il existe plusieurs implémentations dans l’écosystème) :
Les appels de fonctions et d’outils sont rendus avec
tojson, ce qui convient si c’est un dict, mais si c’est une chaîne, les guillemets et autres symboles deviennent précédés d’antislashs.Il y a quelques lignes supplémentaires dans le modèle jinja à certaines frontières.
Les réflexions du modèle lors de l’appel d’outils devraient avoir la balise
analysiset nonfinalbalise.D’autres modèles de chat semblent ne pas utiliser
<|channel|>finaldu tout — il faut l’utiliser pour le message final de l’assistant. Vous ne devez pas l’utiliser pour les traces de réflexion ni pour les appels d’outils.
Nos modèles de chat pour le GGUF, nos mises en ligne BnB et BF16 et toutes les versions sont corrigés ! Par exemple, en comparant notre format et celui d’Harmony, nous n’obtenons aucun caractère différent :

🔢 Problèmes de précision
Nous avons trouvé plusieurs problèmes de précision sur les machines Tesla T4 et float16, principalement parce que le modèle a été entraîné avec BF16, et que des valeurs aberrantes et des débordements existaient. MXFP4 n’est en fait pas pris en charge sur les GPU Ampere et plus anciens, donc Triton fournit tl.dot_scaled pour la multiplication de matrices MXFP4. Il convertit en interne les matrices en BF16 à la volée.
Nous avons aussi créé un notebook d’inférence MXFP4 également dans Tesla T4 Colab !
Émulation logicielle permet de cibler des architectures matérielles sans prise en charge native des opérations de microscaling. Pour l’instant dans ce cas, les lhs/rhs microscalés sont d’abord convertis en type d’élément bf16 avant le calcul du produit scalaire,
Nous avons constaté que si vous utilisez float16 comme type de données d’autocast en précision mixte, vous obtiendrez des infinis après un certain temps. Pour contrer cela, nous avons constaté qu’effectuer le MoE en bfloat16, puis le conserver en précision bfloat16 ou float32, fonctionne. Si les anciens GPU ne prennent même pas en charge bfloat16 (comme le T4), alors float32 est utilisé.
Nous changeons aussi toutes les précisions des opérations (comme le routeur) en float32 pour les machines float16.
🖥️ Exécution de gpt-oss
Voici des guides pour les 20B et 120B variantes du modèle.
Toute quantification inférieure à F16, y compris 2 bits, entraîne une perte de précision minimale, puisque seules certaines parties (par ex. les couches d’attention) sont en faible nombre de bits tandis que la plupart restent en pleine précision. C’est pourquoi les tailles sont proches du modèle F16 ; par exemple, la version 2 bits (11,5 Go) fonctionne presque pareil que la version complète 16 bits (14 Go). Une fois que llama.cpp prendra en charge une meilleure quantification pour ces modèles, nous les mettrons en ligne dès que possible.
Le gpt-oss les modèles d’OpenAI incluent une fonctionnalité qui permet aux utilisateurs d’ajuster le « niveau d’effort de raisonnement » du modèle. Cela vous donne le contrôle du compromis entre les performances du modèle et sa vitesse de réponse (latence), en fonction du nombre de tokens que le modèle utilisera pour réfléchir.
Le gpt-oss les modèles offrent trois niveaux distincts d’effort de raisonnement parmi lesquels vous pouvez choisir :
Faible: Optimisé pour les tâches qui nécessitent des réponses très rapides et n’exigent pas de raisonnement complexe en plusieurs étapes.
Moyen: Un équilibre entre performance et vitesse.
Élevé: Offre les meilleures performances de raisonnement pour les tâches qui l’exigent, bien que cela entraîne une latence plus élevée.
⚙️ Paramètres recommandés
OpenAI recommande ces paramètres d’inférence pour les deux modèles :
temperature=1.0, top_p=1.0, top_k=0
Température de 1.0
Top_K = 0 (ou essayez 100 pour des résultats potentiellement meilleurs)
Top_P = 1.0
Contexte minimum recommandé : 16 384
Fenêtre de longueur de contexte maximale : 131 072
Modèle de chat :
Le token de fin de phrase/génération : EOS est <|return|>
Exécuter gpt-oss-20B
Pour atteindre des vitesses d’inférence de plus de 6 tokens par seconde pour notre quantification dynamique 4 bits, disposez d’au moins 14 Go de mémoire unifiée (VRAM et RAM combinées) ou 14 Go 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. Lien GGUF : unsloth/gpt-oss-20b-GGUF
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 bonnes pratiques ci-dessus. Elles sont les mêmes que pour le modèle 120B.
Vous pouvez exécuter le modèle sur Google Colab, Docker, LM Studio ou llama.cpp pour le moment. Voir ci-dessous :
Vous pouvez exécuter gpt-oss-20b gratuitement avec notre notebook Google Colab
🦥 Guide Unsloth Studio
Pour ce tutoriel, nous utiliserons Unsloth Studio, qui est notre nouvelle interface web pour exécuter et entraîner des LLM. Avec Unsloth Studio, vous pouvez exécuter des modèles localement sur Mac, Windows, et Linux, et :
Rechercher, télécharger, exécuter des GGUF et des modèles safetensor
Comparer les modèles côte à côte
Auto-réparation appel d’outils + recherche web
Exécution de code (Python, Bash)
Inférence automatique réglage des paramètres (temp, top-p, etc.)
Entraîner des LLM 2x plus vite avec 70 % de VRAM en moins

Rechercher et télécharger gpt-oss-20b
Lors du premier lancement, vous devrez créer un mot de passe pour sécuriser votre compte et vous reconnecter plus tard. Vous verrez ensuite un bref assistant de configuration pour choisir un modèle, un jeu de données et des paramètres de base. Vous pouvez le passer à tout moment.
Ensuite, allez dans l’onglet Studio Chat onglet et recherchez gpt-oss dans la barre de recherche, puis téléchargez le modèle et la quantification souhaités.

Exécuter gpt-oss-20b
Les paramètres d’inférence devraient être définis automatiquement lors de l’utilisation d’Unsloth Studio ; toutefois, vous pouvez toujours les modifier manuellement. Vous pouvez également modifier la longueur du contexte, le modèle de conversation et d’autres réglages.
Pour plus d’informations, vous pouvez consulter notre guide d’inférence Unsloth Studio.

🐋 Docker : Tutoriel pour exécuter gpt-oss-20b
Si vous avez déjà Docker Desktop, il vous suffit d’exécuter la commande ci-dessous et c’est tout :
✨ Llama.cpp : Tutoriel pour exécuter gpt-oss-20b
Obtenez la dernière version
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 simplement une inférence CPU. Pour les appareils Apple Mac / Metal, définissez-DGGML_CUDA=OFFpuis continuez comme d'habitude - la prise en charge de Metal est activée par défaut.
Vous pouvez le récupérer directement depuis Hugging Face via :
Téléchargez le modèle via (après avoir installé
pip install huggingface_hub hf_transfer). Si les téléchargements se bloquent, voir Hugging Face Hub, débogage XET
Exécuter gpt-oss-120b :
Pour atteindre des vitesses d’inférence de plus de 6 tokens par seconde pour notre quantification 1 bit, nous recommandons au moins 66 Go de mémoire unifiée (VRAM et RAM combinées) ou 66 Go 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. Lien GGUF : unsloth/gpt-oss-120b-GGUF
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 bonnes pratiques ci-dessus. Elles sont les mêmes que pour le modèle 20B.
🦥 Guide Unsloth Studio
Pour ce tutoriel, nous utiliserons Unsloth Studio, qui est notre nouvelle interface web pour exécuter et entraîner des LLM. Avec Unsloth Studio, vous pouvez exécuter des modèles localement sur Mac, Windows, et Linux, et :
Rechercher, télécharger, exécuter des GGUF et des modèles safetensor
Comparer les modèles côte à côte
Auto-réparation appel d’outils + recherche web
Exécution de code (Python, Bash)
Inférence automatique réglage des paramètres (temp, top-p, etc.)
Entraîner des LLM 2x plus vite avec 70 % de VRAM en moins

Configurer Unsloth Studio (une seule fois)
La configuration installe automatiquement Node.js (via nvm), compile le frontend, installe toutes les dépendances Python et compile llama.cpp avec la prise en charge CUDA.
Utilisateurs WSL : il vous sera demandé votre sudo mot de passe pour installer les dépendances de compilation (cmake, git, libcurl4-openssl-dev).
Rechercher et télécharger gpt-oss-120b
Lors du premier lancement, vous devrez créer un mot de passe pour sécuriser votre compte et vous reconnecter plus tard. Vous verrez ensuite un bref assistant de configuration pour choisir un modèle, un jeu de données et des paramètres de base. Vous pouvez le passer à tout moment.
Ensuite, allez dans l’onglet Studio Chat onglet et recherchez gpt-oss dans la barre de recherche, puis téléchargez le modèle et la quantification souhaités.

Exécuter gpt-oss-120b
Les paramètres d’inférence devraient être définis automatiquement lors de l’utilisation d’Unsloth Studio ; toutefois, vous pouvez toujours les modifier manuellement. Vous pouvez également modifier la longueur du contexte, le modèle de conversation et d’autres réglages.
Pour plus d’informations, vous pouvez consulter notre guide d’inférence Unsloth Studio.

📖 Llama.cpp : Tutoriel pour exécuter gpt-oss-120b
Pour gpt-oss-120b, nous utiliserons spécifiquement Llama.cpp pour une inférence optimisée.
Si vous voulez une version non quantifiée en pleine précision, utilisez nos versions F16 !
Obtenez la dernière version
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 simplement une inférence CPU.Vous pouvez utiliser directement llama.cpp pour télécharger le modèle, mais je suggère normalement d’utiliser
huggingface_hubPour utiliser llama.cpp directement, faites :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 de contexte,--n-gpu-layers 99pour le déchargement GPU, selon le nombre de couches. Essayez de l’ajuster si votre GPU manque de mémoire. Supprimez-le aussi si vous n'avez qu'une inférence CPU.
Utilisez -ot ".ffn_.*_exps.=CPU" pour décharger toutes les couches MoE sur 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 inclure plus de couches si vous avez plus de capacité GPU. Plus d’options sont abordées ici.
🛠️ Améliorer la vitesse de génération
Si vous avez plus de VRAM, vous pouvez essayer de décharger davantage de couches MoE, ou de décharger des couches entières.
Normalement, -ot ".ffn_.*_exps.=CPU" décharge toutes les couches MoE vers le CPU ! Cela permet effectivement de faire tenir toutes les couches non MoE sur 1 GPU, améliorant ainsi les vitesses de génération. Vous pouvez personnaliser l'expression regex pour faire tenir davantage 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 montante et descendante.
Essayez -ot ".ffn_(up)_exps.=CPU" si vous avez encore plus de mémoire GPU. Cela décharge uniquement les couches MoE de projection montante.
Vous pouvez aussi 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 uniquement à partir de la 6e couche.
Le dernière version de llama.cpp introduit également un mode à haut débit. Utilisez llama-parallel. En savoir plus ici. Vous pouvez aussi quantifier le cache KV en 4 bits par exemple pour réduire les déplacements VRAM / RAM, ce qui peut aussi accélérer le processus de génération.
🦥 Affinage de gpt-oss avec Unsloth
Mise à jour du 28 août: Vous pouvez désormais exporter/enregistrer votre modèle gpt-oss affiné avec QLoRA vers llama.cpp, vLLM, HF, etc.
Nous avons également introduit Unsloth Flex Attention qui permet >8× plus longues longueurs de contexte, >50 % d’utilisation de VRAM en moins et >1,5× entraînement plus rapide par rapport à toutes les implémentations. En savoir plus ici
L’affinage Unsloth de gpt-oss est 1,5x plus rapide, utilise 70 % de VRAM en moins et prend en charge des longueurs de contexte 10x plus longues. L’entraînement QLoRA de gpt-oss-20b tient dans 14 Go de VRAM, et gpt-oss-120b fonctionne sur 65 Go de VRAM.
Exigences QLoRA : gpt-oss-20b = 14 Go de VRAM • gpt-oss-120b = 65 Go de VRAM.
Exigences BF16 LoRA : gpt-oss-20b = 44 Go de VRAM • gpt-oss-120b = 210 Go de VRAM.
Lisez notre tutoriel étape par étape pour l’affinage de gpt-oss :
Tutoriel : comment fine-tuner gpt-ossVous pouvez désormais exporter/enregistrer votre modèle gpt-oss affiné avec QLoRA vers llama.cpp, vLLM, HF, etc.
Notebooks Unsloth gratuits pour affiner gpt-oss :
gpt-oss-20b Notebook Raisonnement + Conversationnel
Apprentissage par renforcement (GRPO)
Unsloth prend désormais en charge le RL pour gpt-oss ! Nous avons créé deux notebooks, pour plus de détails, lisez notre blog spécifique sur le RL de gpt-oss : gpt-oss RL
Notebook 2048 (Exemple officiel d’OpenAI)
💾NOUVEAU : Enregistrement vers GGUF, vLLM après l’entraînement de gpt-oss
Vous pouvez maintenant affiner gpt-oss avec QLoRA et directement enregistrer, exporter ou fusionner le modèle vers llama.cpp, vLLM, ou HF - pas seulement Unsloth. Nous publierons, espérons-le, bientôt un notebook gratuit.
Auparavant, tout modèle gpt-oss affiné avec QLoRA était limité à une exécution dans Unsloth. Nous avons supprimé cette limitation en introduisant déquantification à la demande de MXFP4 des modèles de base (comme gpt-oss) pendant le processus de fusion LoRA. Cela permet de exporter votre modèle affiné au format bf16.
Après avoir affiné votre modèle gpt-oss, vous pouvez désormais le fusionner dans un format 16 bits avec une commande unique:
Si vous préférez fusionner le modèle et l’envoyer directement sur le hub hugging-face à la place, vous pouvez le faire en utilisant :
💡Faire fonctionner efficacement l’affinage de gpt-oss
Nous avons constaté que, bien que MXFP4 soit très efficace, il ne prend pas nativement en charge l’entraînement avec gpt-oss. Pour surmonter cette limitation, nous avons implémenté des fonctions d’entraînement personnalisées spécifiquement pour les couches MXFP4 en l’imitant via la quantification Bitsandbytes NF4.
Nous avons utilisé directement la bibliothèque Triton Kernels d’OpenAI pour permettre l’inférence MXFP4. Pour l’affinage / l’entraînement cependant, les noyaux MXFP4 ne prennent pas encore en charge l’entraînement, car la passe arrière n’est pas encore implémentée. Nous travaillons activement à son implémentation dans Triton ! Il existe un drapeau appelé W_TRANSPOSE comme mentionné ici, qui devrait être implémenté. La dérivée peut être calculée par la transposée des matrices de poids, et nous devons donc implémenter l’opération de transposition.
Si vous souhaitez entraîner gpt-oss avec une bibliothèque autre qu’Unsloth, vous devrez convertir les poids en bf16 avant l’entraînement. Cette approche, cependant, augmente considérablement à la fois l’utilisation de la VRAM et le temps d’entraînement jusqu’à 300 % de mémoire en plus! TOUTES les autres méthodes d’entraînement nécessiteront un minimum de 65 Go de VRAM pour entraîner le modèle 20b, tandis qu’Unsloth ne nécessite que 14 Go de VRAM (-80 %).
Comme les deux modèles utilisent une architecture MoE, le modèle 20B sélectionne 4 experts sur 32, tandis que le modèle 120B en sélectionne 4 sur 128 par token. Pendant l’entraînement et la publication, les poids sont stockés au format MXFP4 comme des objets nn.Parameter , et non comme des couches nn.Linear , ce qui complique la quantification, d’autant plus que les experts MoE/MLP représentent environ 19B des 20B paramètres.
Pour activer la quantification BitsandBytes et l’affinage économe en mémoire, nous avons converti ces paramètres en couches nn.Linear . Bien que cela ralentisse légèrement les opérations, cela permet l’affinage sur des GPU à mémoire limitée, un compromis qui en vaut la peine.
Guide d’affinage des jeux de données
Bien que gpt-oss ne prenne en charge que le raisonnement, vous pouvez toujours l’affiner avec un datasetsans raisonnement, mais cela peut affecter sa capacité de raisonnement. Si vous souhaitez maintenir ses capacités de raisonnement (facultatif), vous pouvez utiliser un mélange de réponses directes et d’exemples de chaîne de pensée. Utilisez au moins 75 % de raisonnement et 25 % sans raisonnement dans votre jeu de données pour que le modèle conserve ses capacités de raisonnement.
Notre notebook conversationnel gpt-oss-20b utilise l’exemple d’OpenAI, qui est le jeu de données Multilingual-Thinking de Hugging Face. L’objectif de l’utilisation de ce jeu de données est de permettre au modèle d’apprendre et de développer des capacités de raisonnement dans ces quatre langues distinctes.

Mis à jour
Ce contenu vous a-t-il été utile ?


