GPT-3.5-turboをfine-tuningする際の気になるポイントをまとめた。

OpenAIが提供するChatGPTやGPTのAPIで利用されているGPT-3.5 turboのモデルにファインチューニングの機能が追加されました。実際に利用する際に気になるポイントとなるデータの取り扱いやユースケースについてまとめました。
2023.08.23

GPT-3.5-turboのfine-tuningができるようになったとOpenAIから公式リリースがありました。 公式リリースの内容を読みながら、利用にあたり気になる点をまとめてみました。

GPT3.5 APIのFine-tuningとは?

今回のリリース以前でもGPTのモデルのfine-tuningは可能でしたが、gpt-3.5-turboが対応されました。具体的なアップデートの内容は以下に速報記事があがっているので、こちらをご参照ください。

nokomoro3さん、いつも速報記事ありがとうございます!!

今回のリリース以前のモデルのFine-tuningについては別記事にまとめているので、ご興味があればご参照ください。

 

個人的に気になるポイントのまとめ

Fine-tuningに利用したデータは学習に利用されるの?

Fine-tuningに利用したデータは、他のAPIを介した利用と同様に扱われるため、学習には利用されません。

精度はいいの?

公式ドキュメントによるとGPT-3.5 TurboのFine-tuningされたモデルでは、特定のタスクでGPT-4レベルの基本的な能力に匹敵するか、それを上回ることさえできることが示されているとのことでした。

GPT-4のAPIを利用する際はコスト面がネックになることも多いので、コストを考慮すると頻繁に利用するタスクの場合、GPT3.5をFine-tuningした方がコストメリットがでるかもしれないですね。

GPT3.5モデルのFine-tuningユースケースは?

こちらも公式リリースを確認すると、プライベートベータで実施された以下のユースケースが紹介されています。

  • 常に特定の言語(ドイツ語)で返答させる
  • モデルの返答のフォーマット能力の向上。常にJSON形式で出力させる際の確実性があがる。
  • 特定のトーンで返答を行わせる。例えば、企業のブランドイメージにあった出力ができる。(原文抜粋:A business with a recognizable brand voice can use fine-tuning for the model to be more consistent with their tone)

上記のようなユースケースが紹介されていました。JSON形式や特定言語の変更はFine-tuningを行わなくても、FunctionCallingやシステムプロンプトで対応できそうなところもありますが、「企業のブランドイメージにあった出力」はこれまでのGPTでは難しい部分もありそうですね。

Fine-tuningはいつ使うべき?

Fine-tuningのドキュメントを確認すると基本的にはプロンプトエンジニアリングや回答の精度が得られない複雑なタスクの場合は、いくつかの処理に分割(Prompt chaining)して対応することをまずは試してみることが推奨されています。

Fine-tuningを行う際にはチューニングや実施に一定の手間と時間がかかることから、まずは手軽に試せる上記を行うことが良いとのことですね。まずは、プロンプトの改善の検証を行ったうえで、Fine-tuningを試してみるのが良いようです。

Few-shot learningとの違いは?

プロンプトエンジニアリングの一つの方法としてfew-shot learningがあります。

これは、いくつかの入力と出力の例を与えることでアウトプットの精度を向上させるテクニックです。入力と出力の例を与えるという点ではFine-tuningと似ている部分もありますが、OpenAIのドキュメントによると以下のように記載がありました。

Fine-tuning improves on few-shot learning by training on many more examples than can fit in the prompt, letting you achieve better results on a wide number of tasks. Once a model has been fine-tuned, you won't need to provide as many examples in the prompt. This saves costs and enables lower-latency requests.

GPT-4による翻訳: ファインチューニングは、プロンプトに収めることができる例よりも多くの例で訓練することで、少数の学習(few-shot learning)よりも向上させます。これにより、多くのタスクでより良い結果を達成することができます。モデルがファインチューニングされると、プロンプトで多くの例を提供する必要はありません。これにより、コストを節約し、低レイテンシのリクエストを可能にします。

大きな違いとしては、より多くのデータを利用できることと、頻繁に利用する場合はコストメリットがあることのようですね。納得。

まとめ

簡単な内容になりますが、実際にファインチューニングを行う際の気になるポイントや論点になりそうな部分をまとめました。 誰かの参考になれば嬉しいです!

次回は実際にFine-tuningを使ってモデルの構築を行いたいと思います。