gpt-oss: Anleitung zum Ausführen
Führe OpenAIs neue Open-Source-Modelle aus und feinabstimme sie!
OpenAI veröffentlicht 'gpt-oss-120b' und 'gpt-oss-20b', zwei SOTA-Open-Source-Sprachmodelle unter der Apache-2.0-Lizenz. Beide 128k-Kontextmodelle übertreffen ähnlich große offene Modelle bei Schlussfolgerungen, Tool-Nutzung und agentischen Aufgaben. Du kannst sie jetzt lokal mit Unsloth ausführen und feinabstimmen!
gpt-oss-20b ausführengpt-oss-120b ausführengpt-oss feinabstimmen
Feinabstimmen gpt-oss-20b kostenlos mit unserem Colab-Notebook
Trainiert mit RL, gpt-oss-120b konkurriert mit o4-mini und gpt-oss-20b konkurriert mit o3-mini. Beide glänzen beim Funktionsaufruf und bei CoT-Reasoning und übertreffen o1 und GPT-4o.
Für beste Leistung stelle sicher, dass dein insgesamt verfügbarer Speicher (Unified Memory + VRAM + Systemspeicher) die Größe der quantisierten Modelldatei übersteigt, die du herunterlädst. Wenn nicht, kann llama.cpp trotzdem per SSD-/HDD-Auslagerung ausgeführt werden, aber die Inferenz wird langsamer sein.
gpt-oss - Unsloth GGUFs:
Enthält Unsloths Korrekturen am Chat-Template. Für beste Ergebnisse verwende unsere Uploads und trainiere mit Unsloth!
20B: gpt-oss-20B
120B: gpt-oss-120B
📜Unsloth-Korrekturen für gpt-oss
Einige unserer Korrekturen wurden in OpenAIs offizielles Modell auf Hugging Face upstream übernommen. Siehe
OpenAI veröffentlichte eine eigenständige Parsing- und Tokenisierungsbibliothek namens Harmony die es ermöglicht, Konversationen in OpenAIs bevorzugtes Format für gpt-oss zu tokenisieren.
Inferenz-Engines verwenden stattdessen im Allgemeinen die jinja-Chatvorlage und nicht das Harmony-Paket, und wir haben nach dem direkten Vergleich mit Harmony einige Probleme damit gefunden. Wie du unten siehst, ist der obere Teil die korrekte gerenderte Form wie bei Harmony. Der untere ist der aktuell von der jinja-Chatvorlage gerenderte. Es gibt einige Unterschiede!

Wir haben außerdem einige Funktionen erstellt, mit denen du OpenAIs Harmony-Bibliothek direkt verwenden kannst, ohne wenn gewünscht eine jinja-Chatvorlage zu benutzen - du kannst einfach normale Konversationen wie unten parsen:
Dann verwende die encode_conversations_with_harmony Funktion von Unsloth:
Das Harmony-Format umfasst mehrere interessante Dinge:
reasoning_effort = "medium"Du kannst low, medium oder high wählen, und das verändert gpt-oss' Reasoning-Budget - im Allgemeinen gilt: je höher, desto besser die Genauigkeit des Modells.developer_instructionsist wie ein System-Prompt, den du hinzufügen kannst.model_identitylässt man am besten unverändert - du kannst es bearbeiten, aber wir sind uns nicht sicher, ob benutzerdefinierte funktionieren werden.
Wir finden mehrere Probleme mit den aktuellen jinja-Chatvorlagen (es gibt mehrere Implementierungen im gesamten Ökosystem):
Funktionen und Tool-Aufrufe werden mit
tojsongerendert, was okay ist, wenn es ein Dict ist, aber wenn es ein String ist, werden Anführungszeichen und andere Symbole mit Backslashes versehen.Es gibt einige zusätzliche Zeilenumbrüche in der jinja-Vorlage an einigen Grenzen.
Die Gedanken des Modells beim Tool-Calling sollten das
analysis-Tag und nichtfinal-Tag.Andere Chatvorlagen scheinen
<|channel|>finalgar nicht zu verwenden - man sollte dies für die finale Assistenten-Nachricht verwenden. Du solltest dies nicht für Gedankengänge oder Tool-Aufrufe verwenden.
Unsere Chatvorlagen für die GGUF-, BnB- und BF16-Uploads sowie alle Versionen sind korrigiert! Wenn wir zum Beispiel unsere und H armonys Form vergleichen, erhalten wir keine unterschiedlichen Zeichen:

🔢 Präzisionsprobleme
Wir haben mehrere Präzisionsprobleme auf Tesla-T4- und Float16-Maschinen gefunden, hauptsächlich weil das Modell mit BF16 trainiert wurde und daher Ausreißer und Überläufe vorhanden waren. MXFP4 wird auf Ampere- und älteren GPUs tatsächlich nicht unterstützt, daher stellt Triton tl.dot_scaled für die MXFP4-Matrixmultiplikation bereit. Dabei werden die Matrizen intern im laufenden Betrieb auf BF16 hochgestuft.
Wir haben ein MXFP4-Inferenz-Notebook auch in Tesla-T4-Colab erstellt!
Software-Emulation ermöglicht das Anvisieren von Hardwarearchitekturen ohne native Unterstützung für Mikroskalierungsoperationen. Derzeit werden in so einem Fall mikroskalierte lhs/rhs zuvor auf den bf16 Elementtyp hochgestuft, um die Dot-Berechnung durchzuführen,
Wir haben festgestellt, dass du bei Verwendung von float16 als Datentyp für Mixed-Precision-Autocast nach einiger Zeit Unendlichkeiten erhältst. Um dem entgegenzuwirken, haben wir festgestellt, dass es hilft, das MoE in bfloat16 auszuführen und es dann entweder in bfloat16- oder float32-Präzision zu belassen. Wenn ältere GPUs nicht einmal bfloat16-Unterstützung haben (wie T4), wird float32 verwendet.
Wir ändern auch alle Präzisionen von Operationen (wie dem Router) für float16-Maschinen auf float32.
🖥️ gpt-oss ausführen
Unten sind Anleitungen für die 20B und 120B Varianten des Modells.
Jede Quantisierung kleiner als F16, einschließlich 2-Bit, hat nur einen minimalen Genauigkeitsverlust, da nur einige Teile (z. B. die Attention-Layers) mit niedrigerer Bitbreite vorliegen, während der Großteil vollpräzise bleibt. Deshalb liegen die Größen nahe am F16-Modell; beispielsweise verhält sich die 2-Bit-Version (11,5 GB) nahezu genauso wie die vollständige 16-Bit-Version (14 GB). Sobald llama.cpp eine bessere Quantisierung für diese Modelle unterstützt, laden wir sie so schnell wie möglich hoch.
Die gpt-oss Modelle von OpenAI enthalten eine Funktion, mit der Benutzer die „Reasoning Effort“ des Modells anpassen können. Damit kannst du den Kompromiss zwischen der Leistung des Modells und seiner Antwortgeschwindigkeit (Latenz) steuern, der davon abhängt, wie viele Token das Modell zum Nachdenken verwendet.
Die gpt-oss Modelle bieten drei unterschiedliche Stufen des Reasoning Efforts, aus denen du wählen kannst:
Niedrig: Optimiert für Aufgaben, die sehr schnelle Antworten erfordern und kein komplexes, mehrstufiges Denken benötigen.
Mittel: Ein Gleichgewicht zwischen Leistung und Geschwindigkeit.
Hoch: Bietet die stärkste Reasoning-Leistung für Aufgaben, die sie benötigen, allerdings mit höherer Latenz.
⚙️ Empfohlene Einstellungen
OpenAI empfiehlt diese Inferenz-Einstellungen für beide Modelle:
temperature=1.0, top_p=1.0, top_k=0
Temperatur von 1,0
Top_K = 0 (oder experimentiere mit 100 für möglicherweise bessere Ergebnisse)
Top_P = 1,0
Empfohlener Mindestkontext: 16.384
Maximale Kontextlänge: 131.072
Chat-Vorlage:
Das End-of-Sentence-/Generierungstoken: EOS ist <|return|>
gpt-oss-20B ausführen
Um Inferenzgeschwindigkeiten von 6+ Tokens pro Sekunde für unsere dynamische 4-Bit-Quantisierung zu erreichen, solltest du mindestens haben 14 GB Unified Memory (kombinierter VRAM und RAM) oder 14 GB Systemspeicher allein. Als Faustregel sollte dein verfügbarer Speicher der Größe des von dir verwendeten Modells entsprechen oder diese übersteigen. GGUF-Link: unsloth/gpt-oss-20b-GGUF
HINWEIS: Das Modell kann mit weniger Speicher als seiner Gesamtgröße ausgeführt werden, aber das verlangsamt die Inferenz. Der maximale Speicher wird nur für die schnellsten Geschwindigkeiten benötigt.
Befolge die bewährten Vorgehensweisen oben. Sie sind dieselben wie beim 120B-Modell.
Du kannst das Modell vorerst auf Google Colab, Docker, LM Studio oder llama.cpp ausführen. Siehe unten:
Du kannst gpt-oss-20b kostenlos mit unserem ausführen Google-Colab-Notebook
🦥 Unsloth Studio-Anleitung
Für dieses Tutorial verwenden wir Unsloth Studio, unsere neue Web-UI zum Ausführen und Trainieren von LLMs. Mit Unsloth Studio können Sie Modelle lokal ausführen auf Mac, Windowsund Linux eingeben und:
Suchen, herunterladen, GGUFs ausführen und Safetensor-Modelle
Modelle vergleichen nebeneinander
Selbstheilendes Tool-Calling + Websuche
Code-Ausführung (Python, Bash)
Automatische Inferenz Parameter-Tuning (Temp, Top-p usw.)
LLMs trainieren 2x schneller mit 70% weniger VRAM

