brunch

매거진 AI 봇

You can make anything
by writing

C.S.Lewis

by 젠틀파이 제이미 Aug 30. 2023

실전! LLM 파인튜닝 (1/2)

파인튜닝, finetuning, 챗GPT, 젠틀파이, LLM, 생성AI

앞선 글에서는 프롬프트 엔지니어링 (1) (2)에 대한 내용을 풀어봤다. 이번에는 프롬프트 엔지니어링과는 다르게 파인튜닝에 초점을 맞춰 알아보자.



파인튜닝이 왜 필요한가: 베이스모델과 파인튜닝모델

LLM(초거대언어모델)의 기본 모델(Base Model)은 특정한 답을 하게끔 만들어져 있지 않다. 예를 들어, "대전은 어느 나라 도시야?" 라고 물으면, 기본 모델(Base Model)은 "파리는 어느 나라의 도시야?"라고 대답한다. 반면 파인튜닝 모델, 예를 들어 chatGPT는 질문에 대한 답변을 하게 튜닝되어 있기 때문에, 사용자가 "대전은 어느나라 도시야?" 하면" 대한민국의 도시야"라고 대답한다. 일반모델에 특별한 성능을 덧붙인 게 파인튜닝이라고 생각하면 좋겠다. 

기본 모델(Base Model) 과 파인튜닝한 모델의 대화 차이


파인튜닝의 목적

파인튜닝의 핵심 목적은 모델이 특정 분야에서 더욱 정교하고 전문적인 답변을 할 수 있게 개선하는 것이다. 의학 분야에 대한 데이터로 파인튜닝을 하면, 특정 의학적 상황에 대한 더 정확한 답변이 가능해진다.

예를 들어 일반 모델에 "얼굴에 조그맣고 빨갛게 부어올랐어. 간지러워."라고 물으면, Base Model은 대체로 "여드름"이라고 답할 것이다. 하지만 의학 데이터로 파인튜닝을 거치면, "일부 감염은 피부만 침범하고, 다른 감염은 또한 피하 연조직을 침범합니다. 경미한 감염인 종창, 홍색음선, 모낭염, 종기이거나, 연조직염, 림프관염, 괴사성 피부감염 같은 심각한 피부 감염이 있을 수 있습니다"라는 식의 전문적인 의견을 제시할 수 있을 것이다.

의학지식으로 파인튜닝한 모델



프롬프트 엔지니어링으로 하면 안되나? 왜 파인튜닝을 하나?

파인튜닝과 프롬프트 엔지니어링은 모두 미리 학습된 모델을 새로운 작업에 적용하기 위한 기술이지만, 각 기술의 목적과 사용방법이 다르다. 프롬프트 엔지니어링은 기존의 모델을 변화시키지 않고, 모델의 입력에 특정한 문장을 추가하여 원하는 출력을 얻는 방식이고파인튜닝은 미리 학습된 모델을 새로운 작업에 맞게 다시 학습시키는 방식이다. 


그렇다면 어떤점이 다른가?

투입시간: 프롬프트 엔지니어링은 새로운 학습 없이 적용할 수 있으므로 빠르게 결과를 얻을 수 있는 반면, 파인튜닝은 새로운 학습이 필요하므로 시간이 더 걸린다. 

 비용: 파인튜닝은 프롬프팅보다 비용이 더 들지만, 프롬프팅에 들어가는 토큰수가 줄기 때문에 결과적으로 더 저렴할수도 있다. 

성능 향상 범위: 프롬프트만으로는 기본 모델의 성능을 일정 수준 이상으로 끌어올리기 어렵지만, 파인튜닝은 더 높은 성능을 목표로 할 수 있다.


프롬프트 엔지니어링 vs 파인튜닝


프롬프트 엔지니어링은 모델의 출력을 조작하기 위해 사용되고, 파인튜닝은 새로운 작업에 대한 예측 정확도를 높이기 위해 사용된다. 간단히 말해, 파인튜닝은 특화된 작업에 높은 성능이 요구될 때 필요하다. 


파인튜닝은 다음과 같은 상황에서 특히 유용하다:  

일관된 대답을 원할 때

