1
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.

OpenAIのGPTを使ってファインチューニングをやってみた。

Posted at

OpenAIのGPT3.5-turboを使ってファインチューニングをやってみました。方法は簡単なのですが、いくつか上手くいかない場所がありました。
今回、参考にしたのはこのサイト。

ファインチューニングとは?

ファインチューニングとは、すでに訓練されたモデル(事前訓練モデル)を特定のタスクやデータセットに適応させるための追加の訓練のことを指します。大規模なデータセットで事前に訓練されたモデルを、小さなデータセットで微調整することで、高い性能を迅速に達成することができます。

要はすでにあるGPTってやつに新しいデータを加えて、より専門的なbotを作ってしまおうってことです。

ハマったところ

データセット

リンク先のページを基本的にコピペしていけばいいのですが、データセットを見つけることができなかったので、GitHubからダウンロードしました。そして、今回のファインチューニングで使う0〜300までを抽出しました。

ファインチューニングの待機時間

以下のコードを実行すると、WebページではStatus: createdと書いてあるのですが、私の画面ではStatus: validating_filesと表示されていました。
それでも、進めていくと途中でエラーが出ました。何度もコードを見直したけど間違いが見つけられない。そこで、一旦、諦めてG-mailを見ていたらOpenAIからファインチューニング完成のメールが届いてました。
それを確認してから、進めていくと前回エラーが出たところも上手くいきました。

response = openai.FineTuningJob.create(
    training_file=training_file_id,
    validation_file=validation_file_id,
    model="gpt-3.5-turbo",
    suffix="recipe-ner",
)

job_id = response["id"]

print("Job ID:", response["id"])
print("Status:", response["status"])

あとは、特に問題もなく順調にファインチューニングが終了しました。本当に簡単です。
上記の躓きポイントだけ気をつければ大丈夫です。

実際にファインチューニングしたモデルを使ってみる。

実際にモデルを使ってみると上手くいきました。コードは以下です。
secret keyだけ入れ替えてくださいね。

import openai

openai.api_key = "secret key"

def get_completion_from_messages(messages,
                                 id="ここに入力",
                                 model="ここに入力", 
                                 temperature=0, 
                                 max_tokens=100):
    
        response = openai.ChatCompletion.create(
            model=model,
            messages=messages,
            temperature=temperature, # this is the degree of randomness of the model's output
            max_tokens=max_tokens, # the maximum number of tokens the model can ouptut 
        )
        
        return response.choices[0].message["content"]

messages = [
    {'role':'system',
    'content': "You are a helpful recipe assistant. You are to extract the generic ingredients from each of the recipes provided."},
    {'role':'user', 
     'content': "1 c. flour, 1 tsp. soda, 1 tsp. salt, 1 Tbsp. sugar, 1 egg, 3 Tbsp. margarine, melted, 1 c.buttermilk"
    }
]

response = get_completion_from_messages(messages, temperature=1)
print(response)

OpenAIからメールが届くので、そのメールに記載されている。

id

model

を入力したら完成です。

まとめ

ファインチューニングは初めての挑戦でしたけど、意外と簡単にできました。次は違ったデータセットを使って試してみようと思います。

次回もGPT関連かChatGPTについての記事を書こうと思っています。

1
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
1
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?