# gpt-oss: 実行方法ガイド

OpenAIが「**gpt-oss-120b'** 」と「**gpt-oss-20b'**」をリリース。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](https://unsloth.ai/docs/jp/meru/reinforcement-learning-rl-guide), **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公式モデルにアップストリーム反映されました。 [参照](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="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fgit-blob-9b377044965ac55a125d6c703ec1c50555157266%2FScreenshot%202025-08-08%20at%2008-19-49%20Untitled151.ipynb%20-%20Colab.png?alt=media" alt="" width="563"><figcaption></figcaption></figure></div>

また、ご希望であれば、jinjaチャットテンプレートを使わずにOpenAIのHarmonyライブラリを直接使えるようにする関数も用意しました。以下のような通常の会話をそのまま解析できます：

```python
messages = [
    {"role" : "user", "content" : "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": "San Francisco, California, United States", "unit": "celsius"}'}]},
    {"role": "tool", "name": "get_current_temperature", "content": '{"temperature": 19.9, "location": "San Francisco, California, United States", "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="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fgit-blob-4c42f3d83194ea2fbe436670a550e1b6f148f4cd%2FScreenshot%202025-08-08%20at%2008-20-00%20Untitled151.ipynb%20-%20Colab.png?alt=media" 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 %}

float16をmixed precision autocastのデータ型として使うと、しばらくすると無限大が出ることが分かりました。これを抑えるため、MoEをbfloat16で行い、その後もbfloat16またはfloat32精度のままにしておくとよいことが分かりました。古いGPUがbfloat16をサポートしない場合（T4のように）は、float32が使われます。

float16マシンでは、routerのような演算の精度もすべてfloat32に変更します。

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

以下は、モデルの [20B](#run-gpt-oss-20b) および [120B](#run-gpt-oss-120b) バリアント向けのガイドです。

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

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

その `gpt-oss` モデルは、選べる3つの異なる推論努力レベルを提供します：

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

### :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|>You are ChatGPT, a large language model trained by OpenAI.\nKnowledge cutoff: 2024-06\nCurrent date: 2025-08-05\n\nReasoning: medium\n\n# Valid channels: analysis, commentary, final. Channel must be included for every message.<|end|><|start|>user<|message|>Hello<|end|><|start|>assistant<|channel|>final<|message|>Hi there!<|end|><|start|>user<|message|>What is 1+1?<|end|><|start|>assistant
```

文末/生成トークン EOS は `<|return|>`

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

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fgit-blob-920b641670a166258845bbe8152999983b1e68af%2Fgpt-oss-20b.svg?alt=media" alt=""><figcaption></figcaption></figure>

Dynamic 4-bit量子化で毎秒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でモデルを実行できます。以下をご覧ください：

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

#### 🦥 Unsloth Studioガイド

このチュートリアルでは、 [Unsloth Studio](https://unsloth.ai/docs/jp/xin-zhe/studio)を使用します。これはLLMの実行と学習のための新しいWeb UIです。Unsloth Studioを使えば、以下の環境でローカルにモデルを実行できます： **Mac、Windows**、Linux、そして：

{% columns %}
{% column %}

* GGUFと [GGUFを実行](https://unsloth.ai/docs/jp/xin-zhe/studio#run-models-locally) およびsafetensorモデルを検索・ダウンロード
* **モデルを** 比較 **して並べて表示**
* [**自己修復** ツール呼び出し](https://unsloth.ai/docs/jp/xin-zhe/studio#execute-code--heal-tool-calling) + **Web検索**
* [**コード実行**](https://unsloth.ai/docs/jp/xin-zhe/studio#run-models-locally) （Python、Bash）
* [自動推論](https://unsloth.ai/docs/jp/xin-zhe/studio#model-arena) パラメータ調整（temp、top-pなど）
* [LLMを学習](https://unsloth.ai/docs/jp/xin-zhe/studio#no-code-training) VRAMを70%削減しつつ2倍高速
  {% endcolumn %}

{% column %}

<div data-with-frame="true"><figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FFeQ0UUlnjXkDdqhcWglh%2Fskinny%20studio%20chat.png?alt=media&#x26;token=c2ee045f-c243-4024-a8e4-bb4dbe7bae79" 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="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fd1yMMNa65Ccz50Ke0E7r%2FScreenshot%202026-03-17%20at%2012.32.38%E2%80%AFAM.png?alt=media&#x26;token=9369cfe7-35b1-4955-b8cb-42f7ecb43780" alt="" width="375"><figcaption></figcaption></figure></div>

**次に `http://localhost:8888` をブラウザで開きます。**
{% endstep %}

{% step %}

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

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

次に [Studio Chat](https://unsloth.ai/docs/jp/xin-zhe/studio/chat) タブに移動し、検索バーでgpt-ossを検索して、希望するモデルと量子化をダウンロードします。

<div data-with-frame="true"><figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2F24OqTOq1fYvW3oZ5WlNG%2FScreenshot%202026-03-20%20at%201.35.19%E2%80%AFAM.png?alt=media&#x26;token=b1e463ee-33a2-4e77-b725-d715b03f5d28" alt="" width="375"><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}

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

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

詳細は、こちらの [Unsloth Studio推論ガイド](https://unsloth.ai/docs/jp/xin-zhe/studio/chat).

<div data-with-frame="true"><figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FXPQGEEr1YoKofrTatAKK%2Ftoolcallingif.gif?alt=media&#x26;token=25d68698-fb13-4c46-99b2-d39fb025df08" 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-debugging](https://unsloth.ai/docs/jp/ji-ben/troubleshooting-and-faqs/hugging-face-hub-xet-debugging "mention")

```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="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fgit-blob-4f6fc3b98363be32b7c7cf07c713947cb1bd9444%2Fgpt-oss-120b.svg?alt=media" alt=""><figcaption></figcaption></figure>

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](https://unsloth.ai/docs/jp/xin-zhe/studio)を使用します。これはLLMの実行と学習のための新しいWeb UIです。Unsloth Studioを使えば、以下の環境でローカルにモデルを実行できます： **Mac、Windows**、Linux、そして：

{% columns %}
{% column %}

* GGUFと [GGUFを実行](https://unsloth.ai/docs/jp/xin-zhe/studio#run-models-locally) およびsafetensorモデルを検索・ダウンロード
* **モデルを** 比較 **して並べて表示**
* [**自己修復** ツール呼び出し](https://unsloth.ai/docs/jp/xin-zhe/studio#execute-code--heal-tool-calling) + **Web検索**
* [**コード実行**](https://unsloth.ai/docs/jp/xin-zhe/studio#run-models-locally) （Python、Bash）
* [自動推論](https://unsloth.ai/docs/jp/xin-zhe/studio#model-arena) パラメータ調整（temp、top-pなど）
* [LLMを学習](https://unsloth.ai/docs/jp/xin-zhe/studio#no-code-training) VRAMを70%削減しつつ2倍高速
  {% endcolumn %}

{% column %}

<div data-with-frame="true"><figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FFeQ0UUlnjXkDdqhcWglh%2Fskinny%20studio%20chat.png?alt=media&#x26;token=c2ee045f-c243-4024-a8e4-bb4dbe7bae79" 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="warning" %}
**初回インストールには5〜10分かかることがあります。これは正常です。 `llama.cpp` ビルドする必要があります。**&#x4E2D;止しないでください。
{% endhint %}

{% 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="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fd1yMMNa65Ccz50Ke0E7r%2FScreenshot%202026-03-17%20at%2012.32.38%E2%80%AFAM.png?alt=media&#x26;token=9369cfe7-35b1-4955-b8cb-42f7ecb43780" alt="" width="375"><figcaption></figcaption></figure></div>

**次に `http://localhost:8888` をブラウザで開きます。**
{% endstep %}

{% step %}

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

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

次に [Studio Chat](https://unsloth.ai/docs/jp/xin-zhe/studio/chat) タブに移動し、検索バーでgpt-ossを検索して、希望するモデルと量子化をダウンロードします。

<div data-with-frame="true"><figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FgKxB8OhIRVgT29vCGFEg%2FScreenshot%202026-03-20%20at%201.34.07%E2%80%AFAM.png?alt=media&#x26;token=9950d667-4ff1-463e-b017-601d5e8e38a5" alt="" width="375"><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}

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

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

詳細は、こちらの [Unsloth Studio推論ガイド](https://unsloth.ai/docs/jp/xin-zhe/studio/chat).

<div data-with-frame="true"><figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FXPQGEEr1YoKofrTatAKK%2Ftoolcallingif.gif?alt=media&#x26;token=25d68698-fb13-4c46-99b2-d39fb025df08" 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.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.0 \\
```

{% endcode %}

### :tools: 生成速度の向上

VRAMがさらにあるなら、より多くのMoE層をオフロードするか、層全体をオフロードしてみてください。

通常は、 `-ot ".ffn_.*_exps.=CPU"` すべてのMoE層をCPUにオフロードします！これにより、MoE以外の層をすべて1枚のGPUに収められ、生成速度が向上します。GPU容量がもっとある場合は、より多くの層に合うよう正規表現をカスタマイズできます。

GPUメモリが少し多い場合は、 `-ot ".ffn_(up|down)_exps.=CPU"` を試してください。これは上方・下方投影のMoE層をオフロードします。

さらにGPUメモリがあるなら、 `-ot ".ffn_(up)_exps.=CPU"` を試してください。これは上方投影の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リリースは](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日更新**](https://unsloth.ai/docs/jp/moderu/long-context-gpt-oss-training#new-saving-to-gguf-vllm-after-gpt-oss-training)**:** gpt-ossのQLoRAでファインチューニングしたモデルを、llama.cpp、vLLM、HFなどへエクスポート/保存できるようになりました。

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

{% hint style="success" %}
gpt-ossのQLoRAでファインチューニングしたモデルを、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-reinforcement-learning](https://unsloth.ai/docs/jp/moderu/gpt-oss-how-to-run-and-fine-tune/gpt-oss-reinforcement-learning "mention")

| [2048ノートブック](https://colab.research.google.com/github/openai/gpt-oss/blob/main/examples/reinforcement-fine-tuning.ipynb) （OpenAI公式の例） | [Kernel生成ノートブック](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内でのみ実行可能でした。LoRAマージ時に **MXFP4ベースモデル（gpt-ossのような）のオンデマンド脱量子化** を導入することで、その制限を取り除きました。これにより、 **ファインチューニング済みモデルをbf16形式でエクスポート**.

gpt-ossモデルをファインチューニングした後、 **単一コマンド**:

```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での学習をネイティブにはサポートしていないことが分かりました。この制限を克服するため、私たちは `Bitsandbytes` NF4量子化を模倣することで、MXFP4層専用のカスタム学習関数を実装しました。

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;">**他のすべての学習方法では20bモデルの学習に最低65GBのVRAMが必要ですが、Unslothでは14GBのVRAMで済みます（-80%）。**</mark>

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

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

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

gpt-ossは推論のみをサポートしていますが、推論を伴わない [データセット](https://unsloth.ai/docs/jp/meru/fine-tuning-llms-guide/datasets-guide)でファインチューニングすることはできます。ただし、推論能力に影響する可能性があります。推論能力を維持したい場合（任意）、直接回答と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="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fgit-blob-4d648159c0ba6d62d5c9b5cd519767f764e5faab%2Fwider%20gptoss%20image.png?alt=media" 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.