모델의 능력을 극대화하고 싶을 때

특정 주제에 대한 지식을 높이고 싶을 때

오류나 틀린 정보를 제대로 수정하고 싶을 때



파인튜닝 실제 적용 단계  


각 언어 모델은 특정한 분야에서 뛰어난 성능을 보인다. 예컨대, GPT-3의 베이스 모델인 chatGPT는 대화 분야에서 뛰어나고, GPT-4는 코드 작성 등에서 더 높은 성능을 보여주기 때문에 Copilot 같은 서비스를 제공할 수 있다. 이런 특화된 분야가 각 베이스 모델에 있기에, 파인튜닝이 가능하다. 그렇기 때문에, 본인이 어떤 영역에서 더 성능을 올리려고 하는지 확인해서 그 모델로 파인튜닝하는 게 좋다. 또한, 무작정 데이터만들어서 때려넣지 말고, 차근차근 순서대로 해보자. 파인튜닝도 잘 할 수 있는 영역을 캐치하는 것이 중요하다. 


1) 일반 모델(Gpt 3.5 등)에서 프롬프트 엔지니어링을 통해 특정 작업을 수행해본다.

2) 프롬프팅 결과로도 괜찮긴 한데, 100점은 아니야 하는 과업을 찾는다.

3) 즉, 일반 모델에서도 잘 동작하는 부분 중에서 파인튜닝이 더 효과적일 것 같은 과업을 하나 선택한다.

4) 약 1,000개의 학습 데이터를 준비해 이 중 80%의 데이터로 파인튜닝을 실행한다

     데이터는 질문과 답변 (question - answer) 포맷으로 만든다. 

     사이트에 있는 FAQ 데이터도 좋고, 일반 문서에서 질문과 답변을 새로 생성해서 만들어도 된다. 

     (최근에는 챗GPT같은 모델이, 일반 텍스트 문서에서 질문과 답변 세트를 더 잘 생성하기도 한다. 

     일반 모델도 활용해보자)

5) 나머지 20%는 모델의 성능을 검증하는 데 사용한다. 


파인튜닝을 위한 데이터 준비: 약 1000쌍 이상의 질문과 답변을 준비한다


파인튜닝의 평가(Evaluation)

파인튜닝은 조금 걸기본적으로 데이터를 입력하고 모델을 학습시키는 과정이라 시간과 돈이 들 뿐, 결코 어려운 일이 아니다. 다만, 데이터 학습보다 더 중요한 것은 이후의 평가(Evaluation) 과정이다. 우리의 목적은 학습을 잘 시킨다에 있지 않고, 일관적이고 높은 성능에 있기 때문이다.


파인튜닝이 잘 됐는지 확인하는 방법은 여러 가지가 있을 수 있지만, 크게 두가지이다.


1) 수동 방식: 사람이 가장 신뢰할 만한 리뷰를 할 수 있다. 파인튜닝은 보통 전문 분야의 지식을 확장하는 경우가 많기 때문에 해당 분야의 전문가가 수용할 수 있는 답인지 검토해야 한다.

2) 기계적 방식: 좋은 테스트 데이터가 선결되어야 한다. 고품질이면서도 트레이닝 데이터에 없는 별도의 데이터 세트를 준비해야 한다.

'Predicted Answer'와 'Targeted Answer' 세트를 준비한다. 

 우선, 'exact match'를 테스트해본다. LLM이 완전히 같은 답을 내지 않을 가능성이 높지만, 프롬프트에 따라서는 거의 동일한 답변을 내기도 하니, 확인해 볼 필요가 있다.

그 다음은 임베딩(embedding)을 사용해서 'Predicted Answer'와 'Targeted Answer'가 비슷한 임베딩 값을 가지고 있는지 결과값을 측정한다. 



이제 지식은 충분하다. 데이터를 만들고 시작해 보자. 





파인튜닝을 스텝별로 실행해보는 포스팅이 업데이트되었습니다.

https://brunch.co.kr/@gentlepie/65




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

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

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




참고 사이트: Finetuding Large Language Models 에서 꼭 실전수업 해 보세요! 




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

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




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

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

[채용공고 바로가기]


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari