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ライセンスの下で提供される、最先端(SOTA)のオープン言語モデル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:

📜gpt-oss向けUnsloth修正

当社の修正の一部は、Hugging Face上のOpenAI公式モデルにアップストリームとして反映されました。 参照

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でレンダリングされます。dictであれば問題ありませんが、文字列の場合、引用符などの 記号にバックスラッシュが付加されます.

  2. いくつかの 余分な改行 が、jinjaテンプレートの一部の境界に存在します。

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

  4. 他のチャットテンプレートでは、 <|channel|>final をまったく利用していないようです。最終アシスタントメッセージにはこれを使用してください。思考トレースやツール呼び出しには使用しないでください。

GGUF、BnB、BF16アップロード版およびすべてのバージョン向けの当社のチャットテンプレートは修正済みです!たとえば、当社形式とHarmony形式を比較すると、異なる文字はありません:

🔢 精度の問題

モデルがBF16を使用してトレーニングされているため、主にTesla T4およびfloat16環境で複数の精度問題を見つけました。外れ値とオーバーフローが存在していたためです。MXFP4はAmpereおよびそれ以前のGPUでは実際にはサポートされていないため、Tritonは tl.dot_scaled をMXFP4行列乗算用に提供しています。内部でオンザフライに行列をBF16へアップキャストします。

また、 MXFP4推論ノートブック もTesla T4 Colab向けに作成しました!

ソフトウェアエミュレーション により、ネイティブのマイクロスケーリング演算をサポートしないハードウェアアーキテクチャを対象にできます。現時点では、そのような場合、マイクロスケールされたlhs/rhsは事前に bf16 要素型へアップキャストされ、ドット演算が実行されます。

混合精度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

  • 温度 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

注: モデルは総サイズより少ないメモリでも実行できますが、推論は遅くなります。最大メモリは最高速度を得るためにのみ必要です。

上記の ベストプラクティスに従ってください。120Bモデルの場合と同じです。

現時点では、Google Colab、Docker、LM Studio、またはllama.cppでモデルを実行できます。以下を参照してください:

当社の 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を無料で実行できます

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

次に〜へ移動し Unsloth Chat タブで、検索バーからgpt-ossを検索し、目的のモデルと量子化をダウンロードしてください。

4

gpt-oss-20bを実行

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

詳細については、次を参照してください Unsloth Studio推論ガイド.

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

すでにDocker Desktopをお持ちの場合は、以下のコマンドを実行するだけで完了です:

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

  1. 最新の llama.cpp こちら GitHub はこちら。以下のビルド手順に従うこともできます。変更してください -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ビット量子化で毎秒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を検索してダウンロード

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

次に〜へ移動し Unsloth Chat タブで、検索バーからgpt-ossを検索し、目的のモデルと量子化をダウンロードしてください。

5

gpt-oss-120bを実行

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

詳細については、次を参照してください Unsloth Studio推論ガイド.

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

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

  1. 最新の llama.cpp こちら GitHub はこちら。以下のビルド手順に従うこともできます。変更してください -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" これにより、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をファインチューニング

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など)へ導入することで、この制限を取り除きました。これにより、 ファインチューニング済みモデルを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つの異なる言語における推論能力をモデルが学習・発展できるようにすることです。

最終更新

役に立ちましたか?