파이썬으로 도메인 특화 챗봇 모델 만들기 - 3
저번에 이어서 Q&A 챗봇을 만들기 위해서 전체 프로세스를 한번 시도해보고 있다.
Fine-tune 프로세스
- 데이터 준비
- 파인튜닝 모델 만들기
- 파인튜닝 모델 사용하기
+ 비용 계산
데이터 준비
데이터는 아래 예시 처럼 JSONL 형태로 준비되면 된다. 나는 Q&A 모델을 만들꺼라 질문 답 형태로 구성할거다.
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
open ai에서 CSV, TSV, XLSX, JSON or JSONL 형식의 데이터를 open ai 파인튠에 적합한 데이터 셋 포맷으로 만들어주는 tool을 제공한다. 한줄이면 된다. 아주 간단!
pip install --upgrade openai
#open ai에서 파인튠과정은 cli 이용하라고 권장한다.
openai tools fine_tunes.prepare_data -f <LOCAL_FILE>
그래서 나는 이러한 질문 목록을 csv 로 몇개만 만들었다. 실행문으로 넣을건 prompt 열에, 생성문으로 넣을건 completion 열에 넣으면 된다. 열제목도 저렇게 넣어줘야됨!
작업이 끝나면, 파인튜닝 할때의 팁 안내사항들을 이것저것 친절하게 알려준다.
**프롬프트 끝에 데이터에 공통 구분 기호가 없습니다. 프롬프트 끝에 구분자 문자열을 추가하면 완료가 시작되어야 하는 미세 조정된 모델이 더 명확해집니다.**
**데이터에 완료 끝 부분의 공통 끝 부분이 없습니다. 완료의 끝에 공통 종료 문자열이 추가되면 완료가 종료되어야 하는 미세 조정된 모델이 더 명확해집니다.**
**완료는 공백 문자('')로 시작해야 합니다. 이것은 우리가 사용하는 토큰화로 인해 더 나은 결과를 생성하는 경향이 있다.**
해석하면 뭐 이런거다.
완료되면 요런 jsonl 파일이 두둥~! 완성된다
{"prompt":"올해 처음이라 안내 부탁 ->",
"completion":" 온라인 강좌 또는 활용 안내서가 있습니다.\n"}
{"prompt":"게시판에 사용자가 글을 쓸 때 사용자 아이디와 계정 테이블의 아이디를 코드 진단 해야하는지 문의 ->",
"completion":" 굳이 구분하자면 업무규칙에 해당할 수 있다고 안내\n"}
파인튜닝 모델 만들기
#open ai api key를 등록해놓으면 매번 안써도 되서 편하다.
#설정 안해놔도 상관은 없음
C:\Users>set OPENAI_API_KEY=<OPENAI_API_KEY>
# 파인튜닝 모델 만드는 공식 사용법
openai api fine_tunes.create -t <TRAIN_FILE_ID_OR_PATH> -m <BASE_MODEL>
#api설정 따로 안해줬으면 여기다가 이렇게 넣으면 된다.
openai --api-key <api-key> api fine_tunes.create -t sample_data_2_prepared.jsonl -m davinci--suffix "sample_model_2"
- -m 모델 : 사용할 모델명기재
- -- suffix "파인튜닝모델명" : 내가 쓰고싶은 이름으로 적으면됨
저 한줄이면 파인튜닝 모델 만들기 뚝-딱!
자세한 설명들은 아래 링크 참고.
파라미터 설명 : https://platform.openai.com/docs/api-reference/fine-tunes
파인튜닝 가이드 자세한 설명 : https://platform.openai.com/docs/guides/fine-tuning
파인튜닝 모델 사용
import openai
openai.api_key = "<api-key>"
respose=openai.Completion.create(
model="davinci:ft-personal:sample-model-YYYY-MM-DD-HH-MM-SS",
prompt="질문에 친절하게 대답을 합니다. Q:너는 이름이 뭐야 A:친절한 챗봇입니다~! Q: 너는 무엇을잘하니? A:",
max_tokens=1000)
print(respose)
#응답만 확인하고 싶으면
print(response.choices[0].choices[0].text)
너무 간단하게 끄읕
비용계산 팁
비용계산 측정하며 알게된 사실…
파인튜닝을 할 때, epoch 설정할 수 있는데 에폭만큼 토큰이 배가 된다…
즉, 100토큰 언어를 파인튜닝하고, 에폭을4번 돌리면, 400토큰으로 계산(100*400=400)토큰되는거
염두해두시라….
'AI 인공지능 > OpenAI-API' 카테고리의 다른 글
[OpenAI API-5] Prompt Engineering (0) | 2023.08.02 |
---|---|
[OpenAI API-4] Prompting Techniques (0) | 2023.04.04 |
[OpenAI API-2] Play ground 파라미터 설명 (0) | 2023.03.28 |
[OpenAI API-1] OpenAI API 사용하기 (0) | 2023.03.22 |