見出し画像

OpenAIのファインチューニングを試す

NO AI(人間が書きました✍️)

AI系ポッドキャスト(耳で学ぶAI)を運営している矢野(@robothink_jp)です。この記事ではOpenAIのファインチューニングをサクッと試す方法を解説します。

ファインチューニング

ファインチューニングは学習済みモデルを再学習させて新しいタスクに対応させる技術です。
例えば、ChatGPTが本来持っていない情報を再学習させて本来回答できない質問に回答させることができます。
OpenAIではダッシュボードから試せます。

対象モデル

今まではGPT-3.5 Turboが対象でしたが新しくGPT-4o miniでもファインチューニングできるようになりました。
今までGPT-4o miniのファインチューニングが出来るのはTier4以上のユーザーでしたが、8月9日にその制限もなくなりました。

試す

では本題に戻してファインチューニングを試していきます。この記事ではGPT-3.5 Turboでファインチューニングを試してみます。
まず、こちらにアクセスします👇

https://platform.openai.com/assistants/

Dashboard(画面右上) > Fine-tuning(左サイドバー) > +Create(画面右上)をクリックします。

Base ModelはGPT-3.5 Turbo xxxxのいずれかを選択。

トレーニングデータ

次にトレーニングデータをアップロードします。再学習に使われるファイルですがフォーマットが決まっています。

{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already."}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'Romeo and Juliet'?"}, {"role": "assistant", "content": "Oh, just some guy named William Shakespeare. Ever heard of him?"}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "How far is the Moon from Earth?"}, {"role": "assistant", "content": "Around 384,400 kilometers. Give or take a few, like that really matters."}]}

システム、ユーザー、アシスタントで構成した内容を学習させます。ちなみに最低でも10個のサンプルを提供する必要があります。(10個未満だと弾かれます)

50から100のトレーニング例でファインチューニングを行うことで明らかな改善が見られますが、適切な数は正確なユースケースによって大きく異なります。

https://platform.openai.com/docs/guides/fine-tuning/preparing-your-dataset

今回、空飛ぶ車を仮定してファインチューニングさせてみました。

{"messages": [{"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "スカイカーの法定最高速度は何キロですか?"}, {"role": "assistant", "content": "スカイカーの法定最高速度は時速400キロです。"}]}
{"messages": [{"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "スカイカーの法定最低速度は何キロですか?"}, {"role": "assistant", "content": "スカイカーの法定最低速度は時速80キロです。"}]}
{"messages": [{"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "スカイカーとは何ですか?"}, {"role": "assistant", "content": "スカイカーはTOYOTA SKYが開発した有人の小型飛行自動車です。小型の推進エンジンを搭載しており特許もTOYOTA SKYが保有します。2030年に販売が開始し、世界の空の交通網を整備する礎となりました。"}]}
{"messages": [{"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "スカイカーは何歳から乗れますか?"}, {"role": "assistant", "content": "国によって基準は変わりますが20歳前後から免許取得が可能です。"}]}
{"messages": [{"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "スカイカーの価格はいくらですか?"}, {"role": "assistant", "content": "日本円で300万円から購入が可能です。最高クラスでは2000万円ほどです。"}]}
{"messages": [{"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "スカイカーは何人乗りですか?"}, {"role": "assistant", "content": "現行のモデルは2人乗りです。陸上を走る一般車両とは異なり厳密な体重制限がある点にご注意ください。"}]}
{"messages": [{"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "スカイカーの保険はありますか?"}, {"role": "assistant", "content": "はい。航空車両保険という公的な保険に加入することが義務付けられています。保証金額をカバーする目的で民間保険に加入することも推奨されます。"}]}
{"messages": [{"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "スカイカーのメリットは何ですか?"}, {"role": "assistant", "content": "移動時間の短縮にあります。近年、慢性的な渋滞が問題となっていましたがスカイカーの登場で渋滞問題はほぼ解決されました。道路の移動に比べて移動時間を70%以上削減できます。"}]}
{"messages": [{"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "スカイカーの危険性は?"}, {"role": "assistant", "content": "道路を走る自動車に比べて\"墜落\"という問題があるので危険性は増します。そのため免許取得や保険はさらに強化されたものになります。ただし、スカイカーには高度な運転アシスト技術が搭載されているので道路を走る自動車と比較して事故率は変わらないというデータもあります。ただし、事故が起きた時の被害は大きな傾向にあることに注意が必要です。"}]}
{"messages": [{"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "スカイカーに対する反対意見はありますか?"}, {"role": "assistant", "content": "安全面や騒音問題などの反対意見はあります。しかし、渋滞問題の解消などメリットも多いので反対意見は少数です。"}]}

拡張子はjsonlとなります。参考までにファイルを置いておきます。👇

あとはアップロードして下部のCreateボタンを押すだけです。今回はシンプルなものにしました。
ちなみにファインチューニングするとトークンが消費されます。利用料金が発生します。上記のjsonlでファインチューニングした場合の消費は9,970トークンでした。(12円くらい)

ファインチューニングしたモデルを試す

しばらく時間が経つとファインチューニングが完了します。
画面下にあるPlaygroundから動かせます。

左が通常のモデル、右がファインチューニングしたモデル

スカイカーのような少し想像できるような質問の場合だとAIは知ったかぶりをするので"分からない場合は分からないと回答してください"と付け加えました。
スカイカーという架空の設定ですが最高法定速度に関して回答しています。(右側)

目と耳で学べるAI情報を発信しています

通勤時間に効率良く目と耳でAI情報をインプットできます。

noteでも月に30本ほどAI関連の記事を投稿しています。フォローよろしくお願いします😼

この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?