파인튜닝을 하기에 앞서 준비해야 할 사항이 있습니다.
1) gpt에 파인튜닝 할 데이터셋(chat-completion 형식의 jsonl 파일)
2) OpenAI token
3) 파인튜닝에 사용할 모델(ex : davinci-002,gpt-3.5-turbo-0125, gpt-4-0613)
openai tools fine_tunes.prepare_data -f 로컬_파일위치/사용할데이터.csv
from openai import OpenAI
client = OpenAI("나의 API 키")
client.files.create(file=open('jsonl 데이터', 'rb'),
purpose = 'fine-tune')
from openai import OpenAI
client = OpenAI()
client.fine_tuning.jobs.create(
training_file="file-abc123",
model="gpt-3.5-turbo")
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already."}]}
# 프롬프트 구성(Chat-completion 형식)
# system, user, assistant에 대한 데이터를 준비해서 학습 데이터로 생성해야함.
training_data = []
system_message = "저는 대화용 챗봇 입니다." # 여기에 들어갈 말은 임의로 설정하셔도 됩니다.
def prepare_example_conversation(row):
messages = []
messages.append({"role": "system", "content": system_message})
messages.append({"role": "user", "content": row['prompt']})
messages.append({"role": "assistant", "content": row["completion"]})
return {"messages": messages}
training_data = training_df.apply(prepare_example_conversation, axis=1).tolist()
# 학습 데이터를 파일로 저장
def write_jsonl(data_list: list, filename: str) -> None:
with open(filename, "w") as out:
for ddict in data_list:
jout = json.dumps(ddict) + "\n"
out.write(jout)
training_file_name = "resume_finetune_training.jsonl"
write_jsonl(training_data, training_file_name)