본문 바로가기
카테고리 없음

openai - 파인튜닝

by 인라인타지마 2023. 7. 13.

 

 

 

  • 현재 GPT-4로는 파인튜닝이 불가능하므로 GPT-3로 파인튜닝을 하고 있음
  • GPT-3 기반이 되는 학습모델은  대표적 총 4가지
    • 1) davinci : GPT-3 시리즈 중 가장 성능이 좋은 모델, 요청당 최대 4,000개의 토근 처리 가능 (대화를 할수 있는 모델)
    • 2) curie : 매우 유능하지만 davinci보다 빠르고 저렴 / 성능은 davinci가 우수
    • 3) babbage : 간단한 작업이 가능하고 매우 빠르고 비용이 저렴
    • 4) ada : 간단한 작업이 가능하므로 일반적으로 GPT-3 시리즈 중 가장 빠르고 가장 저렴
  • 학습자료를 자세하고 다양한 형식의 prompt를 작성해야함

 

import time
import openai

# OpenAI API 키 설정
openai.api_key = "[openai_api_key]"

# Fine-tune 모델 생성 함수
def create_qa_model(training_file, suffix):
    # Fine-tune 모델 생성 요청
    response = openai.FineTune.create(
        training_file=training_file,
        suffix=suffix,
        model="davinci",
        n_epochs = 10
    )

    model_id = response['id']
    print("Fine-tuning 모델 생성 중...",model_id)

    # Fine-tuning 작업 완료 여부 확인
    while True:
        model_info = openai.FineTune.retrieve(id=model_id)
        status = model_info['status']

        print("모델정보>>",model_info)

        if status == 'succeeded':
            print("Fine-tuning 모델 생성 완료!")
            return model_info['model']
        elif status == 'failed':
            print("Fine-tuning 모델 생성 실패")
            return None

        time.sleep(1)

# Fine-tune 모델 생성 예시
#file_path = "./SQuAD/data.json"
file_path = "./v_rater.jsonl"
suffix = "Raterteam QA_bot"

print(f"파일업로드준비|파일명:{file_path}")

#학습파일 업로드
def upload_file(file_path):
    with open(file_path, "rb") as file:
        response = openai.File.create(
            file=file,
            purpose='fine-tune'
            )
        file_id = response['id']
        print(f"openai.File.create()호출결과\n{response}\n")

        return file_id

doUploadfile = upload_file(file_path)

model_name = create_qa_model(doUploadfile, suffix)

if model_name:
    print("Fine-tuned Model Name:", model_name)
else:
    print("Fine-tuned 모델 생성에 실패했습니다.")
반응형