gpt-oss: 実行ガイド
OpenAI の新しいオープンソースモデルを実行およびファインチューニングしましょう!
OpenAIがリリースした「gpt-oss-120b」 と「gpt-oss-20b」、Apache 2.0ライセンスの下で公開された2つの最先端オープン言語モデルです。どちらの128kコンテキストモデルも、同程度のサイズのオープンモデルを推論、ツール使用、エージェントタスクで上回ります。Unslothを使えばローカルで実行およびファインチューニングできます!
gpt-oss-20bを実行するgpt-oss-120bを実行するgpt-ossをファインチューニングする
ファインチューニング gpt-oss-20bを私たちの Colabノートブックで無料で
で訓練済み 強化学習(RL), gpt-oss-120b は o4-mini と競合し、 gpt-oss-20b は o3-mini と競合します。どちらも関数呼び出しとCoT推論に優れており、o1やGPT-4oを上回ります。
最高のパフォーマンスを得るには、利用可能な合計メモリ(統一メモリ + VRAM + システムRAM)がダウンロードする量子化モデルファイルのサイズを上回っていることを確認してください。そうでない場合でも、llama.cppはSSD/HDDオフロード経由で動作できますが、推論は遅くなります。
gpt-oss - Unsloth GGUF:
Unslothの チャットテンプレート修正が含まれます。最良の結果を得るには、当社のアップロードを使用し、Unslothで学習してください!
20B: gpt-oss-20B
120B: gpt-oss-120B
📜gpt-ossに対するUnslothの修正
当社の一部の修正は、OpenAIの公式モデルのHugging Face上のリポジトリに上流へプッシュされました。 print(completion.choices[0].message.content)
OpenAIは単体のパーシングとトークナイゼーションのライブラリを公開しました: Harmony は、会話をgpt-ossの推奨フォーマットにトークン化することを可能にします。
推論エンジンは一般的に代わりにjinjaチャットテンプレートを使用し、Harmonyパッケージは使わないことが多く、私たちはHarmonyと直接比較した際にいくつか問題を発見しました。以下に示す通り、上がHarmonyによる正しいレンダリング形式で、下が現在のjinjaチャットテンプレートによるレンダリングです。かなりの違いがあります!

また、希望する場合にjinjaチャットテンプレートを使わずにOpenAIのHarmonyライブラリを直接使用できるようにする関数も作成しました — 単に以下のように通常の会話をパースするだけで使えます:
その後、 encode_conversations_with_harmony 関数をUnslothから使用します:
harmonyフォーマットにはいくつか興味深い要素が含まれます:
reasoning_effort = "medium"low、medium、highを選択でき、これはgpt-ossの推論(reasoning)バジェットを変えます — 一般に高いほどモデルの精度が向上します。developer_instructionsは追加できるシステムプロンプトのようなものです。model_identityはそのままにしておくのが最良です — 編集は可能ですが、カスタムにして正常に機能するかは不明です。
私たちは現在のjinjaチャットテンプレートに複数の問題を見つけました(エコシステム上に複数の実装があります):
関数やツール呼び出しは
tojsonでレンダリングされます。これは辞書なら問題ありませんが、文字列の場合は引用符などの 記号がバックスラッシュでエスケープされます。.jinjaテンプレートのいくつかの境界に 余分な改行 が存在します。
モデルのツール呼び出しに関する思考は
analysisタグであるべきであり、finalタグではありません。.他のチャットテンプレートは
<|channel|>finalを全く利用していないようです — これは最終のアシスタントメッセージに使用すべきです。思考のトレースやツール呼び出しには使用すべきではありません。
GGUF用の当社のチャットテンプレート、BnBやBF16アップロードおよび全バージョンは修正済みです!例えば当社とHarmonyのフォーマットを比較すると、文字の違いはありません:

🔢 精度の問題
モデルはBF16で訓練されたため、主にTesla T4やfloat16マシンで複数の精度問題を発見しました。そのため外れ値やオーバーフローが存在しました。MXFP4は実際にはAmpere以前のGPUでサポートされていないため、TritonはMXFP4行列乗算のために tl.dot_scaled を提供します。これは内部で行列を動的にBF16へアップキャストします。
私たちは MXFP4推論ノートブック もTesla T4のColabで作成しました!
ソフトウェアエミュレーション はネイティブのマイクロスケーリング操作をサポートしないハードウェアアーキテクチャを対象にすることを可能にします。現状では、そのような場合、マイクロスケールされたlhs/rhsはドット計算のために事前に bf16 要素型にアップキャストされます、
もしmixed precision autocastのデータ型にfloat16を使うと、しばらくすると無限大が発生することがわかりました。これを回避するために、MoE部分をbfloat16で行い、その後はbfloat16かfloat32のどちらかの精度にしておくことを推奨します。古いGPUにbfloat16サポートがない場合(T4のように)、float32が使用されます。
また、float16マシンではルーターなどのすべての演算の精度をfloat32に変更します。
🖥️ gpt-ossの実行
F16より小さい任意の量子化、2ビットを含めほとんど精度低下がありません。なぜなら一部(例えばアテンション層)が低ビット化されるだけで、ほとんどはフル精度のままだからです。だからサイズはF16モデルに近く、例えば2ビット(11.5GB)版はフル16ビット(14GB)版とほぼ同等の性能を示します。llama.cppがこれらのモデルのより良い量子化をサポートしたら、できるだけ早くアップロードします。
最新の gpt-oss OpenAIのモデルには、モデルの「reasoning effort(推論努力)」を調整する機能が含まれます。これはモデルの性能と応答速度(レイテンシー)のトレードオフを制御するもので、モデルが思考に使うトークン量によって変わります。
最新の gpt-oss モデルは選べる3つの異なる推論努力レベルを提供します:
Low(低): 非常に高速な応答を必要とし、複雑な多段階推論を必要としないタスクに最適化されています。
Medium(中): 性能と速度のバランスです。
High(高): 必要なタスクに対して最も高い推論性能を提供しますが、その分レイテンシーが高くなります。
⚙️ 推奨設定
OpenAIは両モデルに対して次の推論設定を推奨しています:
temperature=1.0, top_p=1.0, top_k=0
Temperature(温度)を1.0に設定
Top_K = 0(またはより良い結果を試すために100を試してください)
Top_P = 1.0
推奨最小コンテキスト:16,384
最大コンテキスト長ウィンドウ:131,072
チャットテンプレート:
文末/生成終了トークン:EOSは <|return|>
gpt-oss-20Bを実行する
当社のDynamic 4-bit量子化で6+ トークン/秒の推論速度を達成するには、少なくとも 14GBの統一メモリが必要です (VRAMとRAMを合わせた合計)または 単独で14GBのシステムRAM とします。目安として、利用可能なメモリは使用するモデルのサイズと等しいかそれ以上であるべきです。GGUFリンク: unsloth/gpt-oss-20b-GGUF
注意: モデルは合計サイズより少ないメモリでも動作できますが、推論は遅くなります。最大メモリは最速速度にのみ必要です。
上記の ベストプラクティスに従ってください。それらは120Bモデルと同じです。
現時点ではGoogle Colab、Docker、LM Studio、またはllama.cppでモデルを実行できます。以下を参照してください:
gpt-oss-20bを当社の Google Colabノートブックで無料で実行できます。
🐋 Docker:gpt-oss-20b実行チュートリアル
既にDocker Desktopをお持ちの場合、下のコマンドを実行するだけで完了です:
✨ Llama.cpp:gpt-oss-20b実行チュートリアル
最新の
llama.cppを GitHubで入手してください。以下のビルド手順にも従うことができます。を変更してください-DGGML_CUDA=ONに-DGGML_CUDA=OFFGPUを持っていない場合やCPUで推論したい場合は Apple Mac / Metalデバイスの場合、次を設定してください-DGGML_CUDA=OFFその後通常通り続行してください — Metalサポートはデフォルトで有効です。
Hugging Face から直接プルできます:
モデルをダウンロードするには(をインストールした後)
モデルをダウンロードするには()。ダウンロードが止まる場合は、次を参照してください Hugging Face Hub、XET デバッグ
gpt-oss-120bを実行する:
当社の1-bit量子化で6+ トークン/秒の推論速度を得るには、少なくとも 66GBの統一メモリが必要です (VRAMとRAMを合わせた合計)または 66GBのシステムRAM とします。目安として、利用可能なメモリは使用するモデルのサイズと等しいかそれ以上であるべきです。GGUFリンク: unsloth/gpt-oss-120b-GGUF
注意: モデルは合計サイズより少ないメモリでも動作できますが、推論は遅くなります。最大メモリは最速速度にのみ必要です。
上記の ベストプラクティスに従ってください。それらは20Bモデルと同じです。
📖 Llama.cpp:gpt-oss-120b実行チュートリアル
gpt-oss-120bについては、最適化された推論のために特にLlama.cppを使用します。
もしあなたが フル精度の非量子化バージョンを望むなら、当社の F16 バージョンを使ってください!
最新の
llama.cppを GitHubで入手してください。以下のビルド手順にも従うことができます。を変更してください-DGGML_CUDA=ONに-DGGML_CUDA=OFFGPUを持っていない場合やCPUで推論したい場合はモデルを直接llama.cppでダウンロードできますが、通常は
huggingface_hubの使用をお勧めします。--top-k 0.0 \
モデルをダウンロードするには()UD-Q2_K_XLやその他の量子化バージョンを選択できます。local_dir = "unsloth/gpt-oss-120b-GGUF",
編集
--threads -1--threads 32会話モードでモデルを実行し、任意のプロンプトを試してください。--ctx-size--n-gpu-layers 99--n-gpu-layers 2
使用してください -ot ".ffn_.*_exps.=CPU" コンテキスト長に対して262114、 こちら.
🛠️ GLM 4.7で生成されたPythonコードを実行するためのツール呼び出し
より多くのVRAMがある場合、より多くのMoE層をオフロードするか、層全体をオフロードすることを試せます。
通常は、 -ot ".ffn_.*_exps.=CPU" はすべてのMoE層をCPUにオフロードします!これにより、非MoE層を1つのGPUに収めることができ、生成速度が向上します。GPU容量が多い場合は、より多くの層に合わせて正規表現をカスタマイズできます。
もし少し多くのGPUメモリがあるなら、次を試してください -ot ".ffn_(up|down)_exps.=CPU" これは up と down の投影 MoE 層をオフロードします。
試してみてください -ot ".ffn_(up)_exps.=CPU" さらに多くのGPUメモリがある場合。これは up 投影の MoE 層のみをオフロードします。
正規表現をカスタマイズすることもできます。例えば -ot "\.(6|7|8|9|[0-9][0-9]|[0-9][0-9][0-9])\.ffn_(gate|up|down)_exps.=CPU" は gate、up、down の MoE 層をオフロードしますが、6層目以降に限定します。
最新の llama.cpp リリース 高スループットモードも導入しています。使用するには llama-parallel。詳細は こちら。また、 KVキャッシュを4ビットに量子化することができます こちら
--model unsloth/gpt-oss-120b-GGUF/gpt-oss-120b-F16.gguf \
🦥 Unslothでgpt-ossをファインチューニングする: 8月28日更新
QLoRAでファインチューニングしたgpt-ossモデルをllama.cpp、vLLM、HFなどにエクスポート/保存できるようになりました。 また、私たちは Unsloth Flex Attention を導入しました。これは, >8倍以上の長いコンテキスト長を可能にし、 と >50%のVRAM使用量削減、 >1.5倍以上の高速なトレーニング、 と他のすべての実装に対しての比較です。
詳細はこちらをご覧ください
Unslothのgpt-ossファインチューニングは1.5倍高速で、VRAMを70%少なく使用し、10倍長いコンテキスト長をサポートします。gpt-oss-20bのQLoRAトレーニングは14GB VRAMで収まり、gpt-oss-120bは65GB VRAMで動作します。 QLoRAの要件:
gpt-oss-20b = 14GB VRAM • gpt-oss-120b = 65GB VRAM。 BF16 LoRAの要件:
gpt-oss-20b = 44GB VRAM • gpt-oss-120b = 210GB VRAM。
チュートリアル:gpt-oss をファインチューニングする方法8月28日更新
gpt-ossのファインチューニングのステップバイステップチュートリアルをお読みください:
gpt-oss-20b gpt-ossをファインチューニングするための無料のUnslothノートブック:
Reasoning + Conversationalノートブック
強化学習(GRPO) gpt-oss RL
カーネル生成ノートブック💾
新:gpt-ossトレーニング後のGGUF、vLLMへの保存 llama.cpp, QLoRAでgpt-ossをファインチューニングし、モデルを直接保存、エクスポート、またはマージしてvLLM 、または HF
に出力できるようになりました — 単にUnslothだけでなく。近日中に無料ノートブックをリリースする予定です。 以前はQLoRAでファインチューニングされたgpt-ossモデルはUnslothでのみ実行可能でした。私たちはMXFP4ベースモデル(gpt-ossのような)のLoRAマージプロセス中にオンデマンドでのデクォンタイズを導入することでこの制限を解除しました。これにより、 ファインチューニングしたモデルをbf16形式でエクスポートすることが可能になります。 ファインチューニング後のgpt-ossモデルは、.
単一のコマンドで model.save_pretrained_merged(save_directory, tokenizer):
もしモデルをマージしてhugging-faceハブへ直接プッシュすることを好むなら、次のように実行できます:
💡 効率的なgpt-ossファインチューニングを実現するために
MXFP4は非常に効率的ですが、gpt-ossでのトレーニングをネイティブにサポートしていないことがわかりました。この制限を克服するために、私たちはMXFP4レイヤーを模倣するカスタムトレーニング関数を実装しました(BitsandbytesのNF4量子化を通じて)。 Bitsandbytes NF4量子化。
私たちはMXFP4推論を可能にするためにOpenAIのTriton Kernelsライブラリを直接利用しました。しかし、ファインチューニング/トレーニングに関しては、MXFP4カーネルはまだトレーニングをサポートしていません。逆伝播がまだ実装されていないためです。我々はTritonでの実装に積極的に取り組んでいます! W_TRANSPOSE というフラグがあり、 こちらで述べられているように実装されるべきです。導関数は重み行列の転置によって計算できるため、転置操作を実装する必要があります。
Unsloth以外のライブラリでgpt-ossをトレーニングしたい場合は、トレーニング前に重みをbf16にアップキャストする必要があります。しかしこのアプローチは、 大幅に増加させます VRAM使用量とトレーニング時間の両方を、最大で 300%のメモリ使用量増加! とします。他のすべてのトレーニング方法では20Bモデルのトレーニングに最低65GBのVRAMが必要になりますが、Unslothは14GBしか必要としません(-80%)。
両モデルはMoEアーキテクチャを使用しているため、20Bモデルはトークンごとに32の中から4人のエキスパートを選択し、120Bモデルは128の中から4人を選択します。トレーニングとリリース時に重みはMXFP4形式で nn.Parameter オブジェクトとして保存され、 nn.Linear レイヤーとしてではありません。これは量子化を複雑にします。特にMoE/MLPのエキスパートが20Bパラメータの約190億を占めるためです。
BitsandBytesによる 量子化とメモリ効率の良いファインチューニングを可能にするために、これらのパラメータを レイヤーに変換しました。これにより動作はやや遅くなりますが、限られたメモリのGPUでのファインチューニングを可能にし、価値あるトレードオフとなります。 nn.Linear データセットのファインチューニングガイド
gpt-ossは推論(reasoning)のみをサポートしますが、推論を含まない
データセット でファインチューニングすることは可能です。ただしこれは推論能力に影響する可能性があります。推論能力を維持したい場合(任意)、直接回答とチェイン・オブ・ソート(思考の連鎖)の例を混ぜて使用できます。少なくともを使用してください。 75%の推論例 と 25%の非推論例 を含めて、モデルの推論能力を保持してください。
当社のgpt-oss-20b Conversationalノートブックは、OpenAIの例であるHugging FaceのMultilingual-Thinkingデータセットを使用しています。このデータセットを使用する目的は、モデルがこれら4つの異なる言語で推論能力を学習・発展させることを可能にするためです。

最終更新
役に立ちましたか?

