はじめに
この記事は「流行りの文章生成AIを自社/自分向けにチューニングしたいけど、何から調べればいいのか分からない!」という方向けの内容です。
ChatGPTをはじめとした大規模言語モデルが続々と発表されており、非常に優れたアウトプットが得られるようになりました。こういった中、自社/自分の環境特有の資料や内容にどうチューニングするかがより大事になってきていると思います。この記事では現時点 (2023/05/27) で主要なモデルチューニングの方法についてまとめたいと思います。
チューニング手法
現在代表的なチューニング手法として、主に2つのライブラリを使った方法が挙げられます。
LangChain
LangChainはLLMを拡張するライブラリで、LLMを用いたアプリケーション開発の支援を目的として作られています。この中のloaders機能を用いることで、LLMを拡張することができます。
具体的にどのようなことを行っているかというフローをまとめたものが上の図となっています。
まず読ませたい情報をまとめたcsvやPDFなどのファイルをLangChainに与えることで、その言葉のembeddingのDBを構築します。その後、LLMにユーザが質問をしたとき、LLMはDBを参照しながら回答を作成します。
この手法のメリットとして、
- 手元でDBを作るため、LLMもローカルに落としたもので利用する場合は与えた追加情報が外部に漏れることがない
- 生成AIとKnowledge baseの併用のような形になるので、追加した内部情報に関する情報が欲しい時など的確なアウトプットが得やすい
のような点が挙げられます。
実装例などは以下の記事が詳しく書かれていました。
PEFT (Parameter-Efficient Fine-Tuning)
PEFTはFine-Tuningのためのライブラリです。説明はHugging Faceのページに書かれており、翻訳すると以下の通りとなっています。
PEFT (Parameter-Efficient Fine-Tuning (PEFT)) は、モデルのすべてのパラメーターを微調整することなく、事前トレーニングされた言語モデル (PLM) をさまざまなダウンストリーム アプリケーションに効率的に適応させるためのライブラリです。大規模な PLM の微調整には法外なコストがかかるため、PEFT メソッドは少数の (追加の) モデル パラメーターのみを微調整し、計算コストとストレージ コストを大幅に削減します。
PEFTで使える各Fine-Tuning手法の詳しい説明はBrainPadさんのページに詳しく書かれているのでここでは省略しますが、LoRAと呼ばれる手法が使われることが多いようです。
実装例は以下の記事で詳しく書かれていました。
おわりに
現時点で一般的な2つの手法をまとめました。ただ、調べている間にもMicrosoftからGuidanceというLangChainの対抗馬となるものが出たりなど、分野の進歩が非常に早いため、あっという間に古い情報になってしまうんだろうなと思っています。ぜひLLMのチューニングの取っ掛かりとして読んでいただければ幸いです。