이번 포스팅에는 window환경에서 간단하게 openai의 Fine tuning을 활용하여 언어모델의 미세조정을 해보려고한다
https://platform.openai.com/docs/guides/fine-tuning
OpenAI API
An API for accessing new AI models developed by OpenAI
platform.openai.com
미세조정은 현재 davinci, curie, babbage모델만 가능하고 해당 모델은 학습 후 아무런 조정이 없는 모델이라서 현재로써는 크게 기대할 수 있는 능력은 없는편이지만 추후 다른 모델에 적용되었을때 활용하기 위해서 간단하게 진행해보도록 하자
Fine-tuning은 curl로도 충분히 지원할 수 있을 것 같은데 현재로써는 오직 파이썬에만 지원하고있다
스탭은 다음과같다
우선 파이썬을 설치해준다
설치는 기본옵션대로하고 이때 path설정만 추가해준다
별다른 작업없이 직접 실행할 것이기 때문에 탐색기에서 아래폴더로 이동한다
C:\Users\ctkim\AppData\Local\Programs\Python\Python311\Scripts
path설정만하고 설치하였으면 보통 폴더는 아래와 같은모양이다
window 터미널에서 해당 폴더로 이동해준다
이후 cmd에 pip를 입력하면 위와같이 뜰 것이다 (안된다면 path설정을 해보자)
그리고 메뉴얼대로 openai패키지를 설치해준다
pip install --upgrade openai
설치후에 해당 폴더내에 test.jsonl 파일을 생성해준다
그리고 테스트를 위해 다음과같이 입력해주었다
// test.jsonl
{"prompt": "김일이", "completion": "개발자"}
{"prompt": "김이삼", "completion": "개발자"}
{"prompt": "김삼사", "completion": "개발자"}
{"prompt": "김사오", "completion": "개발자"}
{"prompt": "김오육", "completion": "개발자"}
{"prompt": "김육칠", "completion": "개발자"}
https://platform.openai.com/docs/guides/fine-tuning/specific-guidelines
OpenAI API
An API for accessing new AI models developed by OpenAI
platform.openai.com
openai에서는 위와같은 사례 또는 고급 사용 법으로 작성메뉴얼이 있는데 종료토큰과 최소 500개의 예제 및 json line 하나가 2048을 넘지 않는등 조건이 있지만 단순이 경험을 위해서 위와같이만 입력한다
이후 cmd 경로내에서 아래와같이 실행하는데
openai --api-key=<YOUR_KEY> api fine_tunes.create -t <TRAIN_FILE_ID_OR_PATH> -m <BASE_MODEL>
YOUR_KEY에는 openai api secret key를
TRAIN_FILE_ID_OR_PATH에는 조정할 파일을(여기서는 test.jsonl)
BASE_MODEL은 davinci, curie, babbage 중 하나를 (여기서는 davinci를 사용했다)
위와같이 진행되며 파일id, cost, queue대기등 정보를 볼 수 있다 파일 업로드 후에는 백그라운드로 진행된다
종료된후 잠시 기다린후 playground로 이동하면 모델이 업로드된걸 확인할 수 있다
모델이 생성되었으면 테스트를 해보자
davinci 모델을 사용한 결과
학습된결과 🤔
아무런 목적없이 그냥 prompt를 completion으로 치환만 하도록 하였더니 위와같이 적절하게 치환은 했지만 썩 바람직한 모습은 아니게 나왔다
사실 미세조정을 소개하기위해 아무렇게나 작성한 것이지 원래 미세모델은
특정 프롬프트를 yes 또는 no로 설정하여 오기를 줄이거나
{"prompt": "Company: <Our company> helps sell cars", "completion": " yes"}
{"prompt": "Company: <Our company> supports the sale of groceries", "completion": " no"}
특정 문구에 대하여 감정을 변경할 수도 있으며
{"prompt": "Company foo's products are inexpensive and perform well", "completion": " positive"}
{"prompt": "Company foo is a mess", "completion": " negative"}
https://platform.openai.com/docs/guides/fine-tuning/preparing-your-dataset
OpenAI API
An API for accessing new AI models developed by OpenAI
platform.openai.com
다양한 사례를 통하여 모델을 학습시킬 수 있다
현재로써는 davinci 모델만 지원하기에 아주 매끄럽다 싶은 결과는 얻을 수 없지만 추후 다른 모델의 미세조정을 지원할때 더 효과적인 결과를 얻을 수 있을 것으로 생각된다
댓글 영역