6
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

SQLに特化したLLMモデルをFine-tuningで作ってみました(Mistral-7Bに基づいて)

Last updated at Posted at 2023-10-09

1.Mistral-7Bとは

「Mistral-7B」は、一週間前にヨーロッパAI企業「Mistral AI」が公開された、最近すごい人気なLLMモデルです。
特徴は7BですがLlama2の13Bよりも性能が良いです。(Bはbillionのことで、7Bなら70億個分のパラメータが持っていることです。)
HuggingFaceでは、このモデルを基にFine-tuningされたモデルが最近結構多いです。
私も、もともとは、「英語から日本語への要約モデル」をFine-tuningしたかったですが、やはりデータの準備が時間かかりますし、難しかったので、少しシンプルなモデルにしました。
そこで、日常的にも使えそうなSQL特化モデルが良いかなと思って、SQLクエリデータを使ってトレーニングしを試してみました。
手法はQLoRAで、1日ほどトレーニングしました。

2.データの準備とトレーニング

SQLの処理なので、一番シンプルなQA形式データを使用しました。Huggingfaceで78K件のデータセットを見つけ、プラスChatGPTを利用して50k件学習データを作成し、合計120K件データでトレーニングしました。
そこまで大量なデータではないので、あまり時間かけずに学習できます。
なので、全部3回学習を実施しました。
パラメータなどの調整でこちらは一番よかった回のLossです。(0.69)
個人的にはこのSQL文生成のケースでは0.5-0.8くらいのlossは一番よいかと感じていました。(0.000Xくらいまでにすると汎化性能なくなりますので、SQLには向いてないかと思います。)
ちなみに、過学習を防ぐと時間を節約するためにはEpochも1回だけにしました。

屏幕截图 2023-10-09 171808.png

3.性能確認

ネットで見つけたSQL練習問題を試してみました。
3.png
1枚目は私のモデル、2枚目はchatGPT4の回答です。どちらも正しいですが、GPT4は説明もあって、DIFFERENCEという集計項目も作ってくれました。(QUESTIONにはないですが)

他の練習問題も試したところ、同じような感じで、両方ともほぼ間違っていることはなかったです。
今回Fine-tuningで特化したモデルがGPT4より優れたことは多分処理時間だけですね。(SQL特化モデルは3-5秒、GPT4は5-10秒くらい)

2.png
4.png

こちらのモデルについてはhuggingfaceにも公開していますので、興味ある方は試してみてください。
https://huggingface.co/kanxxyc/Mistral-7B-SQLTuned

Mistral-7Bについて
https://mistral.ai/product/

6
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?