brunch

매거진 AI 봇

You can make anything
by writing

C.S.Lewis

by 젠틀파이 제이미 Mar 06. 2023

챗GPT, GPT-3로 챗봇을 만들어볼까?

챗GPT, 지피티, 생성AI, 젠틀파이, 코코너티브, 파인튜닝

챗GPT를 쉽게 소개하는 이전 포스팅에 대한 인기가 상당했던걸로 미뤄보건데, 챗GPT가 진정 대중의 관심사가 된 것 같다. 덕분에 팔자에도 없는 유튜브 영상도 촬영했다. 안녕 사이시옷 유튜브에서 정말정말 쉽게 챗GPT의 이해 , 챗GPT 이후 전망 두가지 내용을 소개했다. 편집을 잘해주셔서 감사하고, 이 브런치를 구독하고 글을 읽어주신 분들께도 감사드린다.


이번 주제는 실제로 기업이 쓸만한 챗봇을 만들어보는 이야기다. 현시점(2023년 3월) GPT-3는 외부 정보와 연동이 불가능해서 실시간 정보 (예를 들어 현재의 날씨)를 물어볼수 없다고 이 전 글에서 언급했는데, GPT-3에 적용할 수 있는 파인튜닝(fine-turing)을 활용하면 가능해 진다.


1. 파인튜닝이 뭔데?

GPT-3는 대규모 데이터셋을 학습한 AI이지만, 파인튜닝은 GPT-3 가 특정 작업을 더 잘 수행하도록 작은 규모의 데이터셋으로 모델을 재학습시키는 과정이다. 이를 통해, 특정 질문의 답변은 원하는 스타일로 텍스트를 선택하거나 어휘를 선택할 수 있게 해, 더 정확한 업무 수행을 기대할 수 있다.


날씨를 실시간 데이터와 연동해서 대답하고 싶다면 아래와 같이, 날씨정보를 물어볼때 답변을 계속 [weather]라고 답을 내도록 GPT-3를 파인튜닝시켜 보자.

왼쪽: 학습시킨 데이터 (프롬프트) -> 오른쪽 : GPT의 학습 결과


베이스모델(GPT-3)에다 위의 예시처럼 prompt와 completion을 조합해 학습시켜 새로운 모델, 파인튜닝 모델을 생성할 수 있다. 답변 호출 시 사전학습 모델(파인튜닝된 것)을 선택하고  frequency을 0에 가깝게 해서 호출하면 된다. 이미 날씨정보에 관한 질문을 [weather]로 사전에 학습시키고 코드화해두었기 때문에 백엔드에서는 GPT의 답변결과가 [weather]로 나오면, 바로 날씨의 API와 연동시켜 답을 생성해 사용자에게 답변하게 만들어 놓으면 될터다. 유사한 방식으로, 고객정보와 연동한 답변이 필요할 경우, 백엔드 서버에서는 파인튜닝한 GPT가 전송한, 사전에 약속된 답변을 낼 때만 기간계 정보를 연동해 답변하면 된다.



2. 학습데이터를 만드는 게 부담이다

이런 파인튜닝의 학습 예제는 많을수록 좋고, 최소한 수백개가 있는게 좋은데, 일반적으로 데이터 세트가 두배 크기가 될때마다 모델 품질이 선형적으로 증가한다고 한다. 수백개의 학습예제를 만드는게 걱정이라면, 이또한 GPT에게 시킬 수 있다. 다용도로 너무 쓸모있는 녀석이다.

챗GPT가 생성한 패턴

GPT 엔진의 중요한 세팅 중에 가장 중요한 것은 Temperature (온도)인데 얼마나 창의성을 허락하느냐의 수준을 의미다. 아래 예시처럼, Teperature를 0으로 하면 내가 준 데이터 내에서만 답해라는 것이고, 1은 니맘대로 자유롭게 답변을 만들어보라는 의미로 생각할 수 있다.


* 학습문장

prompt : 지금 밖에 추워?

completion: 현재 날씨는 [weather]입니다


* Temperature : 0.12 로 설정했을 때

prompt: 오늘은 날씨가 안 좋아 보이는데 맞나요?

