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

Views: 241

OPENAIにてファインチューニングを実施してみました。(2025年1月22日)
ネットに公開されているソースではエラーが出てうごかすのに苦労したので、備忘録として公開します

ファインチューニングにて学習に用いるファイルを作成する

import csv
import jsondef csv_to_jsonl(input_file, output_file):
with open(input_file, mode=’r’, encoding=’utf-8′) as csvfile:
reader = csv.DictReader(csvfile)with open(output_file, mode=’w’, encoding=’utf-8′) as jsonlfile:
for row in reader:
message = []message.append({
“role”: “system”,
“content”: “RiseBot”
})message.append({
“role”: “user”,
“content”: row[‘user’]
})message.append({
“role”: “assistant”,
“content”: row[‘assistant’]
})data = {“messages”: message}
jsonlfile.write(json.dumps(data, ensure_ascii=False) + ‘\n’)csv_to_jsonl(‘/content/drive/MyDrive/openai/test_data.csv’, ‘/content/drive/MyDrive/openai/test_data.jsonl’)

上の処理で作成したファイルをアップロードし、ファインチューニングする

!pip install openaiimport os
os.environ[“OPENAI_API_KEY”] = “APIKEY”import openaifrom pathlib import Path
from openai import OpenAIclient = OpenAI()# 学習用データのファイルパス
filepath = “/content/drive/MyDrive/openai/test_data.jsonl”

# ファイル読み込み
test_data_file_object = client.files.create(
file=open(filepath, “rb”),
purpose=”fine-tune”,
)

file_id = test_data_file_object.id

#Create a fine-tuning job
job = client.fine_tuning.jobs.create(
training_file=file_id,
model=”gpt-4o-2024-08-06″,
method={
“type”: “supervised”,
“supervised”: {
“hyperparameters”: {“n_epochs”: 3},
},
},
)

ファインチューニングしたモデルに対して質問をしてみる

from openai import OpenAI
client = OpenAI()job_id = job.id# Retrieve the state of a fine-tune
client.fine_tuning.jobs.retrieve(job_id)
import openai# OpenAI APIキーを設定
openai.api_key = ‘APIKEY’

# ファインチューニングされたモデルのID
fine_tuned_model_id = ‘モデルID’

from openai import OpenAI
client = OpenAI()

completion = client.chat.completions.create(
model=fine_tuned_model_id,
messages=[
{“role”: “user”, “content”: “運用組成実績修正画面にて、運用未計画と表示される。”}
],
max_tokens=100
)

print(completion.choices[0].message)

ファインチューニングしたモデルから返ってきた回答

ChatCompletionMessage(content=’運用・組成割付画面より、運用を指定して確定するよう案内した。’, refusal=None, role=’assistant’, audio=None, function_call=None, tool_calls=None)

学習した内容に対する回答はそこそこイイ感じでした。

スポンサーリンク
test
test

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
test