openaigpt-oss : guide d'exécution

Exécutez et fine-tunez les nouveaux modèles open source d'OpenAI !

OpenAI lance « gpt-oss-120b' et « gpt-oss-20b', deux modèles de langage ouverts SOTA sous licence Apache 2.0. Les deux modèles contextuels de 128k surpassent des modèles ouverts de taille comparable en raisonnement, utilisation d’outils et tâches agentiques. Vous pouvez désormais 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 carnet Colabarrow-up-right

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 des performances optimales, assurez-vous que votre mémoire totale disponible (mémoire unifiée + VRAM + RAM système) dépasse la taille du fichier du modèle quantifié que vous téléchargez. Si ce n’est pas le cas, llama.cpp peut toujours fonctionner via un déchargement SSD/HDD, mais l’inférence sera plus lente.

gpt-oss - Unsloth GGUFs :

circle-check

📜Correctifs Unsloth pour gpt-oss

circle-info

Certains de nos correctifs ont été intégrés en amont dans le modèle officiel d’OpenAI sur Hugging Face. Voirarrow-up-right

OpenAI a publié une bibliothèque autonome d’analyse et de tokenisation appelée Harmonyarrow-up-right 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 paquet Harmony, et nous avons trouvé certains problèmes en les comparant directement à Harmony. Comme vous pouvez le voir ci-dessous, le haut est la forme rendue correcte, comme avec Harmony. Le bas est celui rendu par le modèle de chat jinja actuel. Il y a pas mal de différences !

Nous avons également créé કેટલીક 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 :

Puis utilisez la encode_conversations_with_harmony fonction d’Unsloth :

Le format Harmony inclut plusieurs éléments intéressants :

  1. reasoning_effort = "medium" Vous pouvez choisir low, medium ou high, et cela modifie le budget de raisonnement de gpt-oss - en général, plus c’est élevé, meilleure est la précision du modèle.

  2. developer_instructions est comme un prompt système que vous pouvez ajouter.

  3. model_identity vaut mieux le laisser tel quel - vous pouvez le modifier, mais nous ne savons pas si des valeurs personnalisées fonctionneront.

Nous trouvons plusieurs problèmes avec les modèles de chat jinja actuels (il existe plusieurs implémentations dans l’écosystème) :

  1. Les appels de fonctions et d’outils sont rendus avec tojson, ce qui est correct si c’est un dict, mais si c’est une chaîne, les guillemets et autres symboles sont échappés par des backslashes.

  2. Il y a des lignes vides supplémentaires dans le modèle jinja à certaines limites.

  3. Les pensées d’appel d’outil du modèle devraient avoir la balise analysis et non la balise final autres modèles de chat semblent ne pas utiliser.

  4. <|channel|>final du tout - il faut l’utiliser pour le message final de l’assistant. Vous ne devez pas l’utiliser pour les traces de réflexion ou les appels d’outil. Nos modèles de chat pour le GGUF, nos versions BnB et BF16, ainsi que toutes les versions, sont corrigés ! Par exemple, en comparant notre format et celui de Harmony, nous n’obtenons aucune différence de caractères :

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é en BF16, et donc des valeurs aberrantes et des dépassements existaient. MXFP4 n’est pas réellement pris en charge sur Ampere et les GPU plus anciens, donc Triton fournit

tl.dot_scaled pour la multiplication matricielle MXFP4. Il convertit à la volée les matrices en BF16 en interne. Nous avons également créé un

carnet d’inférence MXFP4 sur Tesla T4 Colab !arrow-up-right L’émulation logicielle

circle-info

permet de cibler des architectures matérielles sans prise en charge native des opérations de microscaling. Actuellement, dans ce cas, les lhs/rhs microscalés sont convertis en amont en type d’élémentarrow-up-right bf16 avant le calcul du produit, Nous avons constaté que si vous utilisez float16 comme type de données autocast en précision mixte, vous obtiendrez des infinis au bout d’un certain temps. Pour contrer cela, nous avons trouvé qu’il fallait effectuer le MoE en bfloat16, puis le laisser soit en précision bfloat16, soit float32. Si les anciens GPU ne prennent même pas en charge bfloat16 (comme le T4), alors float32 est utilisé.

