gpt-oss: 実行ガイド
OpenAIの新しいオープンソースモデルを実行・ファインチューニングしましょう!
OpenAI が『gpt-oss-120b』 と『gpt-oss-20b』をリリースしました。Apache 2.0 ライセンスの下で提供される、2つのSOTAオープン言語モデルです。どちらの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 の修正
私たちの修正の一部は、Hugging Face 上の OpenAI 公式モデルにも upstream されました。 参照
OpenAI は、 Harmony という独立した解析・トークナイズ用ライブラリを公開しました。これにより、gpt-oss 向けに会話を OpenAI 推奨形式へトークン化できます。
推論エンジンは一般に Harmony パッケージではなく jinja のチャットテンプレートを使いますが、Harmony と直接比較したところ、いくつか問題が見つかりました。以下を見ると、上の方が Harmony による正しい描画形式です。下の方は現在の jinja チャットテンプレートによって描画されたものです。かなり違いがあります!

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

🔢 精度の問題
Tesla T4 や float16 マシンでは複数の精度問題を確認しました。主な理由は、モデルが BF16 で学習されており、そのため外れ値やオーバーフローが存在したことです。MXFP4 は Ampere 以前の GPU では実際にはサポートされていないため、Triton は tl.dot_scaled を MXFP4 行列乗算のために提供します。内部で動的に行列を BF16 にアップキャストします。
私たちは MXFP4 推論ノートブック も Tesla T4 の Colab 向けに用意しました!
ソフトウェアエミュレーション は、ネイティブのマイクロスケーリング演算をサポートしないハードウェアアーキテクチャを対象にすることを可能にします。現在は、そのような場合、マイクロスケールされた lhs/rhs は事前に bf16 要素型へアップキャストされてから dot 計算が行われます。
混合精度 autocast のデータ型に float16 を使うと、しばらくすると無限大が発生することが分かりました。これを避けるため、MoE を bfloat16 で行い、その後は bfloat16 か float32 のいずれかの精度で保持する方法が有効でした。古い GPU が bfloat16 をサポートしていない場合(T4 など)は、float32 が使われます。
float16 マシン向けには、ルーターのような演算を含むすべての精度も float32 に変更します。
🖥️ gpt-oss を実行
2ビットを含む F16 より小さい量子化では、精度低下は最小限です。これは、一部の部分(例:アテンション層)のみが低ビットで、大部分はフル精度のままだからです。そのためサイズは F16 モデルに近く、たとえば 2ビット版(11.5 GB)はフル16ビット版(14 GB)とほぼ同じ性能を示します。llama.cpp がこれらのモデルに対してより良い量子化をサポートしたら、すぐにアップロードします。
この gpt-oss OpenAI のモデルには、モデルの「推論努力」を調整できる機能があります。これにより、モデルの性能と応答速度(レイテンシー)のトレードオフを制御できます。モデルが考えるために使用するトークン数によって決まります。
この gpt-oss モデルには、選べる推論努力の3つの異なるレベルがあります:
低:非常に高速な応答が必要で、複雑な多段推論を必要としないタスクに最適化されています。
中:性能と速度のバランスが取れています。
高:必要なタスクに対して最も強い推論性能を提供しますが、その分レイテンシーは高くなります。
⚙️ 推奨設定
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 quant で 1秒あたり 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 ノートブック
🦥 Unsloth Studio ガイド
このチュートリアルでは、 Unsloth Studio、これは LLM の実行と学習のための新しい Web UI です。Unsloth Studio を使えば、モデルをローカルで実行できます Mac、Windows、Linux 上で入力でき、さらに次のことができます:
検索、ダウンロード、 GGUF を実行 し、safetensor モデルを扱う
モデルを 比較する 横並びで
自己修復 ツール呼び出し + Web 検索
コード実行 (Python、Bash)
自動推論 パラメータ調整(temp、top-p など)
LLM を学習する VRAM を 70% 少なくして 2 倍高速

gpt-oss-20b を検索してダウンロード
初回起動時には、アカウントを保護し後で再度サインインするためのパスワードを作成する必要があります。その後、モデル、データセット、基本設定を選ぶ簡単な初期設定ウィザードが表示されます。いつでもスキップできます。
その後、 Studio Chat タブを開き、検索バーで gpt-oss を探して、希望するモデルと量子化版をダウンロードしてください。

gpt-oss-20b を実行
Unsloth Studio を使用すると推論パラメータは自動設定されるはずですが、手動で変更することもできます。コンテキスト長、チャットテンプレート、その他の設定も編集できます。
詳細は、 Unsloth Studio 推論ガイド.

