こんにちは!とびろぐ管理人のとびうおです。
今回はOpenAIのAPIを使った、Fine-tuning(ファインチューニング)の仕方について、解説をしていきたいと思います!
まずはFine-tuningの流れを説明
Fine-tuningの流れはこんな感じです。
- 特定のjsonlファイルを作成(これが学習させるもと)
- fileを作成(jsonlファイルをFine-tuningしやすいようなファイルにする)
- Fine-tuningをさせる
- 検証をする
といいった流れです。
今回は、2と3,4について別々のファイルを用意して、簡単に紹介していきます。
特定のjsonlファイルを用意する
まずは、質問と回答を用意したjsonlファイルを用意します。
形式としては以下のような形です。
{"messages": [{"role": "system", "content": "ここにどういう状況からの説明か書く"}, {"role": "user", "content": "ユーザーからの質問を書く"}, {"role": "assistant", "content": "回答を書く"}]}
これが1行の形式で、これを以下のように複数行用意します。
このjsonlファイルの量や質が
Fine-tuningにとってとても大事になります
続いてjsonlをfileにする
続いて、作ったjsonlファイルをFine-tuningできるようなfileに変換していきます。
例えばmydata.jsonlというファイルで作成した場合は、以下のPythonコードで実行することが可能です。
import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
print(openai.File.create(
file=open("mydata.jsonl", "rb"),
purpose='fine-tune'
))
なお、この書き方ですと、環境変数に自分のopen aiのkeyを入れないと行けないので、公開しないのであれば、
openai.api_key = "ここに自分のopen ai のkeyを書く"
と言った価値にして問題ないです。
なお、ここPythonファイルを実行した際にprintで表示されるものの中に、
"id": "file-*******",
みたいなものが表示されると思います。
このfile-****みたいなのがfileのidになっていて、この後も使うのでしっかりメモしておきましょう!
fileの作成には時間がかかるので、
気長に待ちましょう!
作成したfileを使ってFine-tuningをする
続いて、作成したfileを使用して、Fine-tuningをしていきたいと思います。
import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
print(openai.FineTuningJob.create(training_file="file-abc123", model="gpt-3.5-turbo"))
ここの「file-abc123」のところを先ほど、自分が先ほど作成したfileのidを記入してください。
ここで、
openai.FineTuningJob.create
という関数で、Fine-tuningをしています。
ここでprint関数で、出てきた「id」がjobのidとなっていますので、一応メモをしておきましょう。
Fine-tuningは
完了したらメールが届くのでそれを見ればOKです
検証をする
続いて、作ったFine-tuningモデルを使用して、確認をしていきましょう。
import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
completion = openai.ChatCompletion.create(
model="ft:先ほど作ったFine-tuningのモデル",
messages=[
{"role": "system", "content": "質問の前提"},
{"role": "user", "content": "質問"}
]
)
print(completion.choices[0].message)
この中の、
- ft:先ほど作ったFine-tuningのモデル
- 質問の前提
- 質問
のところを書き換えればOKです。
completionには色々な情報があるので、
completion.choices[0].message
とするとメッセージが表示されるので、それをprintしましょう。
そうすると、
結果を見ることができます!
まとめ
このように、簡単にopen aiのapiを使ってFine-tuningモデルを作成することが可能となっています!
ぜひ、自分なりに作ってみてください!
意外と簡単だったぞ!
コメント