# チュートリアル：gpt-oss のファインチューニング方法

このスクリーンショット付きガイドでは、独自のカスタム gpt-oss モデルを次のいずれかでファインチューニングする方法を学びます： [ローカルで](#local-gpt-oss-fine-tuning) あなたのマシン上で [Unsloth](https://github.com/unslothai/unsloth) または無料で [Google Colab](#colab-gpt-oss-fine-tuning)を使用して。セットアップからトレーニング済みモデルの実行と保存まで、プロセス全体を案内します。

{% hint style="success" %}
[**8月28日更新**](https://unsloth.ai/docs/jp/moderu/long-context-gpt-oss-training#introducing-unsloth-flex-attention-support)**:** QLoRA でファインチューニングした gpt-oss モデルを llama.cpp、vLLM、HF などにエクスポート/保存できるようになりました。

また、私たちは [Unsloth Flex Attention](https://unsloth.ai/docs/jp/moderu/long-context-gpt-oss-training#introducing-unsloth-flex-attention-support) を導入しました。これにより **8倍以上の文脈長**, **VRAM 使用量を50%以上削減** および **トレーニングが1.5倍以上高速化** といった利点が、すべての実装に対して得られます。 [詳細はこちらを参照してください](https://unsloth.ai/docs/jp/moderu/long-context-gpt-oss-training#introducing-unsloth-flex-attention-support)
{% endhint %}

> **クイックスタート：** 以下で gpt-oss-20b を無料でファインチューニング： [Colab ノートブック](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/gpt-oss-\(20B\)-Fine-tuning.ipynb)

Unsloth の gpt-oss ファインチューニングは、他のすべての FA2 実装と比べてトレーニングが1.5倍高速、VRAM 使用量を70%削減、文脈長が10倍に拡張され、精度の低下はありません。

* **QLoRA の要件：** gpt-oss-20b = 14GB VRAM • gpt-oss-120b = 65GB VRAM。
* **BF16 LoRA の要件：** gpt-oss-20b = 44GB VRAM • gpt-oss-120b = 210GB VRAM。

<a href="#local-gpt-oss-fine-tuning" class="button secondary">ローカルガイド</a><a href="#colab-gpt-oss-fine-tuning" class="button secondary">Colab ガイド</a>

## 🌐 Colab gpt-oss ファインチューニング

このセクションでは、Google Colab を使用した gpt-oss のファインチューニングについて説明します（私たちの） [ノートブック](https://unsloth.ai/docs/jp/meru/unsloth-notebooks)。また、gpt-oss ノートブックをお気に入りのコードエディタに保存して、私たちの [ローカル gpt-oss ガイド](#local-gpt-oss-fine-tuning).

{% stepper %}
{% step %}

#### を参照して進めることもできます。

Unsloth をインストールする（Colab 内） **Colab では、セルを**に類似しています。使用してください **上から下へ** 最初の実行では「すべて実行」を行ってください。最初のセルは Unsloth（および関連依存関係）をインストールし、GPU/メモリ情報を表示します。セルがエラーを出した場合は、単に再実行してください。

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fgit-blob-b5e2d89ed2815aa5dd6be7e4d2424df454c46ca0%2Fchrome_wTbzfmSI21.png?alt=media" alt=""><figcaption></figcaption></figure>

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fgit-blob-bbea9a8316e670247b6e69ff62d45a0dea189f35%2Fchrome_yPnb553OGW.png?alt=media" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

#### gpt-oss と Reasoning Effort の設定

私たちは **`gpt-oss-20b`** を Unsloth の [線形化バージョン](https://unsloth.ai/docs/jp/moderu/gpt-oss-how-to-run-and-fine-tune/..#making-efficient-gpt-oss-fine-tuning-work) で読み込みます（他のバージョンは動作しないため）。

次のパラメータを設定してください：

* `max_seq_length = 1024`
  * クイックテストや初期実験に推奨されます。
* `load_in_4bit = True`
  * 使用する `False` LoRA トレーニング用（注：これを `False` に設定すると少なくとも43GBのVRAMが必要になります）。あなたは ***必ず*** 次も設定してください **`model_name = "unsloth/gpt-oss-20b-BF16"`**

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fgit-blob-eff24652551c00dccb790fda29fc3d580823cb31%2Fchrome_3qSe2UIFN0.png?alt=media" alt=""><figcaption></figcaption></figure>

以下の例のような出力が表示されるはずです。注意：私たちは明示的に `dtype` から `float32` に変更して、正しいトレーニング動作を確保します。

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fgit-blob-6bd982cfb20d01502802a926938b9a62abd9b1e7%2Fchrome_DGMDHldw0J.png?alt=media" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

#### ファインチューニングのハイパーパラメータ（LoRA）

さて、トレーニングのハイパーパラメータを調整する時です。どのように、いつ、何を調整するかの詳細は、私たちの [詳細なハイパーパラメータガイド](https://unsloth.ai/docs/jp/meru/fine-tuning-llms-guide/lora-hyperparameters-guide).

{% hint style="info" %}
を参照してください。過度の [過学習](https://unsloth.ai/docs/jp/meru/fine-tuning-llms-guide/lora-hyperparameters-guide#avoiding-overfitting-and-underfitting)を避けるために、トレーニング損失を監視し、これらの値を高く設定しすぎないようにしてください。
{% endhint %}

このステップでは、パラメータ効率の良いファインチューニングのために LoRA アダプタを追加します。モデルのパラメータの約1%のみが訓練されるため、プロセスは大幅に効率化されます。

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fgit-blob-83a37bf7602d892fe7b8350e5025b1d5a1ad75b6%2Fchrome_ucj0VKT1lh.png?alt=media" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

#### 推論を試す

ノートブックには「 *Reasoning Effort* 」というセクションがあり、Colab での gpt-oss 推論の実行を示しています。このステップはスキップできますが、ファインチューニングが終わったら後でモデルを実行する必要があります。

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fgit-blob-395308c7013021932a20a4eef85e2b17f8b6b029%2Fchrome_o2rLNfES8e.png?alt=media" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

#### データ準備

この例では、 [`HuggingFaceH4/Multilingual-Thinking`](https://huggingface.co/datasets/HuggingFaceH4/Multilingual-Thinking)を使用します。このデータセットには、英語から他の4言語へ翻訳されたユーザー質問に由来するチェーン・オブ・ソート（思考の連鎖）推論例が含まれています。

これは OpenAI のファインチューニングクックブックで参照されているものと同じデータセットです。

多言語データセットを使用する目的は、モデルが複数言語にわたる推論パターンを学習し一般化できるようにすることです。

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fgit-blob-a63d7b6555b7ffdccb506ed44a34deb0370e7a90%2Fchrome_rRKmU99f0T.png?alt=media" alt=""><figcaption></figcaption></figure>

gpt-oss はモデルが行う推論の程度を制御する reasoning effort システムを導入しています。デフォルトでは推論努力は `低`に設定されていますが、 `reasoning_effort` パラメータを設定して変更できます。 `低`, `中` または `高`.

例：

```python
tokenizer.apply_chat_template(
    text, 
    tokenize = False, 
    add_generation_prompt = False,
    reasoning_effort = "medium",
)
```

データセットをフォーマットするために、カスタマイズした gpt-oss プロンプトのバージョンを適用します：

```python
from unsloth.chat_templates import standardize_sharegpt
dataset = standardize_sharegpt(dataset)
dataset = dataset.map(formatting_prompts_func, batched = True,)
```

最初の例を出力してデータセットを確認しましょう：

```notebook-python
print(dataset[0]['text'])
```

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fgit-blob-999632c15fd6bc73e3f7c1a11b74c8cedf563478%2Fchrome_sjbDtIhP5e.png?alt=media" alt=""><figcaption></figcaption></figure>

gpt-oss のユニークな特徴の一つは、構造化された会話、推論出力、ツール呼び出しをサポートする [**OpenAI Harmony フォーマット**](https://github.com/openai/harmony)**,** を使用していることです。このフォーマットには次のようなタグが含まれます： `<|start|>` , `<|message|>` 、および `<|return|>` .

{% hint style="info" %}
🦥 Unsloth はチャットテンプレートを正しくなるよう修正しています。技術的な詳細はこの [ツイート](https://x.com/danielhanchen/status/1953901104150065544) を参照してください。
{% endhint %}

プロンプトや構造は自分のデータセットやユースケースに合わせて適用して構いません。詳細は私たちの [データセットガイド](https://unsloth.ai/docs/jp/meru/fine-tuning-llms-guide/datasets-guide).
{% endstep %}

{% step %}

#### を参照してください。

モデルをトレーニングする [最適な結果のために事前選択したトレーニングハイパーパラメータを用意していますが、特定のユースケースに応じて変更できます。私たちの](https://unsloth.ai/docs/jp/meru/fine-tuning-llms-guide/lora-hyperparameters-guide).

ハイパーパラメータガイド `num_train_epochs=1` を参照してください。 `max_steps=None`.

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fgit-blob-942bbba058a27b056cab8a21bed15d988e39fafc%2Fchrome_R85PmZRHMQ.png?alt=media" alt=""><figcaption></figcaption></figure>

この例では処理を高速化するために60ステップで訓練します。フルのトレーニングを行う場合は、

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fgit-blob-5ace71760531cf39f14499baf9ca0f78d8018756%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

#### を設定し、ステップ制限を無効にするには

を設定してください。

トレーニング中は損失が時間とともに減少しているかを監視してください。これによりトレーニングプロセスが正しく動作していることが確認できます。

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fgit-blob-85e0e0aac7ae30bf7108470795fbabf815176abe%2Fchrome_jbJmBTaY7B.png?alt=media" alt=""><figcaption></figcaption></figure>

推論：トレーニング済みモデルを実行する

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fgit-blob-0cb10ed022a5b451fe0bf4a4b9b35bef94364a5b%2Fchrome_ORco4bpZZ6.png?alt=media" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

#### いよいよファインチューニングしたモデルで推論を実行する時です。指示と入力は変更できますが、出力は空のままにしてください。

この例では、データセットと同じ構造を使ってシステムプロンプトに特定の指示を追加することで、フランス語で推論するモデルの能力をテストします。 **これにより次のような出力が得られるはずです：** モデルを保存/エクスポートする **ファインチューニング済みモデルを保存するには、bf16 形式でエクスポートすることもできます、** 私たちの `オンデマンドの MXFP4 の逆量子化`を使ったベースモデル **を使用して** save\_method="merged\_16bit" `で保存するか、ネイティブの` .

その **を使用して** MXFP4 **Safetensors 形式で**save\_method="mxfp4" **GGUF** を使って保存できます。

{% hint style="success" %}
ネイティブマージ形式は bf16 形式と比較して大幅な性能改善を提供します：ディスク容量を最大75%節約、VRAM 消費を50%削減、マージを5〜10倍高速化し、さらに
{% endhint %}

形式への変換をはるかに高速にします。 **を使用して** 新機能：QLoRA でファインチューニングしたモデルを GGUF に保存またはマージして他のフレームワーク（例：Hugging Face、llama.cpp の GGUF）で使用できるようになりました。

```python
gpt-oss モデルをファインチューニングした後、次のようにして 16 ビット形式にマージできます：
```

format にマージするには：

```python
model.save_pretrained_merged(save_directory, tokenizer, save_method="mxfp4)
```

#### :sparkles: モデルをマージして直接 Hugging Face ハブへプッシュすることを好む場合：

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
   model.push_to_hub_merged(repo_name, tokenizer=tokenizer, token= hf_token, save_method="mxfp4")
   ```
2. Llama.cpp への保存 **を使用して** cp llama.cpp/build/bin/llama-\* llama.cp

   ```bash
   マージ済みモデルを変換する：
   ```
3. python3 llama.cpp/convert\_hf\_to\_gguf.py gpt-oss-finetuned-merged/ --outfile gpt-oss-finetuned-mxfp4.gguf

   ```bash
   量子化モデルで推論を実行する：
       llama.cpp/llama-cli --model gpt-oss-finetuned-mxfp4.gguf \
       --jinja -ngl 99 --threads -1 --ctx-size 16384 \
        --temp 1.0 --top-p 1.0 --top-k 0 \
   ```

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fgit-blob-4379581da4820a0b717e8ae2456814c6c90c344b%2Fchrome_fKEKXHti5r.png?alt=media" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}

## -p "The meaning to life and the universe is"

🖥️ ローカル gpt-oss ファインチューニング **gpt-oss-20b** この章ではローカルデバイスでの gpt-oss ファインチューニングについて説明します。ファインチューニングは14GB VRAMでも動作しますが、安定して信頼できるトレーニングを行うために少なくとも16GBの VRAM を用意することを推奨します。

{% hint style="info" %}
より簡単に使えるように、Colab の要素をローカル設定にダウンロードまたは組み込むことを推奨します。 [ノートブック](https://unsloth.ai/docs/jp/meru/unsloth-notebooks) ローカルに Unsloth をインストールする
{% endhint %}

{% stepper %}
{% step %}

#### あなたのデバイスが

Unsloth 互換であることを確認し、詳細な [インストールガイド](https://unsloth.ai/docs/jp/meru/fine-tuning-for-beginners/unsloth-requirements) を読むことができます。 [また、私たちの](https://unsloth.ai/docs/jp/meru/install).

**Docker イメージ** [**を使って Unsloth をインストールすることもできます。**](https://unsloth.ai/docs/models/qwen3-coder-next)**.**

注意： `pip install unsloth` はこのセットアップでは動作しません。最新の PyTorch、Triton および関連パッケージを使う必要があるため、次の特定のコマンドで Unsloth をインストールしてください：

```python
# 最新の Torch、Triton、OpenAI の Triton カーネル、Transformers、Unsloth をインストールしています！
!pip install --upgrade -qqq uv
try: import numpy; install_numpy = f"numpy=={numpy.__version__}"
except: install_numpy = "numpy"
!uv pip install -qqq \
    "torch>=2.8.0" "triton>=3.4.0" {install_numpy} \
    "unsloth_zoo[base] @ git+https://github.com/unslothai/unsloth-zoo" \
    "unsloth[base] @ git+https://github.com/unslothai/unsloth" \
    torchvision bitsandbytes \
    git+https://github.com/huggingface/transformers \
    git+https://github.com/triton-lang/triton.git@05b2c186c1b6c9a08375389d5efe9cb4c401c075#subdirectory=python/triton_kernels
```

{% endstep %}

{% step %}

#### gpt-oss と Reasoning Effort の設定

私たちは **`gpt-oss-20b`** を Unsloth の [線形化バージョン](https://unsloth.ai/docs/jp/moderu/gpt-oss-how-to-run-and-fine-tune/..#making-efficient-gpt-oss-fine-tuning-work) （QLoRA ファインチューニングには他のバージョンは動作しません）。次のパラメータを設定してください：

* `max_seq_length = 2048`
  * クイックテストや初期実験に推奨されます。
* `load_in_4bit = True`
  * 使用する `False` LoRA トレーニング用（注：これを `False` に設定すると少なくとも43GBのVRAMが必要になります）。あなたは ***必ず*** 次も設定してください **`model_name = "unsloth/gpt-oss-20b-BF16"`**

<pre class="language-python"><code class="lang-python">from unsloth import FastLanguageModel
import torch
max_seq_length = 1024
dtype = None

# 4bit 事前量子化モデルはダウンロードが4倍高速で OOM を防ぎます。
fourbit_models = [
    "unsloth/gpt-oss-20b-unsloth-bnb-4bit", # bitsandbytes 4bit 量子化を使用する20Bモデル
<strong>    "unsloth/gpt-oss-120b-unsloth-bnb-4bit",
</strong>    "unsloth/gpt-oss-20b", # MXFP4 フォーマットを使用する20Bモデル
    "unsloth/gpt-oss-120b",
] # 詳細は https://huggingface.co/unsloth を参照

model, tokenizer = FastLanguageModel.from_pretrained(
    model_name = "unsloth/gpt-oss-20b",
    dtype = dtype, # 自動検出の場合は None
    max_seq_length = max_seq_length, # 長いコンテキスト向けに任意で選択してください！
    load_in_4bit = True,  # メモリ削減のための4ビット量子化
    full_finetuning = False, # [NEW!] フルファインチューニングも利用可能になりました！
    # token = "hf_...", # ゲート付きモデルを使う場合は指定してください
)
</code></pre>

以下の例のような出力が表示されるはずです。注意：私たちは明示的に `dtype` から `float32` に変更して、正しいトレーニング動作を確保します。
{% endstep %}

{% step %}

#### ファインチューニングのハイパーパラメータ（LoRA）

さて、トレーニングのハイパーパラメータを調整する時です。どのように、いつ、何を調整するかの詳細は、私たちの [詳細なハイパーパラメータガイド](https://unsloth.ai/docs/jp/meru/fine-tuning-llms-guide/lora-hyperparameters-guide).

{% hint style="info" %}
を参照してください。過度の [過学習](https://unsloth.ai/docs/jp/meru/fine-tuning-llms-guide/lora-hyperparameters-guide#avoiding-overfitting-and-underfitting)を避けるために、トレーニング損失を監視し、これらの値を高く設定しすぎないようにしてください。
{% endhint %}

このステップでは、パラメータ効率の良いファインチューニングのために LoRA アダプタを追加します。モデルのパラメータの約1%のみが訓練されるため、プロセスは大幅に効率化されます。

```python
model = FastLanguageModel.get_peft_model(
    model,
    r = 8, # 0より大きい任意の数を選択してください！推奨：8、16、32、64、128
    target_modules = ["q_proj", "k_proj", "v_proj", "o_proj",
                      "gate_proj", "up_proj", "down_proj",],
    lora_alpha = 16,
    lora_dropout = 0, # 任意をサポートしますが = 0 が最適化されています
    bias = "none",    # 任意をサポートしますが = "none" が最適化されています
    # [NEW] "unsloth" は VRAM を30%節約し、2倍大きなバッチサイズに対応します！
    use_gradient_checkpointing = "unsloth", # 非常に長いコンテキストには True または "unsloth"
    random_state = 3407,
    use_rslora = False,  # ランク安定化LoRAをサポートします
    loftq_config = None, # および LoftQ
)
```

{% endstep %}

{% step %}

#### データ準備

この例では、 [`HuggingFaceH4/Multilingual-Thinking`](https://huggingface.co/datasets/HuggingFaceH4/Multilingual-Thinking)を使用します。このデータセットには、英語から他の4言語へ翻訳されたユーザー質問に由来するチェーン・オブ・ソート（思考の連鎖）推論例が含まれています。

これは OpenAI のファインチューニングクックブックで参照されているものと同じデータセットです。多言語データセットを使用する目的は、モデルが複数言語にわたる推論パターンを学習し一般化できるようにすることです。

```python
def formatting_prompts_func(examples):
    convos = examples["messages"]
    texts = [tokenizer.apply_chat_template(convo, tokenize = False, add_generation_prompt = False) for convo in convos]
    return { "text" : texts, }
pass

from datasets import load_dataset

dataset = load_dataset("HuggingFaceH4/Multilingual-Thinking", split="train")
データセットを使います
```

gpt-oss はモデルが行う推論の程度を制御する reasoning effort システムを導入しています。デフォルトでは推論努力は `低`に設定されていますが、 `reasoning_effort` パラメータを設定して変更できます。 `低`, `中` または `高`.

例：

```python
tokenizer.apply_chat_template(
    text, 
    tokenize = False, 
    add_generation_prompt = False,
    reasoning_effort = "medium",
)
```

データセットをフォーマットするために、カスタマイズした gpt-oss プロンプトのバージョンを適用します：

```python
from unsloth.chat_templates import standardize_sharegpt
dataset = standardize_sharegpt(dataset)
dataset = dataset.map(formatting_prompts_func, batched = True,)
```

最初の例を出力してデータセットを確認しましょう：

```notebook-python
print(dataset[0]['text'])
```

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fgit-blob-348661d8e6a1aa0efeea2b63fb71c2bb6f09109e%2Fimage.png?alt=media" alt="" width="563"><figcaption></figcaption></figure>

gpt-oss のユニークな特徴の一つは、構造化された会話、推論出力、ツール呼び出しをサポートする [**OpenAI Harmony フォーマット**](https://github.com/openai/harmony)**,** を使用していることです。このフォーマットには次のようなタグが含まれます： `<|start|>` , `<|message|>` 、および `<|return|>` .

{% hint style="info" %}
🦥 Unsloth はチャットテンプレートを正しくなるよう修正しています。技術的な詳細はこの [ツイート](https://x.com/danielhanchen/status/1953901104150065544) を参照してください。
{% endhint %}

プロンプトや構造は自分のデータセットやユースケースに合わせて適用して構いません。詳細は私たちの [データセットガイド](https://unsloth.ai/docs/jp/meru/fine-tuning-llms-guide/datasets-guide).
{% endstep %}

{% step %}

#### を参照してください。

モデルをトレーニングする [最適な結果のために事前選択したトレーニングハイパーパラメータを用意していますが、特定のユースケースに応じて変更できます。私たちの](https://unsloth.ai/docs/jp/meru/fine-tuning-llms-guide/lora-hyperparameters-guide).

ハイパーパラメータガイド `num_train_epochs=1` を参照してください。 `max_steps=None`.

```python
from trl import SFTConfig, SFTTrainer
trainer = SFTTrainer(
    model = model,
    tokenizer = tokenizer,
    train_dataset = dataset,
    args = SFTConfig(
        per_device_train_batch_size = 1,
        gradient_accumulation_steps = 4,
        warmup_steps = 5,
        # num_train_epochs = 1, # 1エポックの完全なトレーニングを設定する場合
        max_steps = 30,
        learning_rate = 2e-4,
        logging_steps = 1,
        optim = "adamw_8bit",
        weight_decay = 0.01,
        lr_scheduler_type = "linear",
        seed = 3407,
        output_dir = "outputs",
        report_to = "none", # WandB等を使う場合は適宜変更
    ),
)
```

この例では処理を高速化するために60ステップで訓練します。フルのトレーニングを行う場合は、

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fgit-blob-5ace71760531cf39f14499baf9ca0f78d8018756%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

#### 推論：トレーニング済みモデルを実行する

を設定してください。

トレーニング中は損失が時間とともに減少しているかを監視してください。これによりトレーニングプロセスが正しく動作していることが確認できます。

```python
messages = [
    {"role": "system", "content": "reasoning language: French\n\nYou are a helpful assistant that can solve mathematical problems."},
    {"role": "user", "content": "Solve x^5 + 3x^4 - 10 = 3."},
]
inputs = tokenizer.apply_chat_template(
    messages,
    add_generation_prompt = True,
    return_tensors = "pt",
    return_dict = True,
    reasoning_effort = "medium",
).to(model.device)
from transformers import TextStreamer
_ = model.generate(**inputs, max_new_tokens = 2048, streamer = TextStreamer(tokenizer))
```

推論：トレーニング済みモデルを実行する

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fgit-blob-31de17223d48ce57d5e178e5901e566c47adf59e%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

#### モデルを保存してエクスポートする

ファインチューニング済みモデルを保存するには、Safetensors 形式でエクスポートできます（私たちの新しい） **ファインチューニング済みモデルを保存するには、bf16 形式でエクスポートすることもできます、** ベースモデル（gpt-oss のような）を LoRA マージプロセス中に扱います。これにより、 **ファインチューニング済みモデルを bf16 形式でエクスポートすることが可能になります**.

{% hint style="success" %}
ネイティブマージ形式は bf16 形式と比較して大幅な性能改善を提供します：ディスク容量を最大75%節約、VRAM 消費を50%削減、マージを5〜10倍高速化し、さらに
{% endhint %}

gpt-oss モデルをファインチューニングした後、次のようにして 16 ビット形式にマージできます：

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

format にマージするには：

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

#### :sparkles: モデルをマージして直接 Hugging Face ハブへプッシュすることを好む場合：

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
   model.push_to_hub_merged(repo_name, tokenizer=tokenizer, token= hf_token, save_method="mxfp4")
   ```
2. マージ済みモデルを変換および量子化：

   ```bash
   python3 llama.cpp/convert_hf_to_gguf.py gpt-oss-finetuned-merged/ --outfile gpt-oss-finetuned.gguf
   llama.cpp/llama-quantize gpt-oss-finetuned.gguf  gpt-oss-finetuned-Q8_0.gguf Q8_0
   ```
3. python3 llama.cpp/convert\_hf\_to\_gguf.py gpt-oss-finetuned-merged/ --outfile gpt-oss-finetuned-mxfp4.gguf

   ```bash
   llama.cpp/llama-cli --model gpt-oss-finetuned-Q8_0.gguf \
       llama.cpp/llama-cli --model gpt-oss-finetuned-mxfp4.gguf \
       --jinja -ngl 99 --threads -1 --ctx-size 16384 \
        --temp 1.0 --top-p 1.0 --top-k 0 \
   ```

{% endstep %}
{% endstepper %}

### 🏁 以上です！

Unslothでgpt-ossをファインチューニングしました。現在、RLとGRPOの実装や、モデルの保存・実行の改善に取り組んでいますので、ご期待ください。

いつでも、お気軽に私たちの [Discord](https://discord.com/invite/unsloth) または [Reddit](https://www.reddit.com/r/unsloth/) にお越しください。サポートが必要な場合は遠慮なくどうぞ。

## ❓よくある質問（FAQ）

#### 1. 後でHugging Face、llama.cppのGGUF、またはvLLMで使用するためにモデルをエクスポートできますか？

はい、今は可能です [Unslothの新しいアップデートを使って、ファインチューニングしたgpt-ossを](https://unsloth.ai/docs/jp/moderu/long-context-gpt-oss-training#new-saving-to-gguf-vllm-after-gpt-oss-training) 保存／エクスポートできます！

#### 2. gpt-ossでfp4やMXFP4トレーニングはできますか？

いいえ、現時点ではどのフレームワークもfp4やMXFP4トレーニングをサポートしていません。ただし、Unslothはこのモデルに対してQLoRAの4ビット微調整をサポートする唯一のフレームワークであり、VRAM使用量を4倍以上削減できます。

#### 3. トレーニング後にモデルをMXFP4形式にエクスポートできますか？

いいえ、現時点ではどのライブラリやフレームワークもこれをサポートしていません。

#### 4. gpt-ossで強化学習（RL）やGRPOを行えますか？

はい！Unslothは現在、GRPO/GSPOによるgpt-ossのRLをサポートしています。無料のKaggleノートブックで動作させ、RLにおいて最速の推論を達成しました。 [詳細はこちらを参照してください](https://unsloth.ai/docs/jp/moderu/gpt-oss-how-to-run-and-fine-tune/gpt-oss-reinforcement-learning)

***

***謝辞：** 心からの感謝を* [*Eyera*](https://huggingface.co/Orenguteng) *このガイドへの貢献に感謝します！*


---

# 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/tutorial-how-to-fine-tune-gpt-oss.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.