Nous changeons également toutes les précisions des opérations (comme le routeur) en float32 pour les machines float16.

🖥️

Exécution de gpt-oss Voici ci-dessous des guides pour les

et 20B variantes du modèle. 120B Toute quantification plus petite que F16, y compris 2 bits, entraîne une perte de précision minimale, car 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) obtient presque les mêmes performances que la version complète 16 bits (14 Go). Dès que llama.cpp prendra en charge une meilleure quantification pour ces modèles, nous les téléverserons dès que possible.

circle-info

Le

gpt-oss 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 sur le compromis entre les performances du modèle et sa vitesse de réponse (latence), qui dépend du nombre de jetons que le modèle utilisera pour réfléchir. modèles offrent trois niveaux distincts d’effort de raisonnement parmi lesquels vous pouvez choisir :

gpt-oss 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 sur le compromis entre les performances du modèle et sa vitesse de réponse (latence), qui dépend du nombre de jetons que le modèle utilisera pour réfléchir. Faible

  • : Optimisé pour les tâches qui nécessitent des réponses très rapides et ne demandent pas de raisonnement complexe en plusieurs étapes.Moyen

  • : Un équilibre entre performances et vitesse.Élevé

  • : Offre les meilleures performances de raisonnement pour les tâches qui le nécessitent, au prix d’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 de meilleurs résultats possibles)

  • Top_P = 1,0

  • Contexte minimal recommandé : 16 384

  • Fenêtre de longueur de contexte maximale : 131 072

  • Modèle de chat :

<|start|>system<|message|>Vous êtes ChatGPT, un grand modèle de langage entraîné par OpenAI.\nDate limite des connaissances : 2024-06\nDate actuelle : 2025-08-05\n\nRaisonnement : medium\n\n# Canaux valides : analysis, commentary, final. Un canal doit être inclus pour chaque message.<|end|><|start|>user<|message|>Hello<|end|><|start|>assistant<|channel|>final<|message|>Hi there!<|end|><|start|>user<|message|>What is 1+1?<|end|><|start|>assistant

<|return|> Exécuter gpt-oss-20B

Pour atteindre des vitesses d’inférence de 6+ jetons par seconde avec 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 :arrow-up-right

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 atteindre les vitesses les plus rapides. Suivez les

circle-info

meilleures 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 l’instant. Voir ci-dessous :

Vous pouvez exécuter gpt-oss-20b gratuitement avec notre

carnet Google Colab 🦥 Guide Unsloth Studioarrow-up-right

Pour ce tutoriel, nous utiliserons

, 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 Unsloth StudioMac, Windows , et Linux et :Rechercher, télécharger,

1

MacOS, Linux, WSL :

curl -fsSL https://unsloth.ai/install.sh | sh

irm https://unsloth.ai/install.ps1 | iex

2

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.

La première installation peut prendre 5 à 10 minutes. C’est normal car

circle-exclamation
circle-info

il vous sera demandé votre mot de passe sudo pour installer les dépendances de compilation (cmake, git, libcurl4-openssl-dev).

3

Lancer Unsloth

MacOS, Linux, WSL, Windows :

Puis ouvrez http://localhost:8888 dans votre navigateur.

4

Rechercher et télécharger gpt-oss-20b

Au 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 d’intégration pour choisir un modèle, un jeu de données et des paramètres de base. Vous pouvez le passer à tout moment.

Puis allez dans l’onglet Studio Chat et recherchez gpt-oss dans la barre de recherche, puis téléchargez le modèle et la quantification souhaités.

5

Exécuter gpt-oss-20b

