# チュートリアル: 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. ```
   max_seq_length = 2048
   ```

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

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

   ファインチューニングは4bit量子化で行います。これによりメモリ使用量が4分の1になり、実際に無料の16GBメモリGPUでファインチューニングできます。4bit量子化は本質的に重みを限られた数の値に変換してメモリ使用量を削減します。欠点として精度が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. ```
   r = 16, # 0より大きい任意の数を選択！推奨は 8, 16, 32, 64, 128
   ```

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

   ファインチューニングする全モジュールを選択します。いくつか外してメモリ使用量を減らし、学習を速くすることもできますが、強く推奨しません。全モジュールで学習してください！
3. ```
   lora_alpha = 16,
   ```

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

   学習を速くするために 0 のままにしてください！過学習を多少減らせますが、劇的ではありません。
5. ```
   bias = "none",    # 任意に対応しますが、= "none" が最適化されています
   ```

   学習を速くし、過学習を抑えて学習するために 0 のままにしてください！
6. ```
   use_gradient_checkpointing = "unsloth", # 非常に長いコンテキストには True または "unsloth"
   ```

   オプションには以下が含まれます `True`, `False` および `"unsloth"`。私たちは `"unsloth"` を推奨します。追加で30%のメモリ削減ができ、非常に長いコンテキストのファインチューニングもサポートしているからです。詳細はこちらを読めます： <https://unsloth.ai/blog/long-context> 詳細について。
7. ```
   random_state = 3407,
   ```

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

   を設定する高度な機能 `lora_alpha = 16` を自動的に行います。使いたいなら使えます！
9. ```
   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データセットのGPT-4版はこちらからアクセスできます： <https://huggingface.co/datasets/vicgalle/alpaca-gpt4>。古い最初の版のデータセットはこちらです： <https://github.com/tatsu-lab/stanford_alpaca>。以下にデータセットの例を示します：

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

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

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

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

しかし大きな問題は、ChatGPT形式のアシスタントでは1つの指示 / 1つのプロンプトしか許されず、複数列 / 複数入力は許されないことです。たとえば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データセットでは、出力列になります。

その後、 `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}` フィールドを指示用に、そして `{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>

あるいは、このColabノートブックでTitanic予測タスクを行う場合のように、CSVとExcelのアップロードを含むものでも使えます： <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. ```
   per_device_train_batch_size = 2,
   ```

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

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

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

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

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

学習中に数字のログが表示されます。これは学習損失で、モデルがデータセットからどれだけ学習しているかを示します。多くの場合、0.5〜1.0程度の損失は良い兆候ですが、データセットとタスクによります。損失が下がらない場合は設定を調整する必要があるかもしれません。損失が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へプッシュすることもできます！以下から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` 形式（8bit量子化）へエクスポートできます。さらに、量子化手法の一覧全体へのエクスポートも可能で、人気のあるものの1つは `q4_k_m`.

こちらへアクセスして <https://github.com/ggerganov/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` を自動で作成することです。これは設定の一覧にすぎず、ファインチューニング時に使ったチャットテンプレートも含まれます！また、以下のように `Modelfile` 生成されたものも表示できます：

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

その後、 `Modelfile`

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

## 15. 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: 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/tutorial-how-to-finetune-llama-3-and-use-in-ollama.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.
