안녕하세요!!!!
최근 OpenAI에서 새로운 GPT 모델인 gpt-3.5-turbo를 출시하였습니다!!
하지만 아쉽게도 GPT를 교육할 수 있는 fine-tuning 모델은 아직 기존 모델로만 가능한데요~!
이번 포스팅에서는 python 의 api방식을 활용하여
GPT의 Fine-tuning model을 작동시키는 방법을 알아보겠습니다!!
1. API 세팅
- 우선 openai의 패키지를 불러온 뒤, api 기반으로 세팅을 끝내줍니다!
(api 키 받는 방법은 아래 글을 참고해주세요!)
2023.03.04 - [일등박사의 생각/데이터분석] - OpenAI의 ChatGPT를 파이썬 API로 이용하기(gpt-3.5-turbo)
import pandas as pd
import openai
API_KEY = '{나만의 API키}'
openai.api_key = API_KEY
2. 데이터 준비!
- gpt에 교육시키고자 하는 내용을 Pandas DataFrame의 형태로 불러옵니다.
- 이번에는 일등박사어를 교육시킨다는 목표로 진행해보겠습니다!
df = pd.DataFrame({
'questions':['일등과 박사로 구성된 언어는 무엇인가?','일등박사어에서 만날때하는말은?','일등박사어에서 해어질때하는말은?','만나서 하는말. 일등','해어지는 상황에서 하는말. 박사'],
'answers':['일등박사어','일등','박사','일등','박사'],
})
df_gpt = df[['questions','answers']]
df_gpt.columns = ['prompt','completion']
df_gpt
다음으로는 csv로 저장하고, openai의 cli를 활용하여 json 파일을 만들어줍니다!
#saving the new csv file
df_gpt.to_csv('drfirst.csv')
!yes | openai tools fine_tunes.prepare_data -f 'drfirst.csv'
위 코드를 실행하면 해당 디렉토리에 {원래파일명}_prepared.jsonl 이라는파일이 생깁니다.
위 과정은 단순히 다음과 같이 데이터프레임을 바꾸어주는것입니다!!
drfirst_prepared.jsonl는 아래와 같아요~~!
{"prompt":"일등과 박사로 구성된 언어는 무엇인가? ->","completion":" 일등박사어\n"}
{"prompt":"일등박사어에서 만날때하는말은? ->","completion":" 일등\n"}
{"prompt":"일등박사어에서 해어질때하는말은? ->","completion":" 박사\n"}
{"prompt":"만나서 하는말. 일등 ->","completion":" 일등\n"}
{"prompt":"해어지는 상황에서 하는말. 박사 ->","completion":" 박사\n"}
해당 파일을 열어줍니다.
#creating a file id from the jsonl file
with open("drfirst_prepared.jsonl") as f:
response = openai.File.create(file=f, purpose='fine-tune')
print(response)
이제!! openai에 api를 통하여 모델 생성을 요청합니다!
davinci 모델을 사용할게요!!
#the file id is then used to create finetune model
response = openai.FineTune.create(training_file=response['id'], model='davinci')
print(response)
이젠!! 모델이 잘 만들어졌는지 확인해봅니다!
response = openai.FineTune.retrieve(id=response['events'][0]['message'].split(':')[1].replace(' ',''))
print(response['status'])
print(response)
처음 만들고 2~3분 정도가 걸린다고 공식 사이트에 나와있네요!
아직은 pending status입니다!!
기다리다보면 다음 그림과 같이 success 라는것을 확인할 수 있습니다!!
모델명을 확인해볼까요!?
response['fine_tuned_model']
openai의 API usage 메뉴에서도 해당 모델을 확인할 수 있습니다1!
이제, 모델이 잘 학습하였는지 물어볼까요!??
ft_model = response['fine_tuned_model']
res = openai.Completion.create(model=ft_model, prompt="일등과 박사로 구성된 언어?", max_tokens=18, temperature=0.4)
print(res['choices'][0]['text'])
알려준 대로 잘 대답을 합니다!^^
(계속 돌려보면 이상한 답을 할떄도 있습니다!)
이 모델을 활용하여 만들고 싶은 내용을 학습시킬 수 있겠네요!^^
'데이터&AI' 카테고리의 다른 글
[PYTHON] openai의 gpt api를 활용하여 문장 클러스터링 하기 (0) | 2023.03.05 |
---|---|
python API를 활용한 chatgpt- 과거내용 기억하기 (3) | 2023.03.05 |
OpenAI의 ChatGPT를 파이썬 API로 이용하기(gpt-3.5-turbo) (3) | 2023.03.04 |
OpenAI의 ChatGPT가 예측한 비트코인의 미래 (feat Python) (0) | 2023.02.06 |
정규표현식(regex, 레젝스) with 파이썬!! (3) - 예제 (0) | 2023.01.09 |
댓글