> 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/meru/fine-tuning-llms-guide/tutorial-how-to-finetune-llama-3-and-use-in-ollama.md).

# チュートリアル：Llama-3をファインチューニングしてOllamaで使う方法

このチュートリアルの終わりまでに、あなたはカスタムチャットボットを作成します。 **Llama-3 をファインチューニングして** かつ [**Unsloth**](https://github.com/unslothai/unsloth) 無料で。これはローカルで [**Ollama**](https://github.com/ollama/ollama) を介してあなたのPC上で、または無料のGPUインスタンス上で [**Google Colab**](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Llama3_\(8B\)-Ollama.ipynb)。以下のようにチャットボットと対話的にやり取りできるようになります:

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

**Unsloth** を使うとファインチューニングがずっと簡単になり、ファインチューニング済みモデルを自動的に **Ollama** へ、統合された自動 `Modelfile` 作成機能付きでエクスポートできます！助けが必要なら、私たちのDiscordサーバーに参加できます: <https://discord.com/invite/unsloth>

{% hint style="warning" %}
**コードをコピーしたり保存したい場合は、すべて私たちの** [**Ollama Colab ノートブック**](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Llama3_\(8B\)-Ollama.ipynb)**で利用できます。そこで直接使うことも、ローカル環境向けに調整することもできます:** [**https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Llama3\_(8B)-Ollama.ipynb**](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Llama3_\(8B\)-Ollama.ipynb)
{% endhint %}

## 1. Unsloth とは？

[Unsloth](https://github.com/unslothai/unsloth) は、Llama-3、Mistral、Phi-3、Gemma などのLLMのファインチューニングを2倍高速にし、メモリ使用量を70%削減し、しかも精度低下なしで実現します！このチュートリアルでは、無料GPUを提供する Google Colab を使用します。以下から無料ノートブックにアクセスできます:

* [Ollama Llama-3 Alpaca](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Llama3_\(8B\)-Ollama.ipynb) （このノートブックを使用します）
* [CSV/Excel Ollama ガイド](https://colab.research.google.com/drive/1VYkncZMfGFkeCEgN2IzbZIKEDkyQuJAS?usp=sharing)

#### ***また、Google アカウントにログインする必要があります！***

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

## 2. Ollama とは？

[Ollama ](https://github.com/ollama/ollama)を使うと、自分のコンピュータから言語モデルをすばやく簡単に実行できます！これは、Llama-3 のような言語モデルをバックグラウンドで実行できるプログラムを静かに起動します。突然言語モデルに質問したくなったら、Ollama にリクエストを送るだけで、すぐに結果が返ってきます！私たちは推論エンジンとして Ollama を使用します！

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

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

<figure><img src="/files/351b64e1058a7bff0cebb42d5ca4787250cf111b" alt=""><figcaption></figcaption></figure>

Colab ノートブックを使ったことがない場合は、ノートブック自体の簡単な説明です:

1. **各「セル」にある再生ボタン。** これをクリックすると、そのセルのコードが実行されます。どのセルも飛ばしてはいけず、すべてのセルを時系列順に実行する必要があります。エラーが発生した場合は、以前に実行しなかったセルを再実行してください。再生ボタンをクリックしたくない場合は、CTRL + ENTER を押すこともできます。
2. **上部ツールバーの Runtime ボタン。** このボタンを使って「Run all」を押し、ノートブック全体を一度に実行することもできます。これにより、すべてのカスタマイズ手順はスキップされますが、最初の試しとしては良い方法です。
3. **Connect / Reconnect T4 ボタン。** ここをクリックすると、より高度なシステム統計を確認できます。

最初のインストール用セルは以下のようになっています: 角括弧 \[ ] の中の PLAY ボタンをクリックするのを忘れないでください。私たちはオープンソースの Github パッケージを取得し、他のいくつかのパッケージもインストールします。

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

## 4. ファインチューニングするモデルを選択する

では次に、ファインチューニング用のモデルを選びましょう！デフォルトでは Meta / Facebook の Llama-3 を選択しています。これはなんと15兆の「トークン」で訓練されています。1トークンは英単語1語のようなものだと考えてください。これはおよそ35万冊分の分厚い百科事典に相当します！他の人気モデルには、Mistral、Phi-3（GPT-4 の出力を使って訓練）、Google の Gemma（13兆トークン！）などがあります。

Unsloth はこれらのモデルやさらに多くのモデルをサポートしています！実際、Hugging Face モデルハブのモデル名を入力するだけで、動作するかどうか確認できます！動作しない場合はエラーになります。

<figure><img src="/files/5e6fbacb9d0b2cd92aa52379bf6304bc4c8d790e" alt=""><figcaption></figcaption></figure>

切り替え可能な他の設定が3つあります:

1. ```python
   max_seq_length = 2048
   ```

   これはモデルのコンテキスト長を決定します。たとえば Gemini は100万を超えるコンテキスト長を持っていますが、Llama-3 は 8192 のコンテキスト長です。私たちは任意の数値を選べるようにしていますが、テスト目的では 2048 に設定することをおすすめします。Unsloth は非常に長いコンテキストのファインチューニングもサポートしており、最高水準より4倍長いコンテキスト長を提供できることも示しています。
2. ```python
   dtype = None
   ```

   これは None のままにしてください。ただし、新しい GPU では torch.float16 または torch.bfloat16 を選択できます。
3. ```python
   load_in_4bit = True
   ```

   私たちは4ビット量子化でファインチューニングを行います。これによりメモリ使用量が4分の1になり、実際に無料の16GBメモリGPUでファインチューニングできるようになります。4ビット量子化は本質的に重みを限られた数の値に変換してメモリ使用量を減らします。その欠点は、精度が1〜2%低下することです。H100 のような大きな GPU では、このわずかな追加精度が欲しいなら False に設定してください。

<figure><img src="/files/3356660b15180086416bb50f292a33c2ffaf9f41" alt=""><figcaption></figcaption></figure>

セルを実行すると、Unsloth のバージョン、使用しているモデル、GPU のメモリ量、その他いくつかの統計が表示されます。今のところは無視してください。

## 5. ファインチューニングのパラメータ

<figure><img src="/files/581746953ebdf401d2893cd4b74c41516c13ed09" alt=""><figcaption></figcaption></figure>

ここでファインチューニングをカスタマイズできます。上の数値を編集できますが、すでにかなり妥当な数値を選んでいるので、無視しても構いません。

目標は、これらの数値を変更して精度を上げることですが、同時に **過学習を抑える**ことでもあります。過学習とは、言語モデルにデータセットを暗記させてしまい、新しい未知の質問に答えられなくなることです。私たちは最終モデルに、見たことのない質問へ答えさせたいのであって、暗記させたいわけではありません。

1. ```python
   r = 16, # 0 より大きい任意の数を選択！ 推奨 8, 16, 32, 64, 128
   ```

   ファインチューニング処理のランクです。数値が大きいほどメモリを多く使い遅くなりますが、難しいタスクでは精度が向上する可能性があります。通常は 8（高速なファインチューニング向け）や最大 128 のような数を推奨します。大きすぎる数値は過学習を引き起こし、モデルの品質を損なう可能性があります。
2. ```python
   target_modules = ["q_proj", "k_proj", "v_proj", "o_proj",
                     "gate_proj", "up_proj", "down_proj",],
   ```

   私たちはファインチューニング対象としてすべてのモジュールを選択しています。いくつか外せばメモリ使用量を減らし、学習を速くできますが、これはあまりおすすめしません。すべてのモジュールで学習させてください！
3. ```python
   lora_alpha = 16,
   ```

   ファインチューニングのスケーリング係数です。数値が大きいほど、ファインチューニングがデータセットについてより多くを学習しますが、過学習を促進することがあります。私たちはこれをランク `r`と同じか、その2倍にすることを推奨します。
4. ```python
   lora_dropout = 0, # 任意の値をサポートしますが、= 0 が最適化されています
   ```

   より高速に学習するため、これは 0 のままにしてください！過学習を減らせますが、それほど大きくはありません。
5. ```python
   bias = "none",    # 任意をサポートしますが、= "none" が最適化されています
   ```

   より高速で過学習の少ない学習のため、これは 0 のままにしてください！
6. ```python
   use_gradient_checkpointing = "unsloth", # 非常に長いコンテキスト向けに True または "unsloth"
   ```

   選択肢には `True`, `False` および `"unsloth"`が含まれます。私たちは `"unsloth"` を推奨します。メモリ使用量をさらに30%削減し、非常に長いコンテキストのファインチューニングをサポートするためです。詳しくはこちらをお読みください: <https://unsloth.ai/blog/long-context> 詳細について。
7. ```python
   random_state = 3407,
   ```

   これは決定論的な実行を決める数値です。学習やファインチューニングには乱数が必要なので、この数値を設定すると実験を再現可能にできます。
8. ```python
   use_rslora = False,  # rank stabilized LoRA をサポートしています
   ```

   高度な機能で、 `lora_alpha = 16` を自動的に設定します。必要ならこれを使えます！
9. ```python
   loftq_config = None, # そして LoftQ も
   ```

   LoRA 行列を重みの上位 r 個の特異ベクトルで初期化する高度な機能です。精度が多少向上する場合がありますが、開始時にメモリ使用量が急増することがあります。

## 6. Alpaca データセット

<figure><img src="/files/0492d42993631eec9d2ee1a7bd4ced17bbbaded5" alt=""><figcaption></figcaption></figure>

次に、GPT-4 自身を呼び出して作成された Alpaca データセットを使います。これは 52,000 件の指示と出力のリストで、Llama-1 が公開されたとき非常に人気がありました。ベースLLMをファインチューニングして ChatGPT 自体に対抗できるようにしたからです。

Alpaca データセットの GPT4 版にはここからアクセスできます: <https://huggingface.co/datasets/vicgalle/alpaca-gpt4>。古い最初のバージョンのデータセットはこちらです: <https://github.com/tatsu-lab/stanford_alpaca>。以下にデータセットのいくつかの例を示します:

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

各行には3つの列、つまり instruction、input、output があることがわかります。基本的には各行を以下のような1つの大きなプロンプトに結合します。そしてこれを使って言語モデルをファインチューニングすると、ChatGPT に非常に近いものになりました。私たちはこのプロセスを **教師あり指示ファインチューニング**.

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

## 7. ファインチューニング用の複数列

しかし大きな問題は、ChatGPT 風のアシスタントでは 1 instruction / 1 prompt しか扱えず、複数列 / 複数入力は許可されないことです。たとえば ChatGPT では、1つのプロンプトしか送信できず、複数のプロンプトは送れません。

<figure><img src="/files/137e75def851ac465b7e74ac3b96c30e6aa3b53f" alt=""><figcaption></figcaption></figure>

つまり実質的には、ファインチューニングを機能させるために複数の列を1つの大きなプロンプトに「結合」しなければならないということです！

たとえば非常に有名な Titanic データセットには多数の列があります。あなたの仕事は、年齢、客室クラス、運賃などに基づいて、乗客が生存したか死亡したかを予測することでした。これをそのまま ChatGPT に渡すことはできないので、この情報を1つの大きなプロンプトに「結合」する必要があります。

<figure><img src="/files/8f47f35cdf8d1f462b31a2248dd1f0c9c5400095" alt=""><figcaption></figcaption></figure>

たとえば、乗客に関するすべての情報を含む「結合済み」の単一プロンプトを ChatGPT に与えれば、その乗客が死亡したか生存したかを推測または予測させることができます。

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

他のファインチューニングライブラリでは、すべての列を1つのプロンプトに結合して、手動でデータセットを学習用に準備する必要があります。Unsloth では、単に `to_sharegpt` という関数を使うだけで、一度にこれを実行できます！

Titanic ファインチューニング用ノートブックにアクセスするか、CSV または Excel ファイルをアップロードしたい場合は、こちらへ: <https://colab.research.google.com/drive/1VYkncZMfGFkeCEgN2IzbZIKEDkyQuJAS?usp=sharing>

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

ここは少し複雑です。多くのカスタマイズを許可しているためですが、いくつかポイントがあります:

* すべての列を波括弧で囲む必要があります `{}`。これらは実際の CSV / Excel ファイル内の列名です。
* オプションのテキスト要素は `[[]]`で囲む必要があります。たとえば列 "input" が空なら、結合関数はそのテキストを表示せずスキップします。これは欠損値のあるデータセットに便利です。
* 出力またはターゲット / 予測列を `output_column_name`で選択します。Alpaca データセットでは、これは `output`.

たとえば Titanic データセットでは、以下のように各列 / テキスト片がオプションになる大きな結合プロンプト形式を作成できます。

<figure><img src="/files/7893ddfca1b71ac2b74077096f18e345bd91e11b" alt=""><figcaption></figcaption></figure>

たとえば、データセットが大量の欠損データを含んでこのようになっているとします:

| Embarked | Age | Fare |
| -------- | --- | ---- |
| S        | 23  |      |
|          | 18  | 7.25 |

すると、結果を次のようにはしたくありません:

1. その乗客は S から乗船しました。年齢は 23 歳です。運賃は **空**.
2. その乗客は **空**から乗船しました。年齢は 18 歳です。運賃は $7.25 です。

その代わり、列をオプションとして `[[]]`で囲むことで、この情報を完全に除外できます。

1. \[\[その乗客は S から乗船しました。]] \[\[年齢は 23 歳です。]] \[\[運賃は **空**.]]
2. \[\[その乗客は **空**から乗船しました。]] \[\[年齢は 18 歳です。]] \[\[運賃は $7.25 です。]]

は次のようになります:

1. その乗客は S から乗船しました。年齢は 23 歳です。
2. 年齢は 18 歳です。運賃は $7.25 です。

## 8. マルチターン会話

気づかなかったかもしれませんが、Alpaca データセットはシングルターンです。一方、ChatGPT の利用は対話的で、複数ターンで会話できます。たとえば、左側が私たちの望むものですが、右側の Alpaca データセットは単一の会話しか提供しません。ファインチューニング済み言語モデルには、どうにかして ChatGPT のようなマルチターン会話を学ばせたいのです。

<figure><img src="/files/850bbe22af1e6e8304e5a34a7fcc08915e34f02d" alt=""><figcaption></figcaption></figure>

そこで私たちは `conversation_extension` パラメータを導入しました。これは本質的に、シングルターンのデータセットからランダムな行をいくつか選び、それらを1つの会話に結合するものです！たとえば 3 に設定すると、3行をランダムに選んで1つに結合します！長くしすぎると学習は遅くなりますが、チャットボットや最終的なファインチューニング結果がずっと良くなる可能性があります！

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

次に `output_column_name` を予測 / 出力列に設定します。Alpaca データセットでは output 列になります。

その後、 `standardize_sharegpt` 関数を使って、ファインチューニングに正しい形式へデータセットを整えます！必ずこれを呼び出してください！

<figure><img src="/files/323f5402e3bc525f250606d1195dfb6003af0972" alt=""><figcaption></figcaption></figure>

## 9. カスタマイズ可能なチャットテンプレート

これで、ファインチューニング自体のチャットテンプレートを指定できます。非常に有名な Alpaca 形式は以下です:

<figure><img src="/files/6f4e805ad43a082898ae0748207b9063cd25dc96" alt=""><figcaption></figcaption></figure>

ですが、ChatGPT 風のファインチューニングでは1つのプロンプトだけが必要なので、これは良くないアイデアだと言いましたよね？Unsloth を使ってすべてのデータセット列を1つに結合することに成功したので、基本的に以下のような、1つの入力列（instruction）と1つの出力を持つスタイルのチャットテンプレートを作成できます:

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

必要なのは、 `{INPUT}` というフィールドを instruction 用に置き、さらに `{OUTPUT}` というフィールドをモデルの出力用に置くことだけです。実際には、オプションの `{SYSTEM}` フィールドも利用可能で、これは ChatGPT のようにシステムプロンプトをカスタマイズするのに便利です。たとえば、以下はチャットテンプレートをカスタマイズできるクールな例です:

<figure><img src="/files/687d676ea536236df884fa1b12c1428d31be8bee" alt=""><figcaption></figcaption></figure>

OpenAI モデルで使われる ChatML 形式の場合:

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

あるいは、Llama-3 自体のテンプレートも使えます（これは Llama-3 の instruct 版を使う場合にのみ機能します）: 実際には、オプションの `{SYSTEM}` フィールドも利用可能で、これは ChatGPT のようにシステムプロンプトをカスタマイズするのに便利です。

<figure><img src="/files/9cfeed7201c3c9f176d70d003b115d79717f75f9" alt=""><figcaption></figcaption></figure>

または、CSV と Excel のアップロードを含むこの Colab ノートブックで、乗客が死亡したか生存したかを予測する必要がある Titanic 予測タスクでは: <https://colab.research.google.com/drive/1VYkncZMfGFkeCEgN2IzbZIKEDkyQuJAS?usp=sharing>

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

## 10. モデルを学習させる

ではモデルを学習させましょう！通常、より長いステップでファインチューニングしたい場合や、大きなバッチサイズで学習したい場合を除き、以下は編集しないことをおすすめします。

<figure><img src="/files/7af8970c59d4921370fb559780523302955ebb88" alt=""><figcaption></figcaption></figure>

通常、上のパラメータを変更することはおすすめしませんが、そのいくつかを補足すると:

1. ```python
   per_device_train_batch_size = 2,
   ```

   GPU のメモリをもっと活用したい場合は、バッチサイズを増やしてください。また、これを増やすと学習がより滑らかになり、過学習しにくくなります。ただし、パディングの問題で実際には学習が遅くなることがあるため、通常はおすすめしません。代わりに通常は、 `gradient_accumulation_steps` を増やすよう勧めています。これは単にデータセットに対してより多くのパスを行うだけです。
2. ```python
   gradient_accumulation_steps = 4,
   ```

   上のバッチサイズ自体を増やすのと同等ですが、メモリ消費には影響しません！通常、より滑らかな学習損失曲線が欲しい場合に、これを増やすことをおすすめしています。
3. ```python
   max_steps = 60, # num_train_epochs = 1,
   ```

   高速学習のため、ステップ数を 60 に設定しています。数時間かかる完全な学習を行う場合は、代わりに `max_steps`をコメントアウトし、 `num_train_epochs = 1`に置き換えてください。1 に設定すると、データセット全体を1回通すことを意味します。通常は1〜3回のパスを推奨し、それ以上はファインチューニングが過学習するためおすすめしません。
4. ```python
   learning_rate = 2e-4,
   ```

   ファインチューニングをより遅くしたいが、より高い精度に収束する可能性を高めたい場合は、学習率を下げてください。通常、試す数値として 2e-4、1e-4、5e-5、2e-5 をおすすめします。

<figure><img src="/files/3b839d48215bfa75a6a9250311472689d066d4b8" alt=""><figcaption></figcaption></figure>

学習中には数字のログが表示されます。これは training loss で、モデルがデータセットからどれだけうまく学習しているかを示します。多くの場合、0.5 から 1.0 程度の loss は良い兆候ですが、データセットやタスクに依存します。loss が下がらない場合は、設定を調整する必要があるかもしれません。loss が 0 になる場合は過学習を意味する可能性があるため、検証も確認することが重要です。

## 11. 推論 / モデルの実行

<figure><img src="/files/63bd8f0ac69ea1c5389df59ec837034e3ea8533e" alt=""><figcaption></figcaption></figure>

では、学習プロセスが完了したのでモデルを実行してみましょう！黄色の下線部分は編集できます！実際、マルチターンのチャットボットを作成したので、以下のように過去の会話を見たかのようにモデルを呼び出すこともできます:

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

念のため言うと、Unsloth 自体は **2倍高速な推論** もネイティブに提供しているので、必ず `FastLanguageModel.for_inference(model)`を呼び出すのを忘れないでください。モデルにより長い応答を出力させたい場合は、 `max_new_tokens = 128` を 256 や 1024 のような大きめの数に設定してください。もちろん結果を待つ時間も長くなることに注意してください！

## 12. モデルの保存

これで、ファインチューニング済みモデルを以下のような LoRA アダプタと呼ばれる小さな 100MB ファイルとして保存できます。モデルをアップロードしたい場合は、代わりに Hugging Face hub に push することもできます！Hugging Face トークンを取得するのを忘れないでください: <https://huggingface.co/settings/tokens> そしてトークンを追加してください！

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

モデルを保存したあと、再び Unsloth を使ってモデル自体を実行できます！ `FastLanguageModel` をもう一度使って推論を呼び出しましょう！

<figure><img src="/files/346616de5166da98e0faaf51576a79ebb1a572db" alt=""><figcaption></figcaption></figure>

## 13. Ollama へのエクスポート

最後に、ファインチューニングしたモデルを Ollama 自体へエクスポートできます！まず、Colab ノートブックに Ollama をインストールする必要があります：

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

その後、下のようにファインチューニングしたモデルを llama.cpp の GGUF 形式にエクスポートします：

<figure><img src="/files/6efcf064b89b8e2aa9d1f23c7ab2429dd5e08340" alt=""><figcaption></figcaption></figure>

変換の注意 `False` を `True` にするのは1行だけで、すべての行を `True`に変更しないでください。さもないと、とても長い時間待つことになります！通常は最初の行を `True`に設定することをおすすめします。そうすれば、ファインチューニングしたモデルをすばやく `Q8_0` 形式（8ビット量子化）へエクスポートできます。さらに、さまざまな量子化手法の一覧へもエクスポートでき、よく使われるものの1つが `q4_k_m`.

こちらへ移動して <https://github.com/ggml-org/llama.cpp> GGUF について詳しく学んでください。GGUF への手動エクスポート方法についての説明もこちらにあります： <https://github.com/unslothai/unsloth/wiki#manually-saving-to-gguf>

下のような長いテキストの一覧が表示されますが、5〜10分ほど待ってください！！

<figure><img src="/files/5d662b28f425af8d1925925f6fc77f809f367a2c" alt=""><figcaption></figcaption></figure>

そして最後に、いちばん最後は下のようになります：

<figure><img src="/files/22a36601d1e385efdacab33e8e2df11d181b7821" alt=""><figcaption></figcaption></figure>

次に、Ollama 自体をバックグラウンドで実行する必要があります。私たちは `subprocess` を使います。Colab は非同期呼び出しを好まないためですが、通常は単に `ollama serve` をターミナル / コマンドプロンプトで実行します。

<figure><img src="/files/9661f12f349ed855630594174e083bdf1a359a92" alt=""><figcaption></figcaption></figure>

## 14. 自動 `Modelfile` 作成

Unsloth が提供するトリックは、私たちが自動で `Modelfile` を作成することです。これは Ollama が必要とするものです！これは設定の一覧であり、ファインチューニング時に使用したチャットテンプレートも含まれています！また、 `Modelfile` を下のように出力することもできます：

<figure><img src="/files/6e063f003ba20580f4ed256e8bc5fd027609a3a0" alt=""><figcaption></figcaption></figure>

その後、 `Modelfile`

<figure><img src="/files/23b91e3fcfe5156f1dcf8abcf2522b8e2abf835c" alt=""><figcaption></figcaption></figure>

## 15. Ollama 推論

を使って、Ollama と互換性のあるモデルを作成するよう Ollama に指示します。これで、推論のためにモデルを呼び出すことができます。自分のローカルマシン / 無料の Colab ノートブック上でバックグラウンド実行している Ollama サーバーそのものを呼び出したい場合に使ってください。黄色で下線が引かれた部分は編集できます。

<figure><img src="/files/3906fb6bd91704143a31a0d297f0c685a92cc785" alt=""><figcaption></figcaption></figure>

## 16. 対話型 ChatGPT スタイル

ただし、ファインチューニング済みモデルを実際に ChatGPT のように動かすには、もう少し作業が必要です！まずターミナルアイコンをクリックしてください![](/files/5d7ddb6751a9fcf16245dc1cd315dda2fa247553) するとターミナルが表示されます。左側のサイドバーにあります。

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

次に、ターミナルウィンドウ内の妙な出力を消すために、ENTER を2回押す必要があるかもしれません。数秒待ってから、 `ollama run unsloth_model` と入力し、ENTER を押します。

<figure><img src="/files/8bffab8e37199f9bef0076b3c3a649fc8bf22774" alt=""><figcaption></figcaption></figure>

最後に、実際の ChatGPT のようにファインチューニング済みモデルと対話できます！システムを終了するには CTRL + D を押し、チャットボットと会話するには ENTER を押してください！

<figure><img src="/files/248d4d3f576d02dcf8e75038bec4f89cf3496870" alt=""><figcaption></figcaption></figure>

## やりました！

言語モデルのファインチューニングに成功し、Unsloth によって 2倍高速、VRAM 使用量 70% 削減で Ollama にエクスポートできました！しかもこれらすべてを Google Colab ノートブック上で無料で行えました！

報酬モデリングのやり方、継続事前学習、vLLM や GGUF へのエクスポート、テキスト補完、またはファインチューニングのコツやテクニックについてさらに学びたい場合は、私たちの [Github](https://github.com/unslothai/unsloth#-finetune-for-free).

ファインチューニングで助けが必要な場合は、私たちの Discord サーバーにも参加できます [こちら](https://discord.gg/unsloth)。Ollama について助けが欲しい場合は、彼らのサーバーにも参加できます [こちら](https://discord.gg/ollama).

最後に、ここまで読んでついてきてくださったことに感謝します！この内容が、言語モデルのファインチューニングの仕組みの一端を理解する助けとなり、役に立ったことを願っています！

Alpaca データセットの例にアクセスするには、 [こちら](https://colab.research.google.com/drive/1WZDi7APtQ9VsvOrQSSC5DDtxq159j8iZ?usp=sharing)をクリックしてください。また、CSV / Excel ファインチューニングガイドは [こちら](https://colab.research.google.com/drive/1VYkncZMfGFkeCEgN2IzbZIKEDkyQuJAS?usp=sharing).


---

# 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/meru/fine-tuning-llms-guide/tutorial-how-to-finetune-llama-3-and-use-in-ollama.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.