gpt-oss-20b suchen und herunterladen
Beim ersten Start müssen Sie ein Passwort erstellen, um Ihr Konto zu sichern, und sich später erneut anmelden. Anschließend sehen Sie einen kurzen Einrichtungsassistenten, in dem Sie ein Modell, einen Datensatz und grundlegende Einstellungen auswählen. Sie können ihn jederzeit überspringen.
Gehen Sie dann zur Studio Chat Tab und suche in der Suchleiste nach gpt-oss und lade das gewünschte Modell und die gewünschte Quantisierung herunter.

gpt-oss-20b ausführen
Inferenzparameter sollten bei der Verwendung von Unsloth Studio automatisch gesetzt werden; Sie können sie jedoch weiterhin manuell ändern. Sie können auch die Kontextlänge, die Chat-Vorlage und andere Einstellungen bearbeiten.
Weitere Informationen finden Sie in unserer Unsloth Studio-Inferenzanleitung.

🐋 Docker: Tutorial zum Ausführen von gpt-oss-20b
Wenn du bereits Docker Desktop hast, musst du nur den folgenden Befehl ausführen, und fertig:
✨ Llama.cpp: Tutorial zum Ausführen von gpt-oss-20b
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.
Sie können direkt von Hugging Face ziehen über:
Lade das Modell herunter über (nach der Installation von
pip install huggingface_hub hf_transfer). Wenn Downloads hängen bleiben, siehe Hugging Face Hub, XET-Debugging
gpt-oss-120b ausführen:
Um Inferenzgeschwindigkeiten von 6+ Tokens pro Sekunde für unsere 1-Bit-Quantisierung zu erreichen, empfehlen wir mindestens 66 GB Unified Memory (kombinierter VRAM und RAM) oder 66 GB Systemspeicher allein. Als Faustregel sollte dein verfügbarer Speicher der Größe des von dir verwendeten Modells entsprechen oder diese übersteigen. GGUF-Link: unsloth/gpt-oss-120b-GGUF
HINWEIS: Das Modell kann mit weniger Speicher als seiner Gesamtgröße ausgeführt werden, aber das verlangsamt die Inferenz. Der maximale Speicher wird nur für die schnellsten Geschwindigkeiten benötigt.
Befolge die bewährten Vorgehensweisen oben. Sie sind dieselben wie beim 20B-Modell.
🦥 Unsloth Studio-Anleitung
Für dieses Tutorial verwenden wir Unsloth Studio, unsere neue Web-UI zum Ausführen und Trainieren von LLMs. Mit Unsloth Studio können Sie Modelle lokal ausführen auf Mac, Windowsund Linux eingeben und:
Suchen, herunterladen, GGUFs ausführen und Safetensor-Modelle
Modelle vergleichen nebeneinander
Selbstheilendes Tool-Calling + Websuche
Code-Ausführung (Python, Bash)
Automatische Inferenz Parameter-Tuning (Temp, Top-p usw.)
LLMs trainieren 2x schneller mit 70% weniger VRAM

