For the complete documentation index, see llms.txt. This page is also available as Markdown.

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:

📜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 形式には、いくつか興味深い要素が含まれています:

  1. reasoning_effort = "medium" low、medium、high を選べます。これにより gpt-oss の推論予算が変わり、一般に高いほどモデルの精度も向上します。

  2. developer_instructions は追加できるシステムプロンプトのようなものです。

  3. model_identity は基本的にそのままにしておくのが最善です。編集はできますが、カスタムのものが動作するかどうかは不明です。

現在の jinja チャットテンプレートには複数の問題があります(エコシステム全体で複数の実装が存在します):

  1. 関数やツール呼び出しは tojsonで描画されます。辞書なら問題ありませんが、文字列だと引用符やその他の 記号がバックスラッシュでエスケープされます.

  2. いくつかの 余分な改行 が jinja テンプレートの境界にあります。

  3. モデルのツール呼び出しに関する思考は analysis タグを使うべきで、 final タグではありません.

  4. 他のチャットテンプレートは <|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 を実行

以下は 20B および 120B モデルの派生版。

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 上で入力でき、さらに次のことができます:

1

Unslothをインストールする

ターミナルで実行:

MacOS、Linux、WSL:

Windows PowerShell:

2

Unsloth を起動

MacOS、Linux、WSL、Windows:

その後、 http://localhost:8888 をブラウザで開いてください。

3

gpt-oss-20b を検索してダウンロード

初回起動時には、アカウントを保護し後で再度サインインするためのパスワードを作成する必要があります。その後、モデル、データセット、基本設定を選ぶ簡単な初期設定ウィザードが表示されます。いつでもスキップできます。

その後、 Studio Chat タブを開き、検索バーで gpt-oss を探して、希望するモデルと量子化版をダウンロードしてください。

4

gpt-oss-20b を実行

Unsloth Studio を使用すると推論パラメータは自動設定されるはずですが、手動で変更することもできます。コンテキスト長、チャットテンプレート、その他の設定も編集できます。

詳細は、 Unsloth Studio 推論ガイド.

🐋 Docker: gpt-oss-20b 実行チュートリアル

すでに Docker Desktop を持っているなら、以下のコマンドを実行するだけで完了です:

Llama.cpp: gpt-oss-20b 実行チュートリアル

  1. 最新の llama.cppGitHub こちらから取得してください。以下のビルド手順に従うこともできます。 -DGGML_CUDA=ON-DGGML_CUDA=OFF に変更してください。GPU がない場合、または CPU 推論だけを使いたい場合です。 Apple Mac / Metal デバイスの場合、次を設定して -DGGML_CUDA=OFF その後は通常どおり続けてください - Metal サポートは既定で有効です。

  1. Hugging Faceから直接次の方法で取得できます:

  2. モデルのダウンロード( 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 上で入力でき、さらに次のことができます:

1

Unslothをインストールする

MacOS、Linux、WSL:

Windows PowerShell:

2

Unsloth Studio をセットアップ(1回のみ)

セットアップでは自動的に Node.js(nvm 経由)をインストールし、フロントエンドをビルドし、必要な Python 依存関係をすべてインストールし、CUDA サポート付きで llama.cpp をビルドします。

WSL ユーザー: 次のインストールのために sudo パスワードの入力を求められます(ビルド依存関係のインストール用: cmake, git, libcurl4-openssl-dev).

3

Unsloth を起動

MacOS、Linux、WSL:

Windows Powershell:

その後、 http://localhost:8888 をブラウザで開いてください。

4

gpt-oss-120b を検索してダウンロード

初回起動時には、アカウントを保護し後で再度サインインするためのパスワードを作成する必要があります。その後、モデル、データセット、基本設定を選ぶ簡単な初期設定ウィザードが表示されます。いつでもスキップできます。

その後、 Studio Chat タブを開き、検索バーで gpt-oss を探して、希望するモデルと量子化版をダウンロードしてください。

5

gpt-oss-120b を実行

Unsloth Studio を使用すると推論パラメータは自動設定されるはずですが、手動で変更することもできます。コンテキスト長、チャットテンプレート、その他の設定も編集できます。

詳細は、 Unsloth Studio 推論ガイド.

📖 Llama.cpp: gpt-oss-120b 実行チュートリアル

gpt-oss-120b では、最適化された推論のために特に Llama.cpp を使用します。

  1. 最新の llama.cppGitHub こちらから取得してください。以下のビルド手順に従うこともできます。 -DGGML_CUDA=ON-DGGML_CUDA=OFF に変更してください。GPU がない場合、または CPU 推論だけを使いたい場合です。

  2. llama.cpp を直接使ってモデルをダウンロードすることもできますが、通常は huggingface_hub llama.cpp を直接使うには、次を実行します:

  3. または、(インストール後に)を使ってモデルをダウンロードします。 pip install huggingface_hub hf_transfer UD-Q2_K_XL や他の量子化版を選べます。

  4. 会話モードでモデルを実行し、任意のプロンプトを試してください。

  5. 編集 --threads -1 CPU スレッド数を --ctx-size 262114 をコンテキスト長として、 --n-gpu-layers 99 GPU オフロードする層数を指定します。GPU のメモリ不足になる場合は調整してみてください。CPU のみで推論する場合は、これも削除してください。

🛠️ 生成速度の改善

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 をファインチューニング

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をファインチューニングする方法

gpt-oss をファインチューニングするための無料の Unsloth ノートブック:

強化学習(GRPO)

Unsloth は現在 gpt-oss の RL をサポートしています! 2つのノートブックを作成しました。詳細は gpt-oss RL 専用のブログをご覧ください: gpt-oss RL

💾新機能: 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つの異なる言語で推論能力を学習・発達させられるようにすることです。

最終更新

役に立ちましたか?