# gpt-oss: 実行ガイド

OpenAI が『**gpt-oss-120b』** と『**gpt-oss-20b』**&#x3092;リリースしました。Apache 2.0 ライセンスの下で提供される、2つのSOTAオープン言語モデルです。どちらの128kコンテキストモデルも、同規模のオープンモデルを推論、ツール使用、エージェント的タスクで上回ります。Unslothを使って、今すぐローカルで実行・ファインチューニングできます！

<a href="#run-gpt-oss-20b" class="button secondary">gpt-oss-20b を実行</a><a href="#run-gpt-oss-120b" class="button secondary">gpt-oss-120b を実行</a><a href="#fine-tuning-gpt-oss-with-unsloth" class="button primary">gpt-oss をファインチューニング</a>

> [**ファインチューニング**](#fine-tuning-gpt-oss-with-unsloth) **gpt-oss-20b を無料で私たちの** [**Colab ノートブック**](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/gpt-oss-\(20B\)-Fine-tuning.ipynb)

で学習済み [RL](/docs/jp/meru/reinforcement-learning-rl-guide.md), **gpt-oss-120b** は o4-mini に匹敵し、 **gpt-oss-20b** は o3-mini に匹敵します。どちらも関数呼び出しと CoT 推論に優れ、o1 と GPT-4o を上回ります。

最良のパフォーマンスを得るには、利用可能な総メモリ（ユニファイドメモリ + VRAM + システムRAM）が、ダウンロードする量子化済みモデルファイルのサイズを上回っていることを確認してください。そうでない場合でも、llama.cpp は SSD/HDD オフロードで実行できますが、推論は遅くなります。

#### **gpt-oss - Unsloth GGUF:**

{% hint style="success" %}
**Unsloth の** [**チャットテンプレートの修正**](#unsloth-fixes-for-gpt-oss)**を含みます。最良の結果を得るには、私たちのアップロードを使い、Unsloth で学習してください！**
{% endhint %}

* 20B: [gpt-oss-**20B**](https://huggingface.co/unsloth/gpt-oss-20b-GGUF)
* 120B: [gpt-oss-**120B**](https://huggingface.co/unsloth/gpt-oss-120b-GGUF)

## :scroll:gpt-oss 向け Unsloth の修正

{% hint style="info" %}
私たちの修正の一部は、Hugging Face 上の OpenAI 公式モデルにも upstream されました。 [参照](https://huggingface.co/openai/gpt-oss-20b/discussions/94/files)
{% endhint %}

OpenAI は、 [Harmony](https://github.com/openai/harmony) という独立した解析・トークナイズ用ライブラリを公開しました。これにより、gpt-oss 向けに会話を OpenAI 推奨形式へトークン化できます。

推論エンジンは一般に Harmony パッケージではなく jinja のチャットテンプレートを使いますが、Harmony と直接比較したところ、いくつか問題が見つかりました。以下を見ると、上の方が Harmony による正しい描画形式です。下の方は現在の jinja チャットテンプレートによって描画されたものです。かなり違いがあります！

<div data-with-frame="true"><figure><img src="/files/ff4dbcd3ead29927af54cc945d34a00fa7f9f4f2" alt="" width="563"><figcaption></figcaption></figure></div>

必要であれば、jinja のチャットテンプレートを使わずに OpenAI の Harmony ライブラリを直接使えるようにする関数も作成しました。以下のような通常の会話をそのままパースできます：

```python
messages = [
    {"role" : "user", "content" : "What is 1+1?"},
    {"role" : "assistant", "content" : "2"},
    {"role": "user",  "content": "サンフランシスコの今の気温は？ 明日はどうですか？ 今日の日付は 2024-09-30 です。"},
    {"role": "assistant",  "content": "ユーザーは『サンフランシスコの天気は？』と尋ねています。get_current_temperature ツールを使う必要があります。", "thinking" : ""},
    {"role": "assistant", "content": "", "tool_calls": [{"name": "get_current_temperature", "arguments": '{"location": "サンフランシスコ, カリフォルニア, アメリカ合衆国", "unit": "celsius"}'}]},
    {"role": "tool", "name": "get_current_temperature", "content": '{"temperature": 19.9, "location": "サンフランシスコ, カリフォルニア, アメリカ合衆国", "unit": "celsius"}'},
]
```

次に `encode_conversations_with_harmony` 関数を Unsloth から使います：

```python
from unsloth_zoo import encode_conversations_with_harmony

def encode_conversations_with_harmony(
    messages,
    reasoning_effort = "medium",
    add_generation_prompt = True,
    tool_calls = None,
    developer_instructions = None,
    model_identity = "You are ChatGPT, a large language model trained by OpenAI.",
)
```

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 の形式を比較すると、文字の差分はありません：

<div data-with-frame="true"><figure><img src="/files/9b9b337c928a49c2d0021eee79680174b6f60cea" alt="" width="563"><figcaption></figcaption></figure></div>

### :1234: 精度の問題

Tesla T4 や float16 マシンでは複数の精度問題を確認しました。主な理由は、モデルが BF16 で学習されており、そのため外れ値やオーバーフローが存在したことです。MXFP4 は Ampere 以前の GPU では実際にはサポートされていないため、Triton は `tl.dot_scaled` を MXFP4 行列乗算のために提供します。内部で動的に行列を BF16 にアップキャストします。

私たちは [MXFP4 推論ノートブック](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/GPT_OSS_MXFP4_\(20B\)-Inference.ipynb) も Tesla T4 の Colab 向けに用意しました！

{% hint style="info" %}
[ソフトウェアエミュレーション](https://triton-lang.org/main/python-api/generated/triton.language.dot_scaled.html) は、ネイティブのマイクロスケーリング演算をサポートしないハードウェアアーキテクチャを対象にすることを可能にします。現在は、そのような場合、マイクロスケールされた lhs/rhs は事前に `bf16` 要素型へアップキャストされてから dot 計算が行われます。
{% endhint %}

混合精度 autocast のデータ型に float16 を使うと、しばらくすると無限大が発生することが分かりました。これを避けるため、MoE を bfloat16 で行い、その後は bfloat16 か float32 のいずれかの精度で保持する方法が有効でした。古い GPU が bfloat16 をサポートしていない場合（T4 など）は、float32 が使われます。

float16 マシン向けには、ルーターのような演算を含むすべての精度も float32 に変更します。

## 🖥️ **gpt-oss を実行**

以下は [20B](#run-gpt-oss-20b) および [120B](#run-gpt-oss-120b) モデルの派生版。

{% hint style="info" %}
2ビットを含む F16 より小さい量子化では、精度低下は最小限です。これは、一部の部分（例：アテンション層）のみが低ビットで、大部分はフル精度のままだからです。そのためサイズは F16 モデルに近く、たとえば 2ビット版（11.5 GB）はフル16ビット版（14 GB）とほぼ同じ性能を示します。llama.cpp がこれらのモデルに対してより良い量子化をサポートしたら、すぐにアップロードします。
{% endhint %}

この `gpt-oss` OpenAI のモデルには、モデルの「推論努力」を調整できる機能があります。これにより、モデルの性能と応答速度（レイテンシー）のトレードオフを制御できます。モデルが考えるために使用するトークン数によって決まります。

この `gpt-oss` モデルには、選べる推論努力の3つの異なるレベルがあります：

* **低**：非常に高速な応答が必要で、複雑な多段推論を必要としないタスクに最適化されています。
* **中**：性能と速度のバランスが取れています。
* **高**：必要なタスクに対して最も強い推論性能を提供しますが、その分レイテンシーは高くなります。

### :gear: 推奨設定

OpenAI は、両モデルに対して次の推論設定を推奨しています：

`temperature=1.0`, `top_p=1.0`, `top_k=0`

* <mark style="background-color:green;">**Temperature 1.0**</mark>
* Top\_K = 0（または、より良い結果の可能性を試すために 100 で実験）
* Top\_P = 1.0
* 推奨最小コンテキスト: 16,384
* 最大コンテキスト長ウィンドウ: 131,072

**チャットテンプレート：**

```
<|start|>system<|message|>あなたは ChatGPT です。OpenAI によって訓練された大規模言語モデルです。\n知識のカットオフ: 2024-06\n現在の日付: 2025-08-05\n\n推論: medium\n\n# 有効なチャンネル: analysis, commentary, final. すべてのメッセージにチャンネルを含める必要があります。<|end|><|start|>user<|message|>こんにちは<|end|><|start|>assistant<|channel|>final<|message|>こんにちは！<|end|><|start|>user<|message|>1+1 は？<|end|><|start|>assistant
```

文/生成の終了トークン: EOS は `<|return|>`

### gpt-oss-20B を実行

<figure><img src="/files/72ec44538912320e468b879a63b4eeb5fe2becc6" alt=""><figcaption></figcaption></figure>

Dynamic 4-bit quant で 1秒あたり 6 トークン以上の推論速度を達成するには、少なくとも **14GB のユニファイドメモリ** （VRAM と RAM の合計）または **14GB のシステム RAM** 単体で必要です。目安として、利用可能なメモリは使用するモデルのサイズと同等以上であるべきです。GGUF リンク： [unsloth/gpt-oss-20b-GGUF](https://huggingface.co/unsloth/gpt-oss-20b-GGUF)

**注：** モデルは総サイズより少ないメモリでも実行できますが、その場合は推論が遅くなります。最速で動かすには最大メモリが必要です。

{% hint style="info" %}
上記の [**ベストプラクティスに従ってください**](#recommended-settings)。120B モデルと同じです。
{% endhint %}

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

> **gpt-oss-20b を無料で私たちの** [**Google Colab ノートブック**](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/GPT_OSS_MXFP4_\(20B\)-Inference.ipynb)

#### 🦥 Unsloth Studio ガイド

このチュートリアルでは、 [Unsloth Studio](/docs/jp/xin-zhe/studio.md)、これは LLM の実行と学習のための新しい Web UI です。Unsloth Studio を使えば、モデルをローカルで実行できます **Mac、Windows**、Linux 上で入力でき、さらに次のことができます:

{% columns %}
{% column %}

* 検索、ダウンロード、 [GGUF を実行](/docs/jp/xin-zhe/studio.md#run-models-locally) し、safetensor モデルを扱う
* **モデルを** 比較する **横並びで**
* [**自己修復** ツール呼び出し](/docs/jp/xin-zhe/studio.md#execute-code--heal-tool-calling) + **Web 検索**
* [**コード実行**](/docs/jp/xin-zhe/studio.md#run-models-locally) （Python、Bash）
* [自動推論](/docs/jp/xin-zhe/studio.md#model-arena) パラメータ調整（temp、top-p など）
* [LLM を学習する](/docs/jp/xin-zhe/studio.md#no-code-training) VRAM を 70% 少なくして 2 倍高速
  {% endcolumn %}

{% column %}

<div data-with-frame="true"><figure><img src="/files/c32867f999db074387ac16732ce548485cc593de" alt=""><figcaption></figcaption></figure></div>
{% endcolumn %}
{% endcolumns %}

{% stepper %}
{% step %}

#### Unslothをインストールする

ターミナルで実行:

**MacOS、Linux、WSL:**

```bash
curl -fsSL https://unsloth.ai/install.sh | sh
```

**Windows PowerShell:**

```bash
irm https://unsloth.ai/install.ps1 | iex
```

{% endstep %}

{% step %}

#### Unsloth を起動

**MacOS、Linux、WSL、Windows:**

```bash
unsloth studio -H 0.0.0.0 -p 8888
```

<div data-with-frame="true"><figure><img src="/files/698ae7636b7c9b8a8122c6fbdabc1bd2273fdb2c" alt="" width="375"><figcaption></figcaption></figure></div>

**その後、 `http://localhost:8888` をブラウザで開いてください。**
{% endstep %}

{% step %}

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

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

その後、 [Studio Chat](/docs/jp/xin-zhe/studio/chat.md) タブを開き、検索バーで gpt-oss を探して、希望するモデルと量子化版をダウンロードしてください。

<div data-with-frame="true"><figure><img src="/files/867539e80b7ed6f42bcc2aa0d07d97f3a05ac666" alt="" width="375"><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}

#### gpt-oss-20b を実行

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

詳細は、 [Unsloth Studio 推論ガイド](/docs/jp/xin-zhe/studio/chat.md).

<div data-with-frame="true"><figure><img src="/files/44d9105dd956eac31f9586bcf01055a289b0ef3e" alt="" width="563"><figcaption></figcaption></figure></div>
{% endstep %}
{% endstepper %}

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

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

```bash
docker model run hf.co/unsloth/gpt-oss-20b-GGUF:F16
```

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

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

```bash
apt-get update
apt-get install pciutils build-essential cmake curl libcurl4-openssl-dev -y
git clone https://github.com/ggml-org/llama.cpp
cmake llama.cpp -B llama.cpp/build \\
    -DBUILD_SHARED_LIBS=OFF -DGGML_CUDA=ON -DLLAMA_CURL=ON
cmake --build llama.cpp/build --config Release -j --clean-first --target llama-cli llama-gguf-split
cp llama.cpp/build/bin/llama-* llama.cpp
```

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

   ```bash
   ./llama.cpp/llama-cli \\
       -hf unsloth/gpt-oss-20b-GGUF:F16 \
       --jinja -ngl 99 --ctx-size 16384 \\
       --temp 1.0 --top-p 1.0 --top-k 0
   ```
3. モデルのダウンロード（ `pip install huggingface_hub hf_transfer` ）。ダウンロードが止まる場合は、 [Hugging Face Hub、XETデバッグ](/docs/jp/ji-ben/troubleshooting-and-faqs/hugging-face-hub-xet-debugging.md)

```python
# !pip install huggingface_hub hf_transfer
import os
os.environ["HF_HUB_ENABLE_HF_TRANSFER"] = "1"
from huggingface_hub import snapshot_download
snapshot_download(
    repo_id = "unsloth/gpt-oss-20b-GGUF",
    local_dir = "unsloth/gpt-oss-20b-GGUF",
    allow_patterns = ["*F16*"],
)
```

### gpt-oss-120b を実行：

<figure><img src="/files/bed3242a09b6573f5cf0c572b39a640e1ce0bb6f" alt=""><figcaption></figcaption></figure>

1-bit quant で 1秒あたり 6 トークン以上の推論速度を達成するには、少なくとも **66GB のユニファイドメモリ** （VRAM と RAM の合計）または **66GB のシステム RAM** 単体で必要です。目安として、利用可能なメモリは使用するモデルのサイズと同等以上であるべきです。GGUF リンク： [unsloth/gpt-oss-120b-GGUF](https://huggingface.co/unsloth/gpt-oss-120b-GGUF)

**注：** モデルは総サイズより少ないメモリでも実行できますが、その場合は推論が遅くなります。最速で動かすには最大メモリが必要です。

{% hint style="info" %}
上記の [**ベストプラクティスに従ってください**](#recommended-settings)。20B モデルと同じです。
{% endhint %}

#### 🦥 Unsloth Studio ガイド

このチュートリアルでは、 [Unsloth Studio](/docs/jp/xin-zhe/studio.md)、これは LLM の実行と学習のための新しい Web UI です。Unsloth Studio を使えば、モデルをローカルで実行できます **Mac、Windows**、Linux 上で入力でき、さらに次のことができます:

{% columns %}
{% column %}

* 検索、ダウンロード、 [GGUF を実行](/docs/jp/xin-zhe/studio.md#run-models-locally) し、safetensor モデルを扱う
* **モデルを** 比較する **横並びで**
* [**自己修復** ツール呼び出し](/docs/jp/xin-zhe/studio.md#execute-code--heal-tool-calling) + **Web 検索**
* [**コード実行**](/docs/jp/xin-zhe/studio.md#run-models-locally) （Python、Bash）
* [自動推論](/docs/jp/xin-zhe/studio.md#model-arena) パラメータ調整（temp、top-p など）
* [LLM を学習する](/docs/jp/xin-zhe/studio.md#no-code-training) VRAM を 70% 少なくして 2 倍高速
  {% endcolumn %}

{% column %}

<div data-with-frame="true"><figure><img src="/files/c32867f999db074387ac16732ce548485cc593de" alt=""><figcaption></figcaption></figure></div>
{% endcolumn %}
{% endcolumns %}

{% stepper %}
{% step %}

#### Unslothをインストールする

**MacOS、Linux、WSL:**

```bash
curl -fsSL https://unsloth.ai/install.sh | sh
```

**Windows PowerShell:**

```bash
irm https://unsloth.ai/install.ps1 | iex
```

{% endstep %}

{% step %}

#### Unsloth Studio をセットアップ（1回のみ）

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

{% hint style="info" %}
**WSL ユーザー:** 次のインストールのために `sudo` パスワードの入力を求められます（ビルド依存関係のインストール用: `cmake`, `git`, `libcurl4-openssl-dev`).
{% endhint %}
{% endstep %}

{% step %}

#### Unsloth を起動

**MacOS、Linux、WSL:**

```bash
source unsloth_studio/bin/activate
unsloth studio -H 0.0.0.0 -p 8888
```

**Windows Powershell:**

```bash
& .\unsloth_studio\Scripts\unsloth.exe studio -H 0.0.0.0 -p 8888
```

<div data-with-frame="true"><figure><img src="/files/698ae7636b7c9b8a8122c6fbdabc1bd2273fdb2c" alt="" width="375"><figcaption></figcaption></figure></div>

**その後、 `http://localhost:8888` をブラウザで開いてください。**
{% endstep %}

{% step %}

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

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

その後、 [Studio Chat](/docs/jp/xin-zhe/studio/chat.md) タブを開き、検索バーで gpt-oss を探して、希望するモデルと量子化版をダウンロードしてください。

<div data-with-frame="true"><figure><img src="/files/6c61fc191993d8f0f039658b71a338bc6924cbac" alt="" width="375"><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}

#### gpt-oss-120b を実行

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

詳細は、 [Unsloth Studio 推論ガイド](/docs/jp/xin-zhe/studio/chat.md).

<div data-with-frame="true"><figure><img src="/files/44d9105dd956eac31f9586bcf01055a289b0ef3e" alt="" width="563"><figcaption></figcaption></figure></div>
{% endstep %}
{% endstepper %}

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

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

{% hint style="success" %}
もし **フル精度の非量子化版**が欲しいなら、私たちの `F16` 版を使ってください！
{% endhint %}

1. 最新の `llama.cpp` を [GitHub こちら](https://github.com/ggml-org/llama.cpp)から取得してください。以下のビルド手順に従うこともできます。 `-DGGML_CUDA=ON` を `-DGGML_CUDA=OFF` に変更してください。GPU がない場合、または CPU 推論だけを使いたい場合です。

   ```bash
   apt-get update
   apt-get install pciutils build-essential cmake curl libcurl4-openssl-dev -y
   git clone https://github.com/ggml-org/llama.cpp
   cmake llama.cpp -B llama.cpp/build \\
       -DBUILD_SHARED_LIBS=OFF -DGGML_CUDA=ON -DLLAMA_CURL=ON
   cmake --build llama.cpp/build --config Release -j --clean-first --target llama-cli llama-gguf-split
   cp llama.cpp/build/bin/llama-* llama.cpp
   ```
2. llama.cpp を直接使ってモデルをダウンロードすることもできますが、通常は `huggingface_hub` llama.cpp を直接使うには、次を実行します：

   ```bash
   ./llama.cpp/llama-cli \\
       -hf unsloth/gpt-oss-120b-GGUF:F16 \
       --ctx-size 16384 \\
       --n-gpu-layers 99 \\
       -ot ".ffn_.*_exps.=CPU" \
       --temp 1.0 \
       --min-p 0.0 \
       --top-p 1.0 \\
       --top-k 0 \
   ```
3. または、（インストール後に）を使ってモデルをダウンロードします。 `pip install huggingface_hub hf_transfer` UD-Q2\_K\_XL や他の量子化版を選べます。

   ```python
   # !pip install huggingface_hub hf_transfer
   import os
   os.environ["HF_HUB_ENABLE_HF_TRANSFER"] = "0" # レート制限されることがあるので、無効化するには 0 に設定
   from huggingface_hub import snapshot_download
   snapshot_download(
       repo_id = "unsloth/gpt-oss-120b-GGUF",
       local_dir = "unsloth/gpt-oss-120b-GGUF",
       allow_patterns = ["*F16*"],
   )
   ```
4. 会話モードでモデルを実行し、任意のプロンプトを試してください。
5. 編集 `--threads -1` CPU スレッド数を `--ctx-size` 262114 をコンテキスト長として、 `--n-gpu-layers 99` GPU オフロードする層数を指定します。GPU のメモリ不足になる場合は調整してみてください。CPU のみで推論する場合は、これも削除してください。

{% hint style="success" %}
使用 `-ot ".ffn_.*_exps.=CPU"` すべての MoE 層を CPU にオフロードするために使います！ これにより、MoE 以外の層を 1 枚の GPU に収められるようになり、生成速度が向上します。GPU 容量がより多い場合は、正規表現を調整してより多くの層を収めることができます。その他のオプションは [こちら](#improving-generation-speed).
{% endhint %}

{% code overflow="wrap" %}

```bash
./llama.cpp/llama-cli \\
    --model unsloth/gpt-oss-120b-GGUF/gpt-oss-120b-F16.gguf \
    --ctx-size 16384 \\
    --n-gpu-layers 99 \\
    -ot ".ffn_.*_exps.=CPU" \
    --temp 1.0 \
    --min-p 0.0 \
    --top-p 1.0 \\
    --top-k 0 \
```

{% endcode %}

### :tools: 生成速度の改善

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リリース](https://github.com/ggml-org/llama.cpp/pull/14363) では高スループットモードも導入されています。 `llama-parallel`。詳細は [こちら](https://github.com/ggml-org/llama.cpp/tree/master/examples/parallel)。また **KV キャッシュを 4bit に量子化することもできます** たとえば、VRAM / RAM 間の移動を減らし、生成処理をさらに高速化できます。

## 🦥 Unsloth で gpt-oss をファインチューニング

{% hint style="success" %}
[**8月28日更新**](/docs/jp/moderu/gpt-oss-how-to-run-and-fine-tune/long-context-gpt-oss-training.md#new-saving-to-gguf-vllm-after-gpt-oss-training)**:** QLoRA でファインチューニングした gpt-oss モデルを、llama.cpp、vLLM、HF などにエクスポート/保存できるようになりました。

また、私たちは [Unsloth Flex Attention](/docs/jp/moderu/gpt-oss-how-to-run-and-fine-tune/long-context-gpt-oss-training.md#introducing-unsloth-flex-attention-support) も導入しました。これにより、 **>8倍長いコンテキスト長**, **>50%少ない VRAM 使用量** および **>1.5倍高速な学習** を、すべての実装と比較して実現します。 [詳細はこちら](/docs/jp/moderu/gpt-oss-how-to-run-and-fine-tune/long-context-gpt-oss-training.md#introducing-unsloth-flex-attention-support)
{% endhint %}

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 のファインチューニングに関するステップバイステップのチュートリアルを読む：

{% content-ref url="/pages/9dc29758d13fc58c1ce64028cb44358ca432b625" %}
[チュートリアル: gpt-ossをファインチューニングする方法](/docs/jp/moderu/gpt-oss-how-to-run-and-fine-tune/tutorial-how-to-fine-tune-gpt-oss.md)
{% endcontent-ref %}

{% hint style="success" %}
QLoRA でファインチューニングした gpt-oss モデルを、llama.cpp、vLLM、HF などにエクスポート/保存できるようになりました。
{% endhint %}

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

* gpt-oss-20b [推論 + 会話ノートブック](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/gpt-oss-\(20B\)-Fine-tuning.ipynb)

### 強化学習（GRPO）

Unsloth は現在 gpt-oss の RL をサポートしています！ 2つのノートブックを作成しました。詳細は gpt-oss RL 専用のブログをご覧ください： [gpt-oss RL](/docs/jp/moderu/gpt-oss-how-to-run-and-fine-tune/gpt-oss-reinforcement-learning.md)

| [2048ノートブック](https://colab.research.google.com/github/openai/gpt-oss/blob/main/examples/reinforcement-fine-tuning.ipynb) （OpenAI公式の例） | [カーネル生成ノートブック](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/gpt-oss-\(20B\)-GRPO.ipynb) |
| ------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |

### 💾**新機能: 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回のコマンド**:

```python
model.save_pretrained_merged(save_directory, tokenizer)
```

で 16ビット形式にマージできるようになりました。代わりにモデルをマージして hugging-face hub に直接プッシュしたい場合は、次を使えます：

```python
model.push_to_hub_merged(repo_name, tokenizer=tokenizer, token=hf_token)
```

### 💡 効率的な gpt-oss ファインチューニングを実現する

MXFP4 は非常に効率的ですが、gpt-oss での学習はネイティブにはサポートしていないことが分かりました。この制限を克服するため、私たちは MXFP4 層向けに特別なカスタム学習関数を実装し、次の方法でそれを模倣しました： `Bitsandbytes` NF4 量子化。

MXFP4 推論を可能にするため、OpenAI の Triton Kernels ライブラリを直接利用しました。ただし、ファインチューニング/学習については、逆伝播がまだ実装されていないため、MXFP4 カーネルはまだ学習をサポートしていません。私たちは Triton での実装に積極的に取り組んでいます！ `W_TRANSPOSE` というフラグが [こちら](https://github.com/triton-lang/triton/blob/main/python/triton_kernels/triton_kernels/matmul_ogs_details/_matmul_ogs.py#L39)あるように実装される必要があります。導関数は重み行列の転置によって計算できるので、転置操作を実装する必要があります。

Unsloth 以外のライブラリで gpt-oss を学習したい場合は、学習前に重みを bf16 にアップキャストする必要があります。ただし、この方法では **大幅に増加し** VRAM 使用量と学習時間の両方が最大で **300% もメモリ使用量が増加**! <mark style="background-color:green;">**します。Unsloth では 14GB VRAM（-80%）だけで済むのに対し、他のすべての学習方法では 20b モデルを学習するのに最低 65GB VRAM が必要です。**</mark>

両モデルは MoE アーキテクチャを使用しているため、20B モデルは 32 個のエキスパートから 4 個を選択し、120B モデルはトークンごとに 128 個から 4 個を選択します。学習およびリリース時には、重みは MXFP4 形式で `nn.Parameter` オブジェクトとして保存され、 `nn.Linear` レイヤーとしては保存されません。これにより量子化が複雑になります。特に、MoE/MLP エキスパートだけで 20B パラメータの約 19B を占めるためです。

を有効にするために `BitsandBytes` 量子化とメモリ効率の高いファインチューニングを行うため、これらのパラメータを `nn.Linear` レイヤーに変換しました。これにより操作はわずかに遅くなりますが、メモリの限られた GPU でのファインチューニングが可能になり、価値のあるトレードオフとなります。

### データセットのファインチューニングガイド

gpt-oss は推論専用ですが、推論を含まない [dataset](/docs/jp/meru/fine-tuning-llms-guide/datasets-guide.md)でもファインチューニングできます。ただし、推論能力に影響する可能性があります。推論能力を維持したい場合（任意）、直接回答と chain-of-thought の例を混ぜて使えます。少なくとも <mark style="background-color:green;">75% の推論</mark> および <mark style="background-color:green;">25% の非推論</mark> をデータセットに含めて、モデルの推論能力を保持させてください。

私たちの gpt-oss-20b 会話ノートブックは、OpenAI の例として Hugging Face の Multilingual-Thinking データセットを使用しています。このデータセットを使う目的は、モデルがこれら4つの異なる言語で推論能力を学習・発達させられるようにすることです。

<figure><img src="/files/85604823aa1f28a8993bc020cdafa74cde873986" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://unsloth.ai/docs/jp/moderu/gpt-oss-how-to-run-and-fine-tune.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
