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回だけにしました。
3.性能確認
ネットで見つけたSQL練習問題を試してみました。
1枚目は私のモデル、2枚目はchatGPT4の回答です。どちらも正しいですが、GPT4は説明もあって、DIFFERENCEという集計項目も作ってくれました。(QUESTIONにはないですが)
他の練習問題も試したところ、同じような感じで、両方ともほぼ間違っていることはなかったです。
今回Fine-tuningで特化したモデルがGPT4より優れたことは多分処理時間だけですね。(SQL特化モデルは3-5秒、GPT4は5-10秒くらい)
こちらのモデルについてはhuggingfaceにも公開していますので、興味ある方は試してみてください。
https://huggingface.co/kanxxyc/Mistral-7B-SQLTuned
Mistral-7Bについて
https://mistral.ai/product/