Les paramètres d’inférence devraient être définis automatiquement lors de l’utilisation d’Unsloth Studio, mais vous pouvez toujours les modifier manuellement. Vous pouvez également modifier la longueur du contexte, le modèle de chat et d’autres paramètres.

Pour plus d’informations, vous pouvez consulter notre guide d’inférence d’Unsloth Studio.

🐋 Docker : tutoriel 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 terminé :

Llama.cpp : tutoriel Exécuter gpt-oss-20b

  1. Obtenez la dernière version de llama.cpp sur GitHub iciarrow-up-right. Vous pouvez également suivre les instructions de compilation ci-dessous. Remplacez -DGGML_CUDA=ON par -DGGML_CUDA=OFF si vous n’avez pas de GPU ou si vous voulez simplement une inférence CPU. Pour les appareils Apple Mac / Metal, définissez -DGGML_CUDA=OFF puis continuez comme d’habitude - la prise en charge Metal est activée par défaut.

  1. Vous pouvez télécharger directement depuis Hugging Face via :

  2. 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 6+ jetons par seconde avec notre quantification 1 bit, nous recommandons au moins 66 Go de mémoire unifiée 14 Go de RAM système 66 Go de RAM système unsloth/gpt-oss-20b-GGUF unsloth/gpt-oss-120b-GGUFarrow-up-right

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 atteindre les vitesses les plus rapides. Suivez les

circle-info

meilleures pratiques ci-dessus . Elles sont les mêmes que pour le modèle 120B.. Elles sont les mêmes que pour le modèle 20B.

Pour ce tutoriel, nous utiliserons

, 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 Unsloth StudioMac, Windows , et Linux et :Rechercher, télécharger,

1

MacOS, Linux, WSL :

curl -fsSL https://unsloth.ai/install.sh | sh

irm https://unsloth.ai/install.ps1 | iex

2

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.

La première installation peut prendre 5 à 10 minutes. C’est normal car

circle-exclamation
circle-info

il vous sera demandé votre mot de passe sudo pour installer les dépendances de compilation (cmake, git, libcurl4-openssl-dev).

3

Lancer Unsloth

curl -fsSL https://unsloth.ai/install.sh | sh

Windows Powershell :

Puis ouvrez http://localhost:8888 dans votre navigateur.

4

Rechercher et télécharger gpt-oss-120b

Au 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 d’intégration pour choisir un modèle, un jeu de données et des paramètres de base. Vous pouvez le passer à tout moment.

Puis allez dans l’onglet Studio Chat et recherchez gpt-oss dans la barre de recherche, puis téléchargez le modèle et la quantification souhaités.

5

Exécuter gpt-oss-120b

Les paramètres d’inférence devraient être définis automatiquement lors de l’utilisation d’Unsloth Studio, mais vous pouvez toujours les modifier manuellement. Vous pouvez également modifier la longueur du contexte, le modèle de chat et d’autres paramètres.

Pour plus d’informations, vous pouvez consulter notre guide d’inférence d’Unsloth Studio.

📖 Llama.cpp : tutoriel Exécuter gpt-oss-120b

Pour gpt-oss-120b, nous utiliserons spécifiquement Llama.cpp pour une inférence optimisée.

circle-check
  1. Obtenez la dernière version de llama.cpp sur GitHub iciarrow-up-right. Vous pouvez également suivre les instructions de compilation ci-dessous. Remplacez -DGGML_CUDA=ON par -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 vous suggère normalement d’utiliser huggingface_hub Pour utiliser directement llama.cpp, faites :

  3. Ou téléchargez le modèle via (après installation de pip install huggingface_hub hf_transfer ). Vous pouvez choisir UD-Q2_K_XL, ou d’autres versions quantifiées..

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

  5. Modifiez --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 combien 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

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

Normalement, -ot ".ffn_.*_exps.=CPU" décharge toutes les couches MoE vers le CPU ! Cela permet effectivement de placer toutes les couches non MoE sur 1 GPU, améliorant ainsi les vitesses de génération. Vous pouvez personnaliser l’expression regex pour décharger davantage 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 vers le haut et vers le bas.