completion: 네, 오늘은 [weather]입니다.


* Temperature : 1 로 설정했을 때

prompt: 날씨가 매우 춥게 느껴지는데 이유가 뭔가요?

completion: 현재 [weather] 때문에 날씨가 매우 춥게 느껴지는 것 같아요.


이런식으로 세팅을 다양하게 하면서 발화를 생성해 낼수 있다. 아이처럼 물어봐달라고도 하고, 반말로 해달라, 길게 물어봐달라 다양한 옵션을 주면 그야말로 몇 초 안에학습문장을  '열심히' 생성해 낸다. 물론 말이 안되는 표현도 등장하니 최종으로 사람이 리뷰하는 과정을 잊어서는 안되겠다.



3. 아직은 비용이 만만치 않다


엔드유저 사용자로서는 챗GPT를 누구나 쓸 수 있기 때문에 무료라고 생각할 수 있지만, 기업이 API를 공급받아 쓸 경우 돈을 내야한다. 파인튜닝을 하지 않은 일반 chatGPI 사용료는 1000토큰당 약 3원의 사용료를 낸다. 1토큰은 알파벳 글자(예를 들어, exit는 1토큰)이고, 한글로는 글자1개가 2토큰(예를 들어, '감자'는 4토큰)이다. 약500글자에 3원쯤 내야 하는데, 보통 하나의 질의와 대답에 4000토큰(약2000글자)가 들어가니까 대화 하나에 7원정도로 생각하면 어림잡아 맞을 것이다. 나쁘지 않다.

* 토큰계산기가 있다. (이런 것까지 오픈AI에서 세심하게 준비해 줌)


그런데 파인튜닝을 하는 순간 가격은 부담스러워진다. 파인튜닝은 학습시킬때도 돈을 내야하고, 파인튜닝한 모델을 가지고 사용할때는 더 많은 돈을 내야한다. 챗GPT는 현재 파인튜닝을 할수 없으니, 다빈치로 튜닝을 한다 가정해보자. 학습비는 차치하고, 다빈치 파인튜닝 모델로 대화를 한번 사용할때마다 $0.48(4000토큰) = 600원이 든다. 혹시 10,000번의 대화를 하면 하루에 600만원이 든다. 이보다 성능이 낮은 큐리Curie로 쓴다고 해도 하루에 60만원이 든다. 한달이면 1,800만원이다.


OPEN AI 파인튜닝 가격표


4. 현실적인 방안은?


① 파인튜닝 모델과 베이스모델(챗GPT)를 함께 사용하는 방법은 어떨까? 이런 질문이 들어왔을 땐 파인튜닝 모델을 쓰고, 저런 질문이 들어왔을때는 베이스모델(챗GPT)을 쓸 지 로직을 정리해 두가지를 한꺼번에 쓰는 방법이 있다. (현실적으로 쉽지 않다고 생각한다. 둘을 분류하는 로직도 자연어처리를 별도로 해야 함)


그보다 더 현실적인 방법은 ② 전통적인 방식의 분류 AI (구글 다이얼로그플로우, SDS 브리티웍스, IBM 왓슨 등)를 주 자연어 분류 엔진으로 사용하고, 특정 영역만 생성 AI(챗GPT, GPT-3 등)의 베이스모델을 활용하는 것이다. 파인튜닝 모델로 들어가는 순간 비용 이슈를 진지하게 고민할 수 밖에 없기 때문이다.


단기적으로 보자면, ②번이 현실적이긴 하지만, 엔진을 여러개 쓰는 복잡도를 고려해서 점진적으로 분류AI의 책임량을 줄여가는 방법이 좋을 듯하다.



현재 봇에서 어떤 부분을 분류AI로 하고, 어떤 부분에 GPT를 도입해야할지 같이 고민하고 싶다면,

젠틀파이에 연락주세요. 젠틀파이는 텍스트봇, 음성봇, 스마트 디스플레이 등 다양한 챗봇을 제작하고 컨설팅하는 전문 그룹입니다.


지금 직접 써 보세요.  챗GPT 바로 사용해보기 (링크)

GPT-3 예제를 골라 사용해보기 (링크)




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

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



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