gpt-oss: 実行ガイド
OpenAIの新しいオープンソースモデルを実行・ファインチューニングしましょう!
OpenAIが「gpt-oss-120b」 と「gpt-oss-20b」をリリースしました。Apache 2.0ライセンスの下で提供される、最先端(SOTA)のオープン言語モデル2種です。どちらの128kコンテキストモデルも、推論、ツール使用、エージェント型タスクにおいて、同規模のオープンモデルを上回ります。Unslothを使って、ローカルで実行・ファインチューニングできるようになりました!
ファインチューニング 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は、次の名前のスタンドアロンの解析・トークン化ライブラリをリリースしました 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でレンダリングされます。dictであれば問題ありませんが、文字列の場合、引用符などの 記号にバックスラッシュが付加されます.いくつかの 余分な改行 が、jinjaテンプレートの一部の境界に存在します。
モデルによるツール呼び出しの思考には、
analysisタグを使用すべきであり、finalタグは使用すべきではありません.他のチャットテンプレートでは、
<|channel|>finalをまったく利用していないようです。最終アシスタントメッセージにはこれを使用してください。思考トレースやツール呼び出しには使用しないでください。
GGUF、BnB、BF16アップロード版およびすべてのバージョン向けの当社のチャットテンプレートは修正済みです!たとえば、当社形式とHarmony形式を比較すると、異なる文字はありません:

🔢 精度の問題
モデルがBF16を使用してトレーニングされているため、主にTesla T4およびfloat16環境で複数の精度問題を見つけました。外れ値とオーバーフローが存在していたためです。MXFP4はAmpereおよびそれ以前のGPUでは実際にはサポートされていないため、Tritonは tl.dot_scaled をMXFP4行列乗算用に提供しています。内部でオンザフライに行列をBF16へアップキャストします。
また、 MXFP4推論ノートブック もTesla T4 Colab向けに作成しました!
混合精度autocastのデータ型としてfloat16を使用すると、しばらくして無限大値が発生することがわかりました。対策として、MoEをbfloat16で実行し、その後もbfloat16またはfloat32精度のままにします。古いGPUがbfloat16をサポートしていない場合(T4など)は、float32が使用されます。
float16環境では、ルーターなどのすべての演算精度もfloat32に変更しています。
🖥️ gpt-ossの実行
以下は、モデルの 20B と 120B バリアントに関するガイドです。
この gpt-oss OpenAIのモデルには、ユーザーがモデルの「推論努力」を調整できる機能があります。これにより、モデルが思考に使用するトークン量を通じて、モデル性能と応答速度(レイテンシ)のトレードオフを制御できます。
この gpt-oss モデルには、選択可能な3つの異なる推論努力レベルがあります:
低:非常に高速な応答が必要で、複雑な多段階推論を必要としないタスク向けに最適化されています。
中:性能と速度のバランスです。
高:必要とするタスクに対して最も強力な推論性能を提供しますが、レイテンシは高くなります。
⚙️ 推奨設定
OpenAIは両モデルに対して次の推論設定を推奨しています:
temperature=1.0, top_p=1.0, top_k=0
温度 1.0
Top_K = 0(より良い結果が得られる可能性があるため100も試してください)
Top_P = 1.0
推奨最小コンテキスト:16,384
最大コンテキスト長ウィンドウ:131,072
チャットテンプレート:
文末/生成トークン:EOSは <|return|>
gpt-oss-20Bを実行
Dynamic 4ビット量子化で毎秒6トークン以上の推論速度を実現するには、少なくとも 14GBのユニファイドメモリ (VRAMとRAMの合計)または 14GBのシステムRAM が必要です。目安として、利用可能メモリは使用するモデルのサイズ以上である必要があります。GGUFリンク: unsloth/gpt-oss-20b-GGUF
注: モデルは総サイズより少ないメモリでも実行できますが、推論は遅くなります。最大メモリは最高速度を得るためにのみ必要です。
現時点では、Google Colab、Docker、LM Studio、またはllama.cppでモデルを実行できます。以下を参照してください:
🦥 Unsloth Studioガイド
このチュートリアルでは、 Unsloth Studioは、LLM の実行と学習のための新しいWeb UIです。Unsloth Studio を使えば、モデルをローカルで Mac、Windows、Linux 上で使用でき、次のことが可能です:
検索、ダウンロード、 GGUFの実行 およびsafetensorモデル
比較 モデルを 並べて
自己修復 ツール呼び出し + ウェブ検索
コード実行 (Python、Bash)
自動推論 パラメータ調整(temp、top-pなど)
LLMの学習 VRAMを70%削減しつつ2倍高速

でgpt-oss-20bを無料で実行できます
初回起動時には、アカウントを保護するためのパスワードを作成し、後で再度サインインする必要があります。その後、モデル、データセット、基本設定を選ぶ簡単なオンボーディングウィザードが表示されます。いつでもスキップできます。
次に〜へ移動し Unsloth 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=OFFGPU がない場合、または CPU 推論のみを使用したい場合。 Apple Mac / Metal デバイスの場合、次を設定し-DGGML_CUDA=OFFその後は通常どおり続行してください。Metal サポートはデフォルトで有効です。
Hugging Faceから以下のように直接取得できます:
(以下をインストールした後)モデルを次の方法でダウンロードしてください
pip install huggingface_hub hf_transfer)。ダウンロードが停止した場合は、以下を参照してください Hugging Face Hub、XET のデバッグ
gpt-oss-120bを実行:
1ビット量子化で毎秒6トークン以上の推論速度を実現するには、少なくとも次を推奨します 66GBのユニファイドメモリ (VRAMとRAMの合計)または 66GBのシステムRAM が必要です。目安として、利用可能メモリは使用するモデルのサイズ以上である必要があります。GGUFリンク: unsloth/gpt-oss-120b-GGUF
注: モデルは総サイズより少ないメモリでも実行できますが、推論は遅くなります。最大メモリは最高速度を得るためにのみ必要です。
🦥 Unsloth Studioガイド
このチュートリアルでは、 Unsloth Studioは、LLM の実行と学習のための新しいWeb UIです。Unsloth Studio を使えば、モデルをローカルで Mac、Windows、Linux 上で使用でき、次のことが可能です:
検索、ダウンロード、 GGUFの実行 およびsafetensorモデル
比較 モデルを 並べて
自己修復 ツール呼び出し + ウェブ検索
コード実行 (Python、Bash)
自動推論 パラメータ調整(temp、top-pなど)
LLMの学習 VRAMを70%削減しつつ2倍高速

