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

## 1. ファインチューニングとは何ですか？

ファインチューニング／トレーニング／ポストトレーニングは、モデルの振る舞いをカスタマイズし、知識を注入・強化し、特定のドメインやタスクに対する性能を最適化します。例えば：

* OpenAIの **GPT-5** は指示に従う能力と有益なチャット振る舞いを改善するためにポストトレーニングされました。
* ポストトレーニングの標準的な方法は教師ありファインチューニング（SFT）と呼ばれます。他の方法には嗜好最適化（DPO、ORPO）、蒸留や [強化学習（RL）](https://unsloth.ai/docs/jp/meru/reinforcement-learning-rl-guide) （GRPO、GSPO）があります。ここでは「エージェント」が環境と相互作用し、意思決定を学び、 **フィードバック** の形で **報酬** または **や**.

罰則 [Unsloth](https://github.com/unslothai/unsloth)を受け取ります。Colab、Kaggle、またはローカルで3GBのVRAMだけを使って当社の [ノートブック](https://docs.unsloth.ai/get-started/unsloth-notebooks)を使用すれば、ファインチューニングやRLを無料で行うことができます。事前学習済みモデルをデータセットでファインチューニングすることで、次のことが可能になります：

* **知識の更新と学習**：ドメイン固有の新しい情報を注入して学習させます。
* **振る舞いのカスタマイズ**：モデルのトーン、パーソナリティ、応答スタイルを調整します。
* **タスク最適化**：特定のユースケースに対する精度と関連性を向上させます。

**ファインチューニングやRLの使用例**:

* LLMが見出しが企業にとって好意的か否かを予測できるようにすることを可能にします。
* 過去の顧客とのやり取りを利用して、より正確でカスタムな応答を実現できます。
* 契約分析、判例調査、コンプライアンスのために法的文書でLLMをファインチューニングします。

ファインチューニングされたモデルは、特定のタスクをより効果的かつ効率的に行うために設計された専門化されたエージェントと考えることができます。 **ファインチューニングはRAGの全ての機能を再現できます**が、その逆は成り立ちません。

{% columns %}
{% column %}

#### :question:LoRA/QLoRAとは何ですか？

LLMにはモデル重みがあります。Llama 70Bには700億の数値があります。すべての70Bの数値を変える代わりに、各重みに薄い行列AとBを追加してそれらを最適化します。これにより重みのわずか1％のみを最適化します。LoRAは元のモデルが16ビットの非量子化のままの場合を指し、QLoRAは4ビットに量子化してメモリを75％節約します。
{% endcolumn %}

{% column %}

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fgit-blob-715b6260aae497f160d7f9a1019bcfa472675dcf%2Fimage%20(7)%20(1)%20(1).png?alt=media" alt=""><figcaption><p>モデル重み（黄色）を最適化する代わりに、2つの薄い行列AとBを最適化します。</p></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

#### ファインチューニングに関する誤解：

ファインチューニングは新しい知識を学習しないとか、RAGの方がファインチューニングより優れていると聞いたかもしれません。それは **false**誤りです。ファインチューニングとRLで専門的なコーディングモデルを訓練することができる一方で、RAGは推論時にモデルが見る情報を補強するだけでモデルの重みを変更できません。FAQや誤解について詳しく読むには [こちら](https://unsloth.ai/docs/jp/fine-tuning-for-beginners/faq-+-is-fine-tuning-right-for-me#fine-tuning-vs.-rag-whats-the-difference):

{% content-ref url="fine-tuning-for-beginners/faq-+-is-fine-tuning-right-for-me" %}
[faq-+-is-fine-tuning-right-for-me](https://unsloth.ai/docs/jp/meru/fine-tuning-for-beginners/faq-+-is-fine-tuning-right-for-me)
{% endcontent-ref %}

> [**Unsloth Studioの紹介：** ](https://unsloth.ai/docs/jp/xin-zhe/studio) モデルのトレーニングと実行のための新しいオープンソースのウェブUIです。これによりノーコードでモデルをファインチューニングでき、可観測性や自動データセット作成機能が利用可能になります。

<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%2FxV1PO5DbF3ksB51nE2Tw%2Fmore%20cropped%20ui%20for%20homepage.png?alt=media&#x26;token=f75942c9-3d8d-4b59-8ba2-1a4a38de1b86" alt="" width="563"><figcaption></figcaption></figure></div>

## 2. 適切なモデルと方法を選ぶ

初心者の場合は、Llama 3.1（8B）のような小さな指示型モデルから始めて実験するのが最適です。また、通常のファインチューニング、RL、QLoRA、またはLoRAトレーニングのどれにするかを決める必要があります：

* **強化学習（RL）** は、ラベル付きデータではなく環境と報酬関数を用いて特定の振る舞い（例：ツール呼び出し）に優れたモデルが必要なときに使用されます。当社はいくつかの [ノートブック例](https://unsloth.ai/docs/jp/unsloth-notebooks#grpo-reasoning-rl-notebooks)を用意していますが、ほとんどのユースケースでは標準のSFTで十分です。
* **LoRA** は、通常ベースモデルの重みを固定したまま追加された低ランクのアダプタ重みの小さなセット（16ビット精度）を訓練するパラメータ効率の高いトレーニング方法です。
* **QLoRA** はLoRAを4ビット精度と組み合わせ、大規模モデルを最小限のリソースで扱えるようにします。
* Unslothはフルファインチューニング（FFT）や事前学習もサポートしており、これらはかなり多くのリソースを要しますが、FFTは通常不要です。正しく行えばLoRAはFFTに匹敵することができます。
* Unsloth **すべてのタイプのモデル**: [テキスト・トゥ・スピーチ](https://unsloth.ai/docs/jp/ji-ben/text-to-speech-tts-fine-tuning), [埋め込み](https://unsloth.ai/docs/jp/ji-ben/embedding-finetuning)、GRPO、RL、 [ビジョン](https://unsloth.ai/docs/jp/ji-ben/vision-fine-tuning)、マルチモーダルなど。

{% hint style="info" %}
研究は、 **同じ精度でトレーニングと提供を行うことが** 精度の保持に役立つことを示しています。つまり、4ビットで提供したいなら4ビットで訓練し、その逆も同様です。
{% endhint %}

我々はQLoRAから始めることを推奨します。これはモデル訓練の中で最も手軽で効果的な方法の一つだからです。当社の [動的4ビット](https://unsloth.ai/blog/dynamic-4bit) 量子化では、QLoRAのLoRAに対する精度損失が大部分回復されています。

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

モデル名はHugging Face上のモデル名と一致させることで任意のモデルに変更できます。例： '`unsloth/llama-3.1-8b-unsloth-bnb-4bit`'.

我々はまず **指示モデル**から始めることを推奨します。これらは会話チャットテンプレート（ChatML、ShareGPTなど）を直接使ってファインチューニングでき、 **ベースモデル** （Alpaca、Vicunaなどを使用する）に比べて必要なデータ量が少なくて済みます。指示モデルとベースモデルの違いについて詳しくは [こちら](https://unsloth.ai/docs/jp/meru/what-model-should-i-use#instruct-or-base-model).

* で確認してください。 **`モデル名の末尾が`** unsloth-bnb-4bit [**で終わるものは**](https://unsloth.ai/blog/dynamic-4bit) **Unslothの動的4ビット**量子化を示します。
* これらのモデルは標準のBitsAndBytesの4ビットモデルよりやや多くのVRAMを消費しますが、はるかに高い精度を提供します。 **`モデル名の末尾が単に`**&#x62;nb-4bit
* で「unsloth」が付かない場合、それは標準のBitsAndBytes 4ビット量子化を指します。 **接尾辞が** ないモデル **は元の**16ビットまたは8ビット形式

です。これらは公式のモデル制作者によるオリジナルモデルですが、チャットテンプレートやトークナイザの修正など重要な修正を含めることがあるため、利用可能な場合は我々のバージョンを使用することを推奨します。

* **`切り替え可能な他の設定があります：`** max\_seq\_length = 2048
* **`– コンテキスト長を制御します。Llama-3は8192をサポートしますが、テストには2048を推奨します。Unslothは4倍長いコンテキストでのファインチューニングを可能にします。`** dtype = None `– デフォルトはNoneです。新しいGPUでは` または `torch.float16` や
* **`torch.bfloat16`** を使用してください。 `load_in_4bit = True`
* – 4ビット量子化を有効にし、ファインチューニング時のメモリ使用量を4分の1に削減します。これを無効にするとLoRAの16ビットファインチューニングが有効になります。16ビットLoRAを有効にするには `load_in_16bit = True`を設定します。フルファインチューニング（FFT）を有効にするには `full_finetuning = True`.
* **を設定してください。8ビットファインチューニングには** load\_in\_8bit = True `を設定します。` 注意：

{% hint style="info" %}
同時に
{% endhint %}

True [に設定できるトレーニング方法は1つだけです。](https://unsloth.ai/docs/jp/ji-ben/text-to-speech-tts-fine-tuning), [一般的な誤りは、計算資源が大量に必要なフルファインチューニング（FFT）にいきなり飛びつくことです。まずはLoRAやQLoRAでテストを開始してください。そこでうまくいかないなら、FFTでもほぼ確実にうまくいきません。LoRAが失敗したからといってFFTが自動的に解決するとは考えないでください。](https://unsloth.ai/docs/jp/meru/reinforcement-learning-rl-guide), [ビジョン](https://unsloth.ai/docs/jp/ji-ben/vision-fine-tuning), [また、](https://unsloth.ai/docs/jp/meru/reinforcement-learning-rl-guide/preference-dpo-orpo-and-kto) テキスト・トゥ・スピーチ（TTS） [や](https://unsloth.ai/docs/jp/ji-ben/continued-pretraining)推論（GRPO）

{% columns %}
{% column %}
、RL

{% content-ref url="fine-tuning-llms-guide/what-model-should-i-use" %}
[what-model-should-i-use](https://unsloth.ai/docs/jp/meru/fine-tuning-llms-guide/what-model-should-i-use)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
（GRPO、DPO）

{% content-ref url="../moderu/tutorials" %}
[tutorials](https://unsloth.ai/docs/jp/moderu/tutorials)
{% endcontent-ref %}
{% endcolumn %}
{% endcolumns %}

## 、継続的な事前学習、テキスト補完など、他のトレーニング手法もUnslothで行うことができます。

モデル選びに関するガイドを参照してください：

* 個別のモデルに関するチュートリアルは：
* 3\. データセットについて [LLMにとってデータセットはモデルを訓練するために使用されるデータの集合体です。訓練に有用であるためには、テキストデータはトークン化可能な形式である必要があります。](https://unsloth.ai/docs/jp/meru/datasets-guide#synthetic-data-generation) 通常、データセットは質問と回答の2列で作成する必要があります。品質と量がファインチューニングの最終結果に大きく影響するため、この部分を正しく行うことが非常に重要です。
* ChatGPTやローカルLLMを使って [データを合成生成して](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Meta_Synthetic_Data_Llama3_2_\(3B\).ipynb)
* データセットを（QAペアに）構造化することができます。
* また、文書（PDF、ビデオなど）を自動で解析し、QAペアを生成してローカルモデル（例：Llama 3.2）を使って自動クリーニングする新しいSynthetic Datasetノートブックも利用できます。

***ノートブックはこちらからアクセスできます。***

{% content-ref url="fine-tuning-llms-guide/datasets-guide" %}
[datasets-guide](https://unsloth.ai/docs/jp/meru/fine-tuning-llms-guide/datasets-guide)
{% endcontent-ref %}

ファインチューニングは既存の文書リポジトリから学習し、知識ベースを継続的に拡張できますが、単にデータを投げ込むだけでは最適な結果は得られません。最適な結果を得るためには、理想的には質問-回答ペアとしてよく構築されたデータセットをキュレーションすることが重要です。これにより学習、理解、応答精度が向上します。 [ただし、常にそうとは限りません。例えばコード向けにLLMをファインチューニングする場合、コードデータをそのまま大量に投入するだけでも、構造化フォーマットがなくてもモデルの性能が大幅に向上することがあります。したがって、ユースケースによります。](https://docs.unsloth.ai/basics/tutorial-how-to-finetune-llama-3-and-use-in-ollama#id-6.-alpaca-dataset) データセット作成に関する詳細はこちら：

### 当社の多くのノートブック例では

Alpacaデータセット [を利用していますが、ビジョンのような他のノートブックは回答に画像を含める必要があるなど別のデータセットを使用する場合があります。](https://unsloth.ai/docs/jp/meru/fine-tuning-llms-guide/lora-hyperparameters-guide) 4. トレーニングのハイパーパラメータを理解する

**研究や実運用のベストプラクティスを使って適切な**

{% content-ref url="fine-tuning-llms-guide/lora-hyperparameters-guide" %}
[lora-hyperparameters-guide](https://unsloth.ai/docs/jp/meru/fine-tuning-llms-guide/lora-hyperparameters-guide)
{% endcontent-ref %}

## ハイパーパラメータ

を選ぶ方法を学び、それぞれがモデルの性能にどのように影響するかを理解してください。

### ハイパーパラメータがトレーニングに与える影響の完全なガイドは次を参照してください：

5\. インストールと要件 [ノートブック](https://unsloth.ai/docs/jp/meru/unsloth-notebooks) Unslothは主に2つの方法で利用できます。無料のノートブックかローカルです。

Unslothノートブック [テキスト・トゥ・スピーチ](https://unsloth.ai/docs/jp/ji-ben/text-to-speech-tts-fine-tuning), [埋め込み](https://unsloth.ai/docs/jp/ji-ben/embedding-finetuning)、GRPO、RL、 [ビジョン](https://unsloth.ai/docs/jp/ji-ben/vision-fine-tuning)初心者にはガイド付きの手順で始めるのが最も簡単なので、事前作成された

### をまず利用することをお勧めします。後でノートブックをエクスポートしてローカルで使用できます。

Unslothには [docker](https://unsloth.ai/docs/jp/meru/install/docker "mention") または `pip install unsloth` 、マルチモーダル、さまざまなユースケース向けのステップバイステップのノートブックがあります。 [Windows](https://unsloth.ai/docs/jp/meru/install/windows-installation)ローカルインストール

Unslothはローカルにもインストールできます（

{% columns %}
{% column %}
{% content-ref url="fine-tuning-for-beginners/unsloth-requirements" %}
[unsloth-requirements](https://unsloth.ai/docs/jp/meru/fine-tuning-for-beginners/unsloth-requirements)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
{% content-ref url="install" %}
[install](https://unsloth.ai/docs/jp/meru/install)
{% endcontent-ref %}
{% endcolumn %}
{% endcolumns %}

## を使ったLinux、WSLなど）。使用するモデルによっては十分なVRAMとリソースが必要です。

UnslothのインストールにはWindowsまたはLinuxデバイスが必要です。インストール後はノートブックをコピー＆ペーストしてローカル環境で使用できます。詳細は次を参照してください：

6\. トレーニングと評価

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fgit-blob-feb9b0f5763d41cecaec9a3a9cd227ad918f0ca7%2Fimage.png?alt=media" alt="" width="375"><figcaption><p>すべての準備が整ったら、いよいよトレーニングです！何かうまくいかない場合は、ハイパーパラメータやデータセットなどをいつでも変更できることを忘れないでください。</p></figcaption></figure>

トレーニング中に数値のログが表示されます。これはトレーニング損失であり、モデルがデータセットからどれだけ学んでいるかを示します。多くの場合、損失が約0.5〜1.0程度であれば良い兆候ですが、データセットやタスクによって異なります。損失が下がらない場合は設定を調整する必要があるかもしれません。損失が0に近づくと過学習の可能性があるため、検証も確認することが重要です。

* **`トレーニング損失は数値として表示されます`** 我々は通常、長いトレーニングやより大きなバッチサイズが必要でない限り、デフォルト設定を維持することを推奨します。 `per_device_train_batch_size = 2` – GPU利用率を改善するために増やすことができますが、パディングによる訓練の遅延に注意してください。代わりに
* **`gradient_accumulation_steps`** を増やしてトレーニングを滑らかにしてください。
* **`gradient_accumulation_steps = 4`** – メモリ使用量を増やさずに大きなバッチサイズをシミュレートします。 `max_steps = 60` – トレーニングを高速化します。フルランではこれを
* **`num_train_epochs = 1`** （過学習を避けるために1〜3エポックを推奨）に置き換えてください。 `learning_rate = 2e-4`, `– より遅くしかしより精密なファインチューニングのために低めに設定します。例えば次の値を試してください：`1e-4 `5e-5`.

#### 、または

2e-5 `評価`.

評価を行うには、モデルと実際に会話して手動で評価し、自分の好みに合っているか確かめることができます。Unslothで評価を有効にすることもできますが、データセットのサイズによっては時間がかかる点に注意してください。評価を高速化するには、評価用データセットのサイズを減らすか、

## evaluation\_steps = 100

を設定してください。

<div><figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fgit-blob-f2d5f23fa62ec89e06bf20fea433f9a1e42a2fe3%2Fimage.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-cdf5d779635901dce7793df92531dbf3caf0fb0a%2Fimage%20(47).png?alt=media" alt=""><figcaption></figcaption></figure></div>

テストのために、トレーニングデータの20％を取り分けてテストに使うこともできます。すでにすべてのトレーニングデータを使用している場合は手動で評価する必要があります。自動評価ツールを使用することもできますが、自動化ツールがあなたの評価基準と完全に一致しない可能性があることに留意してください。 **7. モデルの実行とデプロイ** トレーニングが完了したらモデルを実行しましょう！黄色で下線が引かれた部分を編集できます。実際、マルチターンのチャットボットを作成したので、過去の会話を見たかのようにモデルを呼び出すこともできます。例えば以下のように： `補足：Unsloth自体は`2倍高速な推論 `をネイティブで提供しているので、常に` FastLanguageModel.for\_inference(model)

### を呼び出すことを忘れないでください。

モデルにより長い応答を出力させたい場合は、

{% content-ref url="../ji-ben/inference-and-deployment" %}
[inference-and-deployment](https://unsloth.ai/docs/jp/ji-ben/inference-and-deployment)
{% endcontent-ref %}

{% columns %}
{% column %}
max\_new\_tokens = 128

{% content-ref url="../ji-ben/inference-and-deployment/saving-to-gguf" %}
[saving-to-gguf](https://unsloth.ai/docs/jp/ji-ben/inference-and-deployment/saving-to-gguf)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
を256や1024のようなより大きな値に設定してください。結果が返ってくるまでの待ち時間も長くなる点に注意してください！

{% content-ref url="../ji-ben/inference-and-deployment/vllm-guide" %}
[vllm-guide](https://unsloth.ai/docs/jp/ji-ben/inference-and-deployment/vllm-guide)
{% endcontent-ref %}
{% endcolumn %}
{% endcolumns %}

保存とデプロイ [Ollama、vLLM、Open WebUIのような希望する推論エンジンにモデルを保存・デプロイするには、ベースモデルの上にLoRAアダプタを使用する必要があります。各フレームワーク向けに専用のガイドがあります：](https://huggingface.co/settings/tokens) 単一デバイス（ラップトップやMacなど）で推論を実行する場合は、llama.cppを使ってGGUF形式に変換し、Ollama、llama.cpp、LM Studioなどで使用してください：

<div><figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fgit-blob-8c577103f7c4fe883cabaf35c8437307c6501686%2Fimage.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-1a1be852ca551240bdce47cf99e6ccd7d31c1326%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure></div>

エンタープライズやマルチユーザー推論でFP8、AWQをデプロイする場合はvLLMを使用してください： `我々はファインチューニングしたモデルを小さな100MB程度のファイルであるLoRAアダプタとして保存できます。モデルをアップロードしたい場合はHugging Faceにプッシュすることも可能です。Hugging Faceの` トークン

## を取得して、自分のトークンを追加するのを忘れないでください！

モデルを保存した後、再びUnslothを使ってモデル自体を実行できます！推論のために再度

FastLanguageModel [を使用してください！](https://unsloth.ai/blog/)

8\. 完了しました！ [こちら](https://discord.gg/unsloth) または [おめでとうございます — Unslothを使って言語モデルを正常にファインチューニングし、希望する推論エンジンにエクスポートしました！](https://www.reddit.com/r/unsloth/)ファインチューニングのコツやヒントについてもっと知りたい場合は、非常に有益な当社のブログを参照してください：

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fgit-blob-69482ba90d417f7bf98dddaf83795cdd3eb20efc%2Fsloth%20sparkling%20square.png?alt=media" alt="" width="188"><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/meru/fine-tuning-llms-guide.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.
