> For the complete documentation index, see [llms.txt](https://unsloth.ai/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://unsloth.ai/docs/jp/moderu/gpt-oss-how-to-run-and-fine-tune.md).

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

OpenAIが『**gpt-oss-120b』** と『**gpt-oss-20b』**&#x3092;リリースしました。Apache 2.0ライセンスのもとで提供される、2つの最先端のオープン言語モデルです。どちらの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を無料で、私たちの** [**で説明したとおりにファインチューニングした後、**](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公式モデルに上流反映されました。 [参照](https://huggingface.co/openai/gpt-oss-20b/discussions/94/files)
{% endhint %}

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

推論エンジンは通常、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": "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 = "あなたはChatGPTで、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` の要素型に事前にアップキャストされてから、ドット演算に使われます。
{% 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" %}
F16より小さい量子化、2ビットを含めて、精度低下は最小限です。というのも、一部の部分（例: attention層）だけが低ビットで、大部分はフル精度のままだからです。そのためサイズはF16モデルに近くなります。たとえば、2ビット版（11.5 GB）はフル16ビット版（14 GB）とほぼ同じ性能です。llama.cppがこれらのモデル向けにより良い量子化をサポートしたら、すぐにアップロードします。
{% endhint %}

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

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

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

### :gear: 推奨設定

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

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

* <mark style="background-color:green;">**Temperature of 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量子化で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/shii/studio.md)は、LLM の実行と学習のための新しいWeb UIです。Unsloth Studio を使えば、モデルをローカルで次の環境上で実行できます： **Mac、Windows**、Linux上で利用でき、さらに：

{% columns %}
{% column %}

* 検索、ダウンロード、 [GGUFの実行](/docs/jp/shii/studio.md#run-models-locally) およびsafetensorモデル
* **比較** モデル **を並べて**
* [**自己修復** ツール呼び出し](/docs/jp/shii/studio.md#execute-code--heal-tool-calling) + **ウェブ検索**
* [**コード実行**](/docs/jp/shii/studio.md#run-models-locally) （Python、Bash）
* [自動推論](/docs/jp/shii/studio.md#model-arena) パラメータ調整（temp、top-pなど）
* [LLMの学習](/docs/jp/shii/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を検索してダウンロード

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

その後、 [Unsloth Chat](/docs/jp/shii/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/shii/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量子化で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)。120Bモデルと同じです。
{% endhint %}

#### 🦥 Unsloth Studioガイド

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

{% columns %}
{% column %}

* 検索、ダウンロード、 [GGUFの実行](/docs/jp/shii/studio.md#run-models-locally) およびsafetensorモデル
* **比較** モデル **を並べて**
* [**自己修復** ツール呼び出し](/docs/jp/shii/studio.md#execute-code--heal-tool-calling) + **ウェブ検索**
* [**コード実行**](/docs/jp/shii/studio.md#run-models-locally) （Python、Bash）
* [自動推論](/docs/jp/shii/studio.md#model-arena) パラメータ調整（temp、top-pなど）
* [LLMの学習](/docs/jp/shii/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を検索してダウンロード

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

その後、 [Unsloth Chat](/docs/jp/shii/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/shii/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"` を試してください。これは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リリース](https://github.com/ggml-org/llama.cpp/pull/14363) では高スループットモードも導入されています。使うには `llama-parallel`。詳細はこちらを参照 [こちら](https://github.com/ggml-org/llama.cpp/tree/master/examples/parallel)。また、 **KVキャッシュを4ビットに量子化する** ことで、たとえば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のような）に導入することで、その制限を取り除きました。これにより、 **ファインチューニング済みモデルをbf16形式でエクスポートする**.

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

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

もし代わりにモデルをマージして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つのexpertを選び、120Bモデルはトークンごとに128個中4つを選びます。学習とリリース時には、重みはMXFP4形式で `nn.Parameter` オブジェクトとして保存され、 `nn.Linear` 層としては保存されません。これにより量子化が複雑になります。特に、MoE/MLP expertだけで20Bパラメータ中およそ19Bを占めるからです。

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

### Datasetsファインチューニングガイド

gpt-ossは推論専用をサポートしていますが、それでも非推論の [dataset](/docs/jp/meru/fine-tuning-llms-guide/datasets-guide.md)でファインチューニングできます。ただし、これは推論能力に影響する可能性があります。推論能力を維持したい場合（任意）、直接回答とチェーン・オブ・ソートの例を混ぜて使えます。少なくとも <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
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
