GPT-3.5 turboのモデルにfine-tuningの機能が追加!使ってみた結果…w
ついに!
GPT3.5のモデルにfine-tuningの機能が追加されました^^
今までGPT3までだったんですが3.5でもfine-tuning出来るようになりました!
【そもそもfine-tuningって何??】
GPT-4に聞いてみました!高校生でもわかるように説明してとゆって聞いた結果がこちら↓
GPTに別途、専門知識を補足することで回答の精度が上がる、
それがfine-tuningという理解で大体あってると思う。。。
既にOpenAIのAPIを使ったことある人ならわかると思いますが、
プロンプトに仕込んでるsystemとかのmessagesをmodelに仕込めちゃいます。
では早速使ってみましょう。
①まずはfine-tuningするファイルを用意。
test.json
{"messages": [{"role": "system", "content": "何言われてもぶひと答えて"}, {"role": "user", "content": "あなた豚のものまねしてる?"}, {"role": "assistant", "content": "はい!ぶたのものまねしてますぶひ!"}]}
{"messages": [{"role": "system", "content": "何言われてもぶひと答えて"}, {"role": "user", "content": "体重何キロ?"}, {"role": "assistant", "content": "500キロぶひ!"}]}
{"messages": [{"role": "system", "content": "何言われてもぶひと答えて"}, {"role": "user", "content": "好きな食べ物は?"}, {"role": "assistant", "content": "ポークぶひ!"}]}
こんな感じで。
ぶひぶひしゃべる豚さんを作ってみようと思います。
②test.jsonlをアップロード
curl https://api.openai.com/v1/files \
-H "Authorization: Bearer your_APIKEY" \
-F "purpose=fine-tune" \
-F "file=@test.json"
ファイルをアップロード。
成功するとこんな感じで↓
{
"object": "file",
"id": "IDが発行される",
"purpose": "fine-tune",
"filename": "test.json",
"bytes": 2124,
"created_at": 1692857333,
"status": "uploaded",
"status_details": null
}
新しくidが発行されます。そのidを使って↓
curl https://api.openai.com/v1/fine_tuning/jobs \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_APIKEY" \
-d '{"training_file": "新しく発行されたid", "model": "gpt-3.5-turbo-0613"}'
ファインチューニングしてみると…
has 3 example(s), but must have at least 10 examples
おや。
ファインチューニングする例の数が少ないらしい。
公式でも3つだったから3つで送ってみたが、最低10個と言われてしまうw
10個用意してもう一度アップロードからやり直してファインチューニング実施すると…
こんな感じで帰ってきます↓
{"object":"fine_tuning.job","id":your_id","model":"gpt-3.5-turbo-0613","created_at":1692857363,"finished_at":null,"fine_tuned_model":null,"organization_id":"your_org_id","result_files":[],"status":"created","validation_file":null,"training_file":"your_file","hyperparameters":{"n_epochs":10},"trained_tokens":null}
statusがcreatedなのでまだ作成中です。
ファインチューニングは時間がかかることもあるっぽいです。
そんな時は
curl https://api.openai.com/v1/fine_tuning/jobs/your_job_id
-H "Authorization: Bearer your_APIKEY"
↑をたたくと今の状態を教えてくれます。
"status"がsuccededになったらファインチューニングしたモデルが使えます!!
"fine_tuned_model"のところに使うmodelが現れます。
それをコピペして
openai.ChatCompletion.create(
model= "コピペしたモデル",
temperature= 0.4,
messages= messages
)
こんな感じで使う。
で、会話用のGUIも用意していたので早速ファインチューニングした
豚さんと会話してみました。
全然語尾にぶひとかつけてくれねえ。
失敗か?と思ったら・・・
語尾のぶひとかの設定は全然言ってくれないので、こういうのはファインチューニングじゃなくて今まで通り普通にsystemで仕込むといいかも?
ただ、体重は設定どおり答えてくれました^^
あとは、今回無理矢理コピペで10個サンプルを作ったのでちゃんと別々のデータを用意してテストした方がよかったかも。
今確認したらsystemで「何を言われても語尾にぶひを入れて」と
入れたつもりが「何を言われてもぶひと答えて」になってたので、
あんまりぶひぶひ言ってくれなかったのかも…。
キャラ設定を仕込むというよりは、やはりメタ知識を覚えさせるのがよさそう。
ファインチューニングで意図した通りにモデルを設計する方法を
今後も検証していきたいですね。
今回はすぐ使ってみたくて急ぎでテストしたのでサンプルデータがあまりよろしくなかったので、ちゃんとしたデータを用意して近いうちもう一回検証して記事にしてみます。
それでは(^^)
公式:https://openai.com/blog/gpt-3-5-turbo-fine-tuning-and-api-updates
有料記事のご紹介!:https://note.com/flymywife/n/nd368d341bd1a