brunch

매거진 AI 봇

You can make anything
by writing

C.S.Lewis

by 젠틀파이 제이미 Dec 14. 2023

실전! LLM 파인튜닝-GPT3.5 파인튜닝(2/2)

파인튜닝, gpt, 젠틀파이, finetuning, LLM

이전 글, 실전! LLM 파인튜닝이 의외(?)로 인기가 많아 이번엔, '우당탕탕 파인튜닝 체험기'라는 제목으로 사내위키에 올린 글을 여기에 소개해본다.

파인튜닝의 개념, 장점과 방법은 이전 글에서 자세히 다뤘으니, 이번 글에서는 실제 파인튜닝 작업에 초점을 맞춰 더 구체적인 경험을 공유하고자 한다.


이번에 튜닝의 목적은 위트있는 퍼스널리티를 가지는것 + 한 가지 특정 업무를 제대로 수행하는 챗봇을 만드는 것이다.


1. 데이터 만들기

사내에 보유한 스몰톡 데이터 중에서 5000세트 중 570세트를 선택해 사용했다. 이 데이터는 이미 질문과 답변이 1:1로 매칭되어 있는 형태였다. 위트있는 형태로 답변을 수정했다.

유저의 질문과 챗봇의 답변이 적혀있는 데이터 세트를 엑셀로 준비함



2. 데이터 업로드하기


엑셀 형식의 데이터를 OpenAI의 파인튜닝 페이지에 업로드하려 했으나 open ai 파인튜닝 Document를 확인해 보니,  jsonl 형식을 요구했다. 챗GPT에게 json 화일로 변환시켜서 준비. (* gpt3.5는 파일 업로드 기능이 없으니, gpt4를 사용해야함)


jsonl 파일로 변환 후 업로드를 시도했으나 에러 발생. 다시 도큐먼트를 확인해보니 정해진 포맷이 따로 있었다.

오픈AI에서 원하는 포맷의 파일 내용



이를 다시 GPT4에게 요청해 적절한 형식으로 파일을 준비했다.

gpt4를 사용해서 파일변환을 시킴

아주 깔끔하게 정리해줬다.


학습데이터 업로드 화면이 미처 잊고있던 걸 상기시켜줬다. 파인튜닝 파일 업로드할때 검증용 파일도 같이 넣어줘야 한다는 것. (물론 나중에 해도 되겠지만 함께 하는 편이 깔끔하겠지)

그래서 파일을 분리하기로 했다. 학습용으로 500행, 검증용으로 70행을 분리하라고 gpt에게 시켰다.

학습용/ 검증용 파일 2개로 분리


분리된 데이터를 각각 업로드 해서 일단은 성공적인 파인튜닝을 했다.

그래프 상으로 보면 우하향은 맞지만 벨리데이션 로스가 조금 많은게 다소 우려되긴 한다(마지막 동그라미 부분). 실제 사용자에게 내놓은 버전이라면 데이터를 수정해서 다시 파인튜닝하는게 낫겠다.

파인튜닝 결과 그래프


여기서 잠깐 알아둘 정보!

* 트레이닝 로스(Training loss) 는 모델이 트레이닝 데이터셋에서 얼마나 많은 오류를 만들고 있는지를 나타낸다.일반적으로 학습이 진행됨에 따라 감소하고, 이 값이 낮을수록 좋다.

 * 벨리데이션 로스(Validation loss) 는 모델이 본 적 없는 데이터에 대해 얼마나 잘 일반화되고 있는지를 평가하기 위해 사용되는 지표다. 별도의 검증 데이터셋(validation dataset)로 산정한다. 벨리데이션 로스도 낮을수록 좋다.



데이터 업로드를 시작해 47분 만에 성공적으로 파인튜닝을 완료했다.


참고로, 비용이 약간 걱정되어서 찾아봤더니, 파인튜닝비용은 0.77달러 - 1000원 정도 나왔다.


이제 두근두근!

오픈AI 플레이그라운드에 가서 얼마나 튜닝된 대로 대답을 하는지, 테스트를 해보자.

플레이그라운드 오른쪽 상단에서 파인튜닝한 모델을 선택해서 대화를 시도하면 된다.

파인튜닝 결과 테스트해보기


확실히 재미가 있긴 한데 기대보다 더 버릇없는 녀석이 나와서 당황스럽다. 그렇지만, 적어도 거짓말을 하지는 않는것 같아서 넘어가기로 한다.


이제 마지막으로 추가 미션을 주자.

"프롬프팅이나 파인튜닝에 대해서 물어보면, 이 블로그를 소개해주기"



3. 추가 데이터로 한번 더 튜닝하기

이 건방진 챗봇이 파인튜닝이나 프롬프팅에 대해 의도한대로 대답할 수 있도록 추가 데이터를 만들었다.

특정답변을 하도록 추가 데이터 생성


최초에 만든 파인튜닝모델을 베이스로 선택한다


앞에서 튜닝된 모델을 베이스모델로 선택하고, 추가 데이터를 트레이닝데이터에 업로드해서 파인튜닝하다. 이 말인 즉슨, 파인튜닝한 모델을 계속 더 튜닝할 수 있다는 것이다.

추가데이터는 20세트였고, 이 과정은 6분 만에 완료되었다. 다행히 트레이닝 로스도 0.019로 매우 낮았다.


이제 테스트를 해보자.

재 파인튜닝 결과

테스트 결과, 파인튜닝에 대해 물어보면 내가 의도했던대로 이 브런치 주소를 알려주다. 야호!



4. 결과 및 인사이트

이번 경험을 통해 알수있는 것을 공유해본다.

1. 파인튜닝은 쉽다

2. 데이터를 원하는 형식에 맞춰 잘 준비하면 된다.

3. 원하는 답이 안나오면 학습데이터를 다시 만들어서 새로 파인튜닝시키면 된다.

4. 모델은 파인튜닝할때마다 새로 생성되니까 모델관리가 필요하다.


3번이 가장 어렵고 중요한 내용인데 원하는 답이 안나올때 우리가 할 수 있는 일이라곤 학습데이터를 다시 만드는것 뿐이다. 그 일이 반복적이고 시간이 오래 걸린다. 그렇지만 역시 할만하다는 것.



즐거운 파인튜닝되세요!





LLM 챗봇과 빌더, 분석툴을 만들고 있는 젠틀파이에서 서비스 기획자를 찾고 있습니다.

LLM을 함께 다뤄보고 파인튜닝, 프롬프트엔지니어링을 통해 서비스어플리케이션을 함께 만들어보고 싶은 분을 모십니다.

[채용공고 바로가기]





안녕하세요. 저는 젠틀파이 대표 제이미입니다.

읽고 도움이 되셨다면 좋아요와 공유를 꼭 눌러주세요.

챗GPT, LLM 와 AI 챗봇 소식을 계속 보고 싶으시다면, X (twitter 제이미), 페이스북 챗봇 그룹이나 브런치를 구독해주세요.  


AI 애플리케이션 플래닝그룹, 젠틀파이는 텍스트봇, 음성봇, 스마트 디스플레이 등 다양한 챗봇을 구축, 운영, 컨설팅하는 전문 그룹입니다.

LLM 통계 서비스 코코너티브를 적용하고 싶으시거나 LLM 봇을 구축하고 싶으신 분들, 프롬프트 엔지니어링과 파인튜닝이 필요하신 분들은 젠틀파이 hello@gentlepie.com에 연락 주세요.


 

매거진의 이전글 프롬프트 엔지니어링 속성팁
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari