特定ドメイン/タスクのデータよりLLMをLora tuningするによって知識獲得に繋がっているか？

# 初めに
現在のGPT-4、LLama2/3、E5、BERT系のモデルは基本的に公開されたデータ（例: Wikipedia、CC-100など）を基に言語知識を学習しています。特定の領域のタスクに対応するためには、その領域のデータを用いてMLMやCLMを使った追加学習を行い、その後のモデルに特定領域の用語や文脈情報を学習させることで、下流タスクの精度向上が期待できると考えています。

BERT系モデルの継続学習や特定ドメインのデータを使用したMLMタスクの学習が、下流タスクの精度向上に寄与することを示す論文がいくつかあります（例: https://arxiv.org/pdf/1901.08746）。

ところって現在では70億(7B)13B、70Bなどパラメーター日常に利用していますが、事前に学習した知識で十分ではないのか?という疑問があるかもしれませんそのため、今回はLoRA手法を用いて特定ドメインデータをLLama3に対してチューニングしてみました。得られたLoRAモデルに対しては定性評価と定量評価（例: BLUE-4とROUGE）を行いました。


# 今回検証したモデルとデータについて
## モデルについて
:disappointed_relieved:
現在GCP環境ではA100GPUの入手はかなり困難なので、今回はLLama3 の4bit量子化したモデル
https://huggingface.co/unsloth/llama-3-8b-bnb-4bit　
とRinna社公開したhttps://huggingface.co/rinna/llama-3-youko-8b
二つモデルに対してLoRAでtuningしました

選定理由として、一番目のモデルは主に英語データで訓練されており、日本語能力の向上を目的としてチューニングすることで、その効果を評価し、日本語と英語のデータの比較も行うことができます。
また、Rinna社が公開したモデルの選定理由としては、日本語に特化した継続学習を行ったモデルがどのような効果を示すのかに興味があります。


## データについて
今回使用したドメインデータ公開できませんなので、データの詳細についてを割愛していただきます。
データ形式はalpaca形式に整形しております、数は3000件ぐらいでした。

# 定性評価の結果

個人なり結論だけ伝えると、特定領域のデータ学習しないと二つモデルどちらもそれっぽいの答えを生成できません(当たり前なことだ！！:relieved:)

データの前処理が非常に重要であり、不適切なデータをそのままモデルに投入すると、他の答えのフォーマットにも影響を及ぼします。

また、LoRAでチューニングした4ビットのモデルでは、「破滅的忘却」問題がえぐい
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/693229/03dcaf77-e240-4368-ba01-95e5e5bc02cf.png)

情報検索やQAなど直接RAGを使用した方がよいかな、ただ文字生成の方が何かしら対策必要

# 定量評価

今回モデル質の評価には有効な下流タスク評価指標作成していないため、今回は
 1. 作成した特定ドメインのデータ
 1. 英語alpaceデータ　(英語llama3と日本語tuning効果比較と破滅的忘却あるかを確認ため)
 1. [日本語alpaceデータ](https://github.com/shi3z/alpaca_ja)

こちら3つのデータのBLEU、ROUGEスコアよりbase model と学習したモデルの比較作業を行いました。
※:この二つ指標についてこちらの[記事](https://qiita.com/amtsyh/items/a926b79b90dfabe895e9)から参考できると思います。

理由について今回は特定ドメインのデータより知識獲得可能かを検証する観点で、個人の仮説は英語のllama3に対して日本語データでtuningして見たらBLEUやROUGEスコアが向上できるを期待できると思っています。もしtuningしたモデルの数値base modelより高いであれば、tuningしたモデルは新たな知識を学習できていると考えています。


## 主に英語で訓練されたllama3モデルの結果

| 今回作成したデータ | GLUE-4 | Rouge-1 | Rouge-2 |
| --- | --- | --- | --- |
|base model  | 0.97 | 3.34 |0.15  |
|Lora tuningしたモデル  |**81.76**  |**86.59**  | **82.59** |


こちらの結果より英語で訓練されたLlama3ではイントラデータに対してのスコアとても低い結果になりました、Loraのtuningには効果があることを証明できます。

---

| 英語alpaceデータ | GLUE-4 | Rouge-1 | Rouge-2 |
| --- | --- | --- | --- |
|base model  | **38.1** | **42.864** |**21.75**  |
|Lora tuningしたモデル  |34.8  |39.90  | 20.31 |

自分の仮説の通り日本語でのtuningによって英語データセットでの評価結果多少落ちています。

---
| 日本語alpaceデータ | GLUE-4 | Rouge-1 | Rouge-2 |
| --- | --- | --- | --- |
|base model  | 0.59 | 6.5 |2.8  |
|Lora tuningしたモデル  |**6.45**  |**32.04**  | **13.51** |


## Rinna社公開したllama3-8bモデルでの検証結果

|今回作成したデータ  | GLUE-4 | Rouge-1 | Rouge-2 |
| --- | --- | --- | --- |
|base model  | 0.90 | 14.99 |5.2  |
|Lora tuningしたモデル  |**5.59**  |**27.07**  | **15.32** |

前回の英語ベースのLoRAチューニングの結果よりも低かった原因は恐らく、共通のデータ（日本語の一般的な知識データ）が混ざっていたことだと考えます。ただし、作成したデータ以外の日本語の問題にも適切に対応しています。

特定の領域やタスクの精度を重視する場合は、そのタスクに特化した評価指標を作成し、さらに検討する必要があると思います。

---

英語データでの検証価値あんまりないですが、念の為検証しました。
Glue-4どちらも20未満なので、数値だけでLora tuningしたモデルが良いを判断するは難しい。
|英語alpaceデータ  | GLUE-4 | Rouge-1 | Rouge-2 |
| --- | --- | --- | --- |
|base model  | 5.76 | 21.12 |6.08  |
|Lora tuningしたモデル  |11.43  |18.58  | 7.00 |


----

|日本語alpaceデータ  | GLUE-4 | Rouge-1 | Rouge-2 |
| --- | --- | --- | --- |
|base model  | 1.49 | 20 |7.03  |
|Lora tuningしたモデル  |9.07  |41.32  | 18.3 |

こちらについてちょっと予想以外でした、自分の仮説だとbaseモデル (Rinna社モデル)すくなくともLora tuningしたモデルに負けないの精度が得られるではないのかと思った。
数値だけで判断すると逆になりました、実際にテストため生成したデータの長さ設定しないと無限に\nなど生成します。こちらに関してRinna社公開したモデルのtuning方法さらに調査すべきだと考えております。

なお後で気づきですが、今回のLora tuningデータにテストデータ一部混ざっています、そちらの原因よりRouge-1,Rouge-2の指標が高いの原因になると思います。


# まとめ
特定領域の知識獲得には、事前継続学習またはLoRAチューニングが有効であると考えています。これにより、その領域特有の専門用語や文脈をより理解しやすくなり、下流タスクの精度向上が期待できると思います。

また、公開されたモデルをチューニングすることで、ドメイン固有の課題に特化したモデルを作成し、その領域の特有のニーズや制約に合わせた最適化が可能です。これにより、一般的なモデルでは対処しづらい特殊な要件にも対応できるメリットがあります

ただし、もし今後、ドメインデータを使用した訓練されたモデルをサービスとして提供する場合、サーバーの維持費用や訓練コストがGPTのAPIよりも高くなる可能性があります。そのため、コスト対効果を考慮する必要があります。実際に定性評価を行った結果、RAG（Retrieval-Augmented Generation）の方が展開しやすい可能性が高いと考えています。

※:この検証はまだ完全ではないことを認識しており、評価指標も不十分だと考えています。もし何か観点が間違っていたり、ご意見があれば、ぜひ指摘してください！！！！！！！！

# 参考文献

https://arxiv.org/pdf/2302.13971
https://arxiv.org/abs/2106.09685
https://arxiv.org/abs/1901.08746
https://arxiv.org/abs/2307.15290
https://qiita.com/amtsyh/items/a926b79b90dfabe895e9