2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Open AI APIを利用したFine-tuning

Last updated at Posted at 2023-06-11

概要

Open AI APIのモデルを自分好みにチューニング(調整)するFine-tuningを行う。
Microsoftは微調整と呼んでいるが意味としては同じである。
ChatGPTでも入力に学習させたいデータを入れることで性格や情報を記憶させることは可能だが、この方法だと情報が再学習されたり使用されるトークン数が膨大になったりするため、簡易的なものに過ぎず業務利用も現実的では無い。

環境構築

以下の環境でFine-tuningを行う。
Windows11
Python3.9

前提として、pythonのインタープリターとpipをWindowsのpathに通しておく必要がある。
環境によって詳細は異なるが、python.exeとpip.exeが存在するディレクトリをPathという名の環境変数に設定しておく。
image.png

openaiのPythonライブラリをインストールしておく。

cmd
pip install openai

Fine-turning

まずはモデルに学習したい情報を整理する。
OpenAI APIでは入力をprompt、出力をcompletionと呼び、これらの組み合わせを学習していくことになるので、対になるように整理しておくと楽になる。
学習させる情報はjson形式でもCSVでも入力できる。ただし、体裁があっていないとAPIに怒られてしまう。以下に今回学習に使用するデータを示す。文字コードはUTF-8指定。本当は数百の情報を入れないと実用性が無い。

tune.csv
prompt,completion
こんにちは,はいはい
テスト,おいしいごはんです。
トヨタ,世界一の完成車メーカー
アンパンマン総合ランキング1位,てんどんまん
tune.json
[
    {
        "prompt": "こんにちは",
        "completion": "はいはい"
    },
    {
        "prompt": "テスト",
        "completion": "おいしいごはんです。"
    },
    {
        "prompt": "トヨタ",
        "completion": "世界一の完成車メーカー"
    },
    {
        "prompt": "アンパンマン総合ランキング1位",
        "completion": "てんどんまん"
    }
]

(トヨタさんすみません。やなせたかしさんすみません。)

ファイルさえ作ることができれば、あとはコマンドを叩くだけで完了する。

cmd
openai tools fine_tunes.prepare_data -f tune.json

これにより学習に使用可能なjsonl形式に変換される。
tune_prepared.jsonlというファイルが作成されるので、次のコマンドで実際に学習される。

cmd
openai api fine_tunes.create -t tune_prepared.jsonl -m ada  

モデルはada, babbage, curie, davinciから選ぶことができる。
このコマンドは途中で中断されてしまう可能性が高く、APIからもコマンドを再開できる以下のようなコマンドを案内される。

cmd
  openai api fine_tunes.follow -i <一意のID>

これを何度か叩くと学習が完了する。(10回くらい叩いてもダメだったので、30分くらい待ってから実行したらいけました。)
最後に次のようなコマンドが案内される。

cmd
openai api completions.create -m davinci:<今回作成したモデル名> -p <YOUR_PROMPT>

YOUR_PROMPTの部分に好きな語句を入れると返答が返ってくる。

cmd
openai api completions.create -m <今回作成したモデル名> -p アンパンマン総合ランキング1位は何ですか?
どんどん世界に広が
はいはいどんどんまん
openai api completions.create -m <今回作成したモデル名> -p トヨタとはどんな企業?
トヨタとはどんな企業?世界一の完成車メーカー
openai api completions.create -m <今回作成したモデル名> -p こんにちは
こんにちは)はいはいはいはいはいはいは

正直まともな日本がどうか怪しいレベルである。。。
かなり精度は低いが、それとなく学習させたデータを返そうとしていることは伺える。

まとめ

今回はOpenAI APIを利用してdavinciモデルにFine-tuningを実施した。
davinciモデルに4組のプロンプトしか学習させていないためか、ChatGPTのGTI3.5やGPT4モデルのようなレベルの会話を実現することはできなかった。
しかし、学習させたデータが出力に影響することを確認することができた。
これを使用して独自のデータや個人的な情報をFine-tuningさせることで、オリジナルのAIを容易に作成することが可能となる。
さらにAPIを使用しているので入力が再学習される恐れがなく、業務での使用も期待できる。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?