gpt-oss-120bを検索してダウンロード
初回起動時には、アカウントを保護するためのパスワードを作成し、後で再度サインインする必要があります。その後、モデル、データセット、基本設定を選ぶ簡単なオンボーディングウィザードが表示されます。いつでもスキップできます。
次に〜へ移動し Unsloth 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=OFFGPU がない場合、または CPU 推論のみを使用したい場合。llama.cppを直接使用してモデルをダウンロードできますが、通常は以下を使用することをお勧めします
huggingface_hubllama.cppを直接使用するには、次を実行してください:または、(インストール後に)以下でモデルをダウンロードしてください
pip install huggingface_hub hf_transfer)。UD-Q2_K_XLまたはその他の量子化版を選択できます。会話モードでモデルを実行し、任意のプロンプトを試してください。
編集
--threads -1CPUスレッド数として--ctx-sizeコンテキスト長には262114、--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" これにより、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" は、6層目以降のgate、up、downのMoEレイヤーのみをオフロードすることを意味します。
この 最新のllama.cppリリース では、高スループットモードも導入されています。 llama-parallelを使用してください。詳細はこちら ハードウェア要件。また、 KVキャッシュを4ビットに量子化 して、たとえばVRAM/RAMの移動を減らすことで、生成プロセスを高速化することもできます。
🦥 Unslothでgpt-ossをファインチューニング
8月28日更新: QLoRAでファインチューニングしたgpt-ossモデルを、llama.cpp、vLLM、HFなどにエクスポート/保存できるようになりました。
また、 Unsloth Flex Attention を導入しました。これにより、 コンテキスト長を8倍超に拡張, VRAM使用量を50%超削減 と トレーニングを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など)へ導入することで、この制限を取り除きました。これにより、 ファインチューニング済みモデルをbf16形式でエクスポート.
できるようになりました。gpt-ossモデルのファインチューニング後、次の 単一コマンド:
で16ビット形式にマージできるようになりました。代わりにモデルをマージしてhugging-face hubへ直接プッシュしたい場合は、以下を使用できます:
💡効率的なgpt-ossファインチューニングを実現する
MXFP4は非常に効率的ですが、gpt-ossでのトレーニングをネイティブにはサポートしていないことがわかりました。この制限を克服するため、 Bitsandbytes のNF4量子化で模倣することにより、MXFP4レイヤー専用のカスタムトレーニング関数を実装しました。
MXFP4推論を可能にするため、OpenAIのTriton Kernelsライブラリを直接利用しました。しかしファインチューニング/トレーニングについては、逆方向パスがまだ実装されていないため、MXFP4カーネルはまだトレーニングをサポートしていません。Tritonでの実装を積極的に進めています! W_TRANSPOSE というフラグが、 ハードウェア要件で述べられているように実装されるべきです。微分は重み行列の転置によって計算できるため、転置演算を実装する必要があります。
Unsloth以外のライブラリでgpt-ossをトレーニングしたい場合、トレーニング前に重みをbf16へアップキャストする必要があります。しかしこの方法では、 大幅に増加します 。VRAM使用量とトレーニング時間の両方が最大で メモリ使用量300%増! になります。他のすべてのトレーニング方法では20bモデルのトレーニングに最低65GBのVRAMが必要ですが、Unslothは14GBのVRAM(-80%)しか必要としません。
両モデルはMoEアーキテクチャを使用しており、20Bモデルは32個から4個のエキスパートを選択し、120Bモデルはトークンごとに128個から4個を選択します。トレーニング時およびリリース時、重みはMXFP4形式で nn.Parameter オブジェクトとして保存され、 nn.Linear レイヤーとしては保存されません。特にMoE/MLPエキスパートが20Bパラメータのうち約19Bを占めるため、量子化が複雑になります。
を有効にするため、 BitsandBytes 量子化とメモリ効率の高いファインチューニングのため、これらのパラメータを nn.Linear レイヤーに変換しました。これにより演算はわずかに遅くなりますが、メモリが限られたGPUでのファインチューニングが可能になるため、価値のあるトレードオフです。
データセットのファインチューニングガイド
gpt-ossは推論のみをサポートしますが、推論なしの データセットでもファインチューニングできます。ただし、推論能力に影響する可能性があります。推論能力を維持したい場合(任意)は、直接回答とチェーン・オブ・ソートの例を混在させることができます。少なくとも次を使用してください 75% の推論 と 25% の非推論 をデータセットに含めて、モデルに推論能力を保持させてください。
当社のgpt-oss-20b会話ノートブックでは、Hugging FaceのMultilingual-ThinkingデータセットであるOpenAIの例を使用しています。このデータセットを使用する目的は、これら4つの異なる言語における推論能力をモデルが学習・発展できるようにすることです。

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