Unsloth Studio einrichten (einmalig)
Die Einrichtung installiert automatisch Node.js (über nvm), baut das Frontend, installiert alle Python-Abhängigkeiten und baut llama.cpp mit CUDA-Unterstützung.
WSL-Benutzer: Sie werden aufgefordert, Ihr sudo Passwort einzugeben, um Build-Abhängigkeiten zu installieren (cmake, git, libcurl4-openssl-dev).
gpt-oss-120b suchen und herunterladen
Beim ersten Start müssen Sie ein Passwort erstellen, um Ihr Konto zu sichern, und sich später erneut anmelden. Anschließend sehen Sie einen kurzen Einrichtungsassistenten, in dem Sie ein Modell, einen Datensatz und grundlegende Einstellungen auswählen. Sie können ihn jederzeit überspringen.
Gehen Sie dann zur Studio Chat Tab und suche in der Suchleiste nach gpt-oss und lade das gewünschte Modell und die gewünschte Quantisierung herunter.

gpt-oss-120b ausführen
Inferenzparameter sollten bei der Verwendung von Unsloth Studio automatisch gesetzt werden; Sie können sie jedoch weiterhin manuell ändern. Sie können auch die Kontextlänge, die Chat-Vorlage und andere Einstellungen bearbeiten.
Weitere Informationen finden Sie in unserer Unsloth Studio-Inferenzanleitung.