🐋 Docker: gpt-oss-20b 実行チュートリアル
すでに Docker Desktop を持っているなら、以下のコマンドを実行するだけで完了です:
✨ Llama.cpp: gpt-oss-20b 実行チュートリアル
最新の
llama.cppを GitHub こちらから取得してください。以下のビルド手順に従うこともできます。-DGGML_CUDA=ONを-DGGML_CUDA=OFFに変更してください。GPU がない場合、または CPU 推論だけを使いたい場合です。 Apple Mac / Metal デバイスの場合、次を設定して-DGGML_CUDA=OFFその後は通常どおり続けてください - Metal サポートは既定で有効です。
Hugging Faceから直接次の方法で取得できます:
モデルのダウンロード(
pip install huggingface_hub hf_transfer)。ダウンロードが止まる場合は、 Hugging Face Hub、XETデバッグ
gpt-oss-120b を実行:
1-bit quant で 1秒あたり 6 トークン以上の推論速度を達成するには、少なくとも 66GB のユニファイドメモリ (VRAM と RAM の合計)または 66GB のシステム RAM 単体で必要です。目安として、利用可能なメモリは使用するモデルのサイズと同等以上であるべきです。GGUF リンク: unsloth/gpt-oss-120b-GGUF
注: モデルは総サイズより少ないメモリでも実行できますが、その場合は推論が遅くなります。最速で動かすには最大メモリが必要です。
上記の ベストプラクティスに従ってください。20B モデルと同じです。
🦥 Unsloth Studio ガイド
このチュートリアルでは、 Unsloth Studio、これは LLM の実行と学習のための新しい Web UI です。Unsloth Studio を使えば、モデルをローカルで実行できます Mac、Windows、Linux 上で入力でき、さらに次のことができます:
検索、ダウンロード、 GGUF を実行 し、safetensor モデルを扱う
モデルを 比較する 横並びで
自己修復 ツール呼び出し + Web 検索
コード実行 (Python、Bash)
自動推論 パラメータ調整(temp、top-p など)
LLM を学習する VRAM を 70% 少なくして 2 倍高速

gpt-oss-120b を検索してダウンロード
初回起動時には、アカウントを保護し後で再度サインインするためのパスワードを作成する必要があります。その後、モデル、データセット、基本設定を選ぶ簡単な初期設定ウィザードが表示されます。いつでもスキップできます。
その後、 Studio Chat タブを開き、検索バーで gpt-oss を探して、希望するモデルと量子化版をダウンロードしてください。

gpt-oss-120b を実行
Unsloth Studio を使用すると推論パラメータは自動設定されるはずですが、手動で変更することもできます。コンテキスト長、チャットテンプレート、その他の設定も編集できます。
詳細は、 Unsloth Studio 推論ガイド.

📖 Llama.cpp: gpt-oss-120b 実行チュートリアル
gpt-oss-120b では、最適化された推論のために特に Llama.cpp を使用します。
もし フル精度の非量子化版が欲しいなら、私たちの F16 版を使ってください!
最新の
llama.cppを GitHub こちらから取得してください。以下のビルド手順に従うこともできます。-DGGML_CUDA=ONを-DGGML_CUDA=OFFに変更してください。GPU がない場合、または CPU 推論だけを使いたい場合です。llama.cpp を直接使ってモデルをダウンロードすることもできますが、通常は
huggingface_hubllama.cpp を直接使うには、次を実行します:または、(インストール後に)を使ってモデルをダウンロードします。
pip install huggingface_hub hf_transferUD-Q2_K_XL や他の量子化版を選べます。会話モードでモデルを実行し、任意のプロンプトを試してください。
編集
--threads -1CPU スレッド数を--ctx-size262114 をコンテキスト長として、--n-gpu-layers 99GPU オフロードする層数を指定します。GPU のメモリ不足になる場合は調整してみてください。CPU のみで推論する場合は、これも削除してください。
使用 -ot ".ffn_.*_exps.=CPU" すべての MoE 層を CPU にオフロードするために使います! これにより、MoE 以外の層を 1 枚の GPU に収められるようになり、生成速度が向上します。GPU 容量がより多い場合は、正規表現を調整してより多くの層を収めることができます。その他のオプションは こちら.
🛠️ 生成速度の改善
VRAM がさらにある場合は、より多くの MoE レイヤーをオフロードするか、レイヤー全体をオフロードすることができます。
通常、 -ot ".ffn_.*_exps.=CPU" すべての MoE レイヤーを CPU にオフロードします!これにより、非 MoE レイヤーを 1 枚の GPU に収められるようになり、生成速度が向上します。GPU 容量がさらにある場合は、正規表現を調整してより多くのレイヤーを収めることができます。
GPU メモリがもう少し多い場合は、試してみてください -ot ".ffn_(up|down)_exps.=CPU" これにより、アップ投影とダウン投影の MoE レイヤーがオフロードされます。
試してみてください -ot ".ffn_(up)_exps.=CPU" GPU メモリがさらに多い場合は、これを使ってください。これにより、アップ投影の MoE レイヤーのみがオフロードされます。
これは最も少ない VRAM を使用します。 正規表現をカスタマイズすることもできます。例えば -ot "\.(6|7|8|9|[0-9][0-9]|[0-9][0-9][0-9])\.ffn_(gate|up|down)_exps.=CPU"
この llama.cppリリース では高スループットモードも導入されています。 llama-parallel。詳細は こちら。また KV キャッシュを 4bit に量子化することもできます たとえば、VRAM / RAM 間の移動を減らし、生成処理をさらに高速化できます。
🦥 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 のファインチューニングに関するステップバイステップのチュートリアルを読む:
チュートリアル: gpt-ossをファインチューニングする方法QLoRA でファインチューニングした gpt-oss モデルを、llama.cpp、vLLM、HF などにエクスポート/保存できるようになりました。
gpt-oss をファインチューニングするための無料の Unsloth ノートブック:
gpt-oss-20b 推論 + 会話ノートブック
強化学習(GRPO)
Unsloth は現在 gpt-oss の RL をサポートしています! 2つのノートブックを作成しました。詳細は gpt-oss RL 専用のブログをご覧ください: gpt-oss RL
2048ノートブック (OpenAI公式の例)
💾新機能: gpt-oss 学習後の GGUF、vLLM への保存
これで gpt-oss を QLoRA でファインチューニングし、モデルを直接 llama.cpp, vLLM、または HF へ保存、エクスポート、またはマージできます。Unsloth だけではありません。無料ノートブックをできるだけ早く公開する予定です。
以前は、QLoRA でファインチューニングした gpt-oss モデルは Unsloth 上でしか実行できませんでした。私たちはそれを MXFP4 のオンデマンド逆量子化 LoRA マージ処理中にベースモデル(gpt-oss など)を使用することで、Safetensors 形式でエクスポートできます。これにより、 ファインチューニングしたモデルを bf16 形式でエクスポートする.
gpt-oss モデルをファインチューニングした後、 1回のコマンド:
で 16ビット形式にマージできるようになりました。代わりにモデルをマージして hugging-face hub に直接プッシュしたい場合は、次を使えます:
💡 効率的な gpt-oss ファインチューニングを実現する
MXFP4 は非常に効率的ですが、gpt-oss での学習はネイティブにはサポートしていないことが分かりました。この制限を克服するため、私たちは MXFP4 層向けに特別なカスタム学習関数を実装し、次の方法でそれを模倣しました: Bitsandbytes NF4 量子化。
MXFP4 推論を可能にするため、OpenAI の Triton Kernels ライブラリを直接利用しました。ただし、ファインチューニング/学習については、逆伝播がまだ実装されていないため、MXFP4 カーネルはまだ学習をサポートしていません。私たちは Triton での実装に積極的に取り組んでいます! W_TRANSPOSE というフラグが こちらあるように実装される必要があります。導関数は重み行列の転置によって計算できるので、転置操作を実装する必要があります。
Unsloth 以外のライブラリで gpt-oss を学習したい場合は、学習前に重みを bf16 にアップキャストする必要があります。ただし、この方法では 大幅に増加し VRAM 使用量と学習時間の両方が最大で 300% もメモリ使用量が増加! します。Unsloth では 14GB VRAM(-80%)だけで済むのに対し、他のすべての学習方法では 20b モデルを学習するのに最低 65GB VRAM が必要です。
両モデルは MoE アーキテクチャを使用しているため、20B モデルは 32 個のエキスパートから 4 個を選択し、120B モデルはトークンごとに 128 個から 4 個を選択します。学習およびリリース時には、重みは MXFP4 形式で nn.Parameter オブジェクトとして保存され、 nn.Linear レイヤーとしては保存されません。これにより量子化が複雑になります。特に、MoE/MLP エキスパートだけで 20B パラメータの約 19B を占めるためです。
を有効にするために BitsandBytes 量子化とメモリ効率の高いファインチューニングを行うため、これらのパラメータを nn.Linear レイヤーに変換しました。これにより操作はわずかに遅くなりますが、メモリの限られた GPU でのファインチューニングが可能になり、価値のあるトレードオフとなります。
データセットのファインチューニングガイド
gpt-oss は推論専用ですが、推論を含まない datasetでもファインチューニングできます。ただし、推論能力に影響する可能性があります。推論能力を維持したい場合(任意)、直接回答と chain-of-thought の例を混ぜて使えます。少なくとも 75% の推論 および 25% の非推論 をデータセットに含めて、モデルの推論能力を保持させてください。
私たちの gpt-oss-20b 会話ノートブックは、OpenAI の例として Hugging Face の Multilingual-Thinking データセットを使用しています。このデータセットを使う目的は、モデルがこれら4つの異なる言語で推論能力を学習・発達させられるようにすることです。

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


