ChatGPTをカスタマイズするファインチューニングって何?AI活用におけるファインチューニング徹底解説!
みなさんこんにちは、ネッコスの井口です。
ChatGPTなどの生成AIの活用が進んできている現在、システムへの組み込みなども増えてきて企業によってのカスタマイズが必要になってきました。
せっかくなのでそんな時に行うファインチューニングというものについて今回はわかりやすく解説させてもらえたらと思います。わかりそうであまり馴染みのないファインチューニングってどんなことなの?何ができるの?といった疑問の解決につながればいいなと思います!
ファインチューニングのやり方とそれをする理由
AIのモデルというのは、それぞれ用途に対して学習をさせています、その学習して用意したものに必要な項目を追加で学習させるのがファインチューニング(微調整)というものになります。
例えば現在のChatGPT活用では追加でユーザーマニュアルを読み込ませたり、自社内のデータやユーザーとのやり取りの履歴を読み込ませたりして自社内の情報を利用して最適化させたAIでの回答を準備したりするものがあります。
それ以外に以前記事にしたプロンプトで前提条件を立てて、それに沿って回答させる方法の先としてファイル読み込みを利用してマニュアルのPDFを読み込ませた状態で回答をさせるという手段もあります。
ただ、ここで問題になってくるのが各種AIの扱えるトークン数と読み込みにかかる時間になります。
ChatGPTでファインチューニングが主な手法として使われているのは、AIへの指令、プロンプトの利用できるトークン数の最大値が大きくないためです。あらかじめ追加でプロンプトで読み込みさせられる情報量に限りがあります。
特に日本語になると、このトークンの扱いがより複雑になり利用できる文字数は半分以下になると言われます。
GPT3.5は約4000、GPT4で約8000、GPT4-32Kで約32000となります。
ちなみに今注目の文章生成AI、Cloude2は約100000ということでChatGPTの最大値より3倍近いトークンが扱えるので、プロンプト上でファイルを読み込ませる形での回答が可能になりそうです。
ただ、ChatGPTでは扱いたいデータが増えれば増えるほどトークン数不足にてそれが難しくなっています。そこで、プロンプトにデータを含めるのではなく、あらかじめモデル側に追加でデータを覚えさせておくファインチューニングという手法が扱われています。
すでにあるモデルに、追加学習を行うことでモデルがすでに学習してる部分も微妙に調整、最適化されかつ必要なデータを覚えてくれるので、業務に対して最適化されたモデルを用意することができます。
ただ、この手法は必要なデータが多いほど効果があり、逆にPDFで10ページ程度のマニュアル等であればそこまでする必要がない、ということになります。
ファインチューニングをするメリットやデメリットはあるの?
さて、一見便利そうなファインチューニングですが実際に行うとどんなメリットデメリットがあるか、そこについても軽く説明したいと思います。
メリット
圧倒的にメリットといえるのは先ほども説明した『扱えるデータの幅が広がる』ことでしょう。
専門的な情報を追加することで、自社サービスの専門家としてカスタマーサポートを行ったりできます。
また、前提のプロンプトが不要になるのでトークン数の消費が抑えられる=費用が少し抑えられるというのもメリットでしょうか。
また、今回はChatGPTを中心に話をしていますが音声認識AIなどでは聞き取りの精度を上げることができたり、画像生成AIで有名なStable diffusionでは積極的に利用されている特定の絵柄や状態を追加学習して出したい画像生成の精度を上げるLoRAやDreamBooth、HyperNetworkといった追加学習手法が積極的に利用されています。
デメリット
さて、ではファインチューニングを行うデメリットについてですがまず、ChatGPTのファインチューニングにはお金が追加でかかる、ということになります。
Gpt3.5のみで1000トークンあたり0.008ドル、Gpt4の利用料金ほど高くはないですがここに通常の利用料金がかかってきます。先ほど費用が少し抑えられると書きましたがファインチューニング費用を考えるとよほど長い目で見ないと抑えられないです。
次に、データセットの準備が大変ということが挙げられます。学習データはJsonファイルで用意するのですが、その形式にしてかつしっかり学習を行うために大量に用意する必要があります。
手作業で準備するとなるとなかなか大変なものです。
また、ファインチューニングには過学習という状態があります。学習させるデータセットが少ないと、この過学習が起こりやすく質問に対する返答の精度が大幅に下がります。同様に学習に時間を与えすぎても過学習となってしまいます。こうなると学習させた時間とモデルを破棄して、また途中もしくは最初からやり直すことになります。
どれぐらい学習させれば十分か、という明確な答えがないので確認も大事になります。この3点が大きなデメリットだと思います。
ファインチューニングの実行方法
実際にChatGPTのモデルをファインチューニングするにはどうしたらいいのでしょうか?
現在の手法としては2種類があります。
ファインチューニングする方法
OpenAI公式でモデルをファインチューニングする方法と、Azure Open AIを利用してファインチューニングする方法です。
OpenAIを利用しての方法は、OpenAIのAPIキーとPythonを利用しての学習となります。
Azure Open AIのほうは、Azureの管理画面上でデータをアップロードしてファインチューニングを行えます。ただし、こちらは利用に申請が必要になります。
データセットの準備
必要なデータはJsonファイルと伝えましたが、CSVなどで用意してAIを利用してjson形式に整えてもらってもいいと思います。
データセットを作るのは大変ですが、きちんと質のいいものを多数(OpenAIでは50~100と言われてるけど、用途によって変わります)用意できるに越したことはありません。
Q&Aボットの場合社内マニュアルの回答に対して、ある程度最適な返答文章を1つにつき数パターン用意する、それをFAQの数だけ…と考えればなかなか大変さがわかると思います。
いざファインチューニング
そしてデータセットができたらPythonならOpenAIのライブラリをインストールして、コマンドラインでアップロードをします。
AzureならGUIで同様にアップロードをします。
アップロードが終わったてチューニングのコマンドを入れたらいよいよファインチューニングが始ま…るかと思えばそんなことはありません。ChatGPTのファインチューニングは人気過ぎて?順番待ちの状態になっています。
なので、実際にファインチューニングを試そうとすると多少の期間が必要になります。
もし、自分たちでファインチューニングをしてみようと考えてる場合は多少時間に余裕を持って当たったほうがいいでしょう。
ファインチューニングの精度アップ
さて、実際にファインチューニングの精度を上げていくためにはファインチューニングしたモデルを再ファインチューニングしていく手法があります。
実際にこの手法で段階的にチューニングをして学習がうまくいっているか、十分かを確認していくことになるでしょう。
ファインチューニングにかかる費用は?
実際にファインチューニングをするとき、した後の利用にはどれぐらいの費用が掛かるのでしょうか?
かかる費用はOpenAI公式とAzureでの利用で違ってきます。
OpenAIの費用は下記の通り
Gpt-3.5-turbo、そしてGPT-4のファインチューニングについては今年中に段階的に解放されるということです。
davinciとbabbageはGPT-3ベースのモデルになります。
Azureの場合の費用は下記の通り
Azureではファインチューニングのトレーニングとチューニング済みモデルでのインプット、アウトプット以外にチューニング済みモデルを利用している時間によっても課金がされていきます。また、トレーニング自体もトークン数ではなく時間当たりで費用が掛かります。
これ自体はクラウドコンピューティングサービスなので仕方ないかもしれません。
また、新規モデルの実装と同様に新モデルのファインチューニングの実装もOpenAIのほうが先で、Azureのほうが遅れての実装になることが予想できます。
ただしセキュリティ部分ではAzureのほうが信頼性が高いので、利用方法によって変えるのがよさそうです。
ファインチューニングしたモデル利用を考えてるなら
さて、ここまで簡単にファインチューニングについて解説してきました。
ChatGPT活用の中でも一番重要になる、各事業者に合わせてカスタマイズして、そして自動化するモデルケースとしては必須の作業となるかと思います。
それを自社でデータセットを用意して、自社で最適化を行うかそれともAIモデルのカスタマイズに特化した所に委託してしまうか、と言うのは事業者それぞれ目的それぞれで検討して、対応していくことになると思います。
もし導入を考えている方がこの記事をお読みいただけましたら、今回は理屈ややり方についての大雑把な説明でしたがどこかにアウトソーシングするという選択肢もある、という事もお忘れなく!
もしも外部にお願いしたいとお考えでしたら、ぜひ一度ネッコスにご相談ください!
よろしければサポートをお願いします!いただいたサポートは、制作会社としての活動費やおやつ購入に使わせていただきます❤