📖 Llama.cpp: Tutorial zum Ausführen von gpt-oss-120b
Für gpt-oss-120b werden wir speziell Llama.cpp für optimierte Inferenz verwenden.
Wenn du eine vollpräzise, unquantisierte Versionmöchtest, verwende unsere F16 Versionen!
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.Du kannst llama.cpp direkt verwenden, um das Modell herunterzuladen, aber ich empfehle normalerweise die Verwendung von
huggingface_hubUm llama.cpp direkt zu verwenden, gehe wie folgt vor:Oder lade das Modell über (nach der Installation von
pip install huggingface_hub hf_transfer). Du kannst UD-Q2_K_XL oder andere quantisierte Versionen wählen..Führe das Modell im Konversationsmodus aus und probiere einen beliebigen Prompt aus.
Bearbeiten
--threads -1für die Anzahl der CPU-Threads bearbeiten,--ctx-size262114 fü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.
Verwende -ot ".ffn_.*_exps.=CPU" um alle MoE-Layers auf die CPU auszulagern! Dadurch kannst du effektiv alle Nicht-MoE-Layers auf 1 GPU unterbringen und die Generierungsgeschwindigkeiten verbessern. Du kannst den Regex-Ausdruck anpassen, um mehr Layers unterzubringen, wenn du mehr GPU-Kapazität hast. Weitere Optionen werden besprochen hier.
🛠️ Die Generierungsgeschwindigkeit verbessern
Wenn Sie mehr VRAM haben, können Sie versuchen, mehr MoE-Layer oder ganze Layer auszulagern.
Normalerweise -ot ".ffn_.*_exps.=CPU" lagert alle MoE-Layer auf die CPU aus! Dadurch können Sie effektiv alle Nicht-MoE-Layer auf 1 GPU unterbringen, was die Generierungsgeschwindigkeit verbessert. Sie können den Regex-Ausdruck anpassen, um mehr Layer unterzubringen, wenn Sie mehr GPU-Kapazität haben.
Wenn Sie etwas mehr GPU-Speicher haben, versuchen Sie -ot ".ffn_(up|down)_exps.=CPU" Dies lagert die MoE-Layer für Up- und Down-Projektionen aus.
Versuchen Sie -ot ".ffn_(up)_exps.=CPU" wenn Sie noch mehr GPU-Speicher haben. Dies lagert nur die MoE-Layer für Up-Projektionen aus.
Sie können den Regex auch anpassen, zum Beispiel -ot "\.(6|7|8|9|[0-9][0-9]|[0-9][0-9][0-9])\.ffn_(gate|up|down)_exps.=CPU" bedeutet, Gate-, Up- und Down-MoE-Layer auszulagern, aber nur ab der 6. Schicht.
Die neueste llama.cpp-Version führt außerdem einen High-Throughput-Modus ein. Verwenden Sie llama-parallel. Lesen Sie mehr darüber hier. Sie können auch den KV-Cache auf 4 Bit quantisieren zum Beispiel um den VRAM-/RAM-Datenverkehr zu reduzieren, was den Generierungsprozess ebenfalls beschleunigen kann.
🦥 Feinabstimmung von gpt-oss mit Unsloth
Update vom 28. Aug.: Du kannst dein mit QLoRA feinabgestimmtes gpt-oss-Modell jetzt nach llama.cpp, vLLM, HF usw. exportieren/speichern.
Wir haben außerdem Unsloth Flex Attention eingeführt, wodurch >8× längere Kontextlängen, >50 % weniger VRAM-Nutzung und >1,5× schnelleres Training gegenüber allen Implementierungen möglich sind. Hier mehr lesen
Das Feinabstimmen von gpt-oss mit Unsloth ist 1,5x schneller, benötigt 70 % weniger VRAM und unterstützt 10x längere Kontextlängen. Das gpt-oss-20b-QLoRA-Training passt auf 14 GB VRAM, und gpt-oss-120b funktioniert mit 65 GB VRAM.
QLoRA-Anforderungen: gpt-oss-20b = 14 GB VRAM • gpt-oss-120b = 65 GB VRAM.
BF16-LoRA-Anforderungen: gpt-oss-20b = 44 GB VRAM • gpt-oss-120b = 210 GB VRAM.
Lies unser Schritt-für-Schritt-Tutorial zur Feinabstimmung von gpt-oss:
Tutorial: Wie man gpt-oss feinabstimmtDu kannst dein mit QLoRA feinabgestimmtes gpt-oss-Modell jetzt nach llama.cpp, vLLM, HF usw. exportieren/speichern.
Kostenlose Unsloth-Notebooks zum Feinabstimmen von gpt-oss:
gpt-oss-20b Notebook für Reasoning + Konversation
Reinforcement Learning (GRPO)
Unsloth unterstützt jetzt RL für gpt-oss! Wir haben zwei Notebooks erstellt; für weitere Details lies unseren speziellen Blog zu gpt-oss-RL: gpt-oss RL
2048-Notebook (Offizielles OpenAI-Beispiel)
💾NEU: Speichern in GGUF, vLLM nach dem gpt-oss-Training
Du kannst gpt-oss jetzt mit QLoRA feinabstimmen und das Modell direkt speichern, exportieren oder zusammenführen zu llama.cpp, vLLModer HF - nicht nur Unsloth. Wir werden hoffentlich bald ein kostenloses Notebook veröffentlichen.
Bisher war jedes mit QLoRA feinabgestimmte gpt-oss-Modell auf die Ausführung in Unsloth beschränkt. Wir haben diese Einschränkung entfernt, indem wir On-Demand-Dekquantisierung von MXFP4 Basis-Modelle (wie gpt-oss) während des LoRA-Merge-Prozesses. Dies macht es möglich, dein feinabgestimmtes Modell im bf16-Format zu exportieren.
Nachdem du dein gpt-oss-Modell feinabgestimmt hast, kannst du es jetzt in ein 16-Bit-Format zusammenführen mit einem einzelnen Befehl:
Wenn du das Modell lieber zusammenführen und stattdessen direkt auf den Hugging-Face-Hub pushen möchtest, kannst du das folgendermaßen tun:
💡Effizientes gpt-oss-Feinabstimmen zum Laufen bringen
Wir haben festgestellt, dass MXFP4 zwar sehr effizient ist, aber das Training mit gpt-oss nicht nativ unterstützt. Um diese Einschränkung zu umgehen, haben wir benutzerdefinierte Trainingsfunktionen speziell für MXFP4-Layers implementiert, indem wir es durch Folgendes nachbilden: Bitsandbytes NF4-Quantisierung.
Wir haben OpenAIs Triton-Kernels-Bibliothek direkt verwendet, um MXFP4-Inferenz zu ermöglichen. Für das Finetuning/Training unterstützen die MXFP4-Kernels das Training jedoch noch nicht, da der Backward-Pass noch nicht implementiert ist. Wir arbeiten aktiv daran, ihn in Triton zu implementieren! Es gibt ein Flag namens W_TRANSPOSE wie erwähnt hier, das implementiert werden sollte. Die Ableitung kann durch die Transponierung der Gewichtsmatrizen berechnet werden, daher müssen wir die Transponierungsoperation implementieren.
Wenn du gpt-oss mit einer anderen Bibliothek als Unsloth trainieren möchtest, musst du die Gewichte vor dem Training auf bf16 hochstufen. Dieser Ansatz erhöht signifikant sowohl die VRAM-Nutzung als auch die Trainingszeit um bis zu 300 % mehr Speicherverbrauch! ALLE anderen Trainingsmethoden erfordern mindestens 65 GB VRAM, um das 20B-Modell zu trainieren, während Unsloth nur 14 GB VRAM benötigt (-80 %).
Da beide Modelle die MoE-Architektur verwenden, wählt das 20B-Modell 4 Experten aus 32 aus, während das 120B-Modell pro Token 4 aus 128 auswählt. Während Training und Release werden die Gewichte im MXFP4-Format als nn.Parameter Objekte gespeichert, nicht als nn.Linear -Layers, was die Quantisierung erschwert, insbesondere da MoE-/MLP-Experten etwa 19B der 20B-Parameter ausmachen.
Um BitsandBytes Quantisierung und speichereffizientes Feinabstimmen zu ermöglichen, haben wir diese Parameter in nn.Linear -Layers umgewandelt. Obwohl dies Operationen leicht verlangsamt, ermöglicht es das Feinabstimmen auf GPUs mit begrenztem Speicher, ein lohnender Kompromiss.
Leitfaden zum Feinabstimmen von Datensätzen
Obwohl gpt-oss nur Reasoning unterstützt, kannst du es trotzdem mit einem nicht-reasoning datasetfeinabstimmen, aber das kann seine Reasoning-Fähigkeit beeinträchtigen. Wenn du seine Reasoning-Fähigkeiten beibehalten möchtest (optional), kannst du eine Mischung aus direkten Antworten und Chain-of-Thought-Beispielen verwenden. Verwende mindestens 75 % Reasoning und 25 % nicht-Reasoning in Ihrem Datensatz, damit das Modell seine Reasoning-Fähigkeiten beibehält.
Unser gpt-oss-20b-Kursiv-Notebook verwendet OpenAIs Beispiel, nämlich den Multilingual-Thinking-Datensatz von Hugging Face. Der Zweck der Verwendung dieses Datensatzes besteht darin, dem Modell zu ermöglichen, in diesen vier verschiedenen Sprachen Reasoning-Fähigkeiten zu erlernen und zu entwickeln.

Zuletzt aktualisiert
War das hilfreich?