Essayez -ot ".ffn_(up)_exps.=CPU" si vous avez encore plus de mémoire GPU. Cela décharge uniquement les couches MoE de projection vers le haut.

Vous pouvez également personnaliser l’expression 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.

gpt-oss dernière version de llama.cpparrow-up-right introduit également un mode haut débit. Utilisez llama-parallel. En savoir plus à ce sujet iciarrow-up-right. Vous pouvez également 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

circle-check

L’affinage gpt-oss avec Unsloth 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 sur 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 pas à pas pour affiner gpt-oss :

openaiTutoriel : comment fine-tuner gpt-osschevron-right
circle-check

Cahiers Unsloth gratuits pour affiner gpt-oss :

Apprentissage par renforcement (GRPO)

Unsloth prend désormais en charge le RL pour gpt-oss ! Nous avons créé deux carnets ; pour plus de détails, lisez notre blog spécifique sur le RL de gpt-oss : gpt-oss RL

💾NOUVEAU : enregistrement en GGUF, vLLM après l’entraînement gpt-oss

Vous pouvez désormais affiner gpt-oss avec QLoRA et enregistrer, exporter ou fusionner directement le modèle vers llama.cpp, vLLMou HF - pas seulement Unsloth. Nous publierons bientôt, espérons-le, un carnet gratuit.

Auparavant, tout modèle gpt-oss affiné avec QLoRA était limité à une exécution dans Unsloth. Nous avons supprimé cette limitation en introduisant la déquantification à la demande des modèles de base MXFP4 (comme gpt-oss) pendant le processus de fusion LoRA. Cela permet d’ 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 seule commande:

Si vous préférez plutôt fusionner le modèle et l’envoyer directement sur le hub hugging-face, vous pouvez le faire avec :

💡Faire fonctionner un affinage efficace 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écialement pour les couches MXFP4 en l’émulant via Bitsandbytes la quantification 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 kernels MXFP4 ne prennent pas encore en charge l’entraînement, car la passe arrière n’est pas encore implémentée. Nous y travaillons activement dans Triton ! Il existe un indicateur appelé W_TRANSPOSE comme mentionné iciarrow-up-right, qui doit être implémenté. La dérivée peut être calculée par la transposition des matrices de poids, et nous devons donc implémenter l’opération de transposition.

Si vous voulez entraîner gpt-oss avec une autre bibliothèque qu’Unsloth, vous devrez convertir les poids en bf16 avant l’entraînement. Cette approche, cependant, augmente considérablement à la fois l’utilisation de VRAM et le temps d’entraînement, jusqu’à 300 % d’utilisation 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 n’en requiert que 14 Go (-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 jeton. Pendant l’entraînement et la publication, les poids sont stockés au format MXFP4 sous forme de nn.Parameter objets, et non comme nn.Linear couches, ce qui complique la quantification, d’autant plus que les experts MoE/MLP représentent environ 19B des 20B paramètres.

Pour activer BitsandBytes la quantification et l’affinage économe en mémoire, nous avons converti ces paramètres en nn.Linear couches. Bien que cela ralentisse légèrement les opérations, cela permet un 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 jeu de donnéesnon axé sur le raisonnement, mais cela peut affecter sa capacité de raisonnement. Si vous souhaitez conserver ses capacités de raisonnement (facultatif), vous pouvez utiliser un mélange de réponses directes et d’exemples de pensée à voix haute. Utilisez au moins 75 % de raisonnement variantes du modèle. 25 % sans raisonnement dans votre jeu de données pour que le modèle conserve ses capacités de raisonnement.

Notre carnet conversationnel gpt-oss-20b utilise l’exemple d’OpenAI, qui est le jeu de données Multilingual-Thinking de Hugging Face. L’objectif d’utiliser 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 ?