OpenAI Python APIでのFine-tuning実践ガイド!

こんにちは!とびろぐ管理人のとびうおです。

今回はOpenAIのAPIを使った、Fine-tuning(ファインチューニング)の仕方について、解説をしていきたいと思います!

まずはFine-tuningの流れを説明

Fine-tuningの流れはこんな感じです。

  1. 特定のjsonlファイルを作成(これが学習させるもと)
  2. fileを作成(jsonlファイルをFine-tuningしやすいようなファイルにする)
  3. Fine-tuningをさせる
  4. 検証をする

といいった流れです。

今回は、2と3,4について別々のファイルを用意して、簡単に紹介していきます。

特定のjsonlファイルを用意する

まずは、質問と回答を用意したjsonlファイルを用意します。

形式としては以下のような形です。

{"messages": [{"role": "system", "content": "ここにどういう状況からの説明か書く"}, {"role": "user", "content": "ユーザーからの質問を書く"}, {"role": "assistant", "content": "回答を書く"}]}

これが1行の形式で、これを以下のように複数行用意します

OpenAI Python APIでのFine-tuning実践ガイド!
とびうおくん
とびうおくん

この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モデルを作成することが可能となっています!

ぜひ、自分なりに作ってみてください!

とびうおくん
とびうおくん

意外と簡単だったぞ!

Just a moment...
とびうお
ブログ管理人です!
swimaneというアプリをリリースしました!

コメント

タイトルとURLをコピーしました