Ssul's Blog
[NLP, Fine-Tuning] 우리 도메인 특화 챗봇 만들기 전략 본문
0. 들어가며
최근에 멘탈헬스 스타트업에 개발총괄로 합류하면서, AI 기술을 활용한 다양한 방안들을 마련중.
그중 빠르게 테스트 하려고 하는 것은,
AI가 가벼운 심리상담을 해주는 것과 특정 심리상담사의 상담스킬을 사용하는 특화 챗봇 두개.
첫번째는 시중의 LLM이 똑똑하기는 하지만, 상담에 특화되지 않았기 때문에 커스터마이징이 필요.
두번째는 특정인의 말투, 지식을 학습해야 하기 때문에... 다른 맥락에서 커스터마이징이 필요.
이 두가지 미션을 현재의 기술발전과 리소스제한 상황에서 어떻게 달성할 수 있을까?
[기존 상업용 LLM(GPT, Bard...)활용 전략]
1. 상업LLM + Prompt engineering하기
- 방법: 따로 파인튜닝 없이, system메세지 설정 및 prompt원샷정도 주어서 chatGPT API활용하기
- 장점:
- 따로 학습비용이 필요없음
- 프롬프트 작성만 잘하면, 기본은 함
- 단점:
- 쉽게 본연의 임무(상담사) 상실
- api호출비용(gpt-4 api연결시 비쌈)
2. 상업LLM + full fine-tuning
- 방법: openai가 열어준 파인튜닝 api를 통해서, 파인튜닝에 사용할 데이터 구해서 튜닝. 튜닝된 모델이 내 계정에 생성. 해당 모델에 api호출해서 운영 가능
- 장점:
- 이론적으로는 좋은 Pretrain-LM을 기반으로 파인튜닝하니 좋을 수 있음... 현실은...gpt파트너사가 되어야 좋을수도..
- 단점:
- 비용이 비쌈. 2epoch돌렸는데, 약3만원
- 오히려 망가짐. 말투는 따라하는 것 같은데, 바보가 됨(말투는 따라하지만, 지식이 없음)
- 현재까지는 상용화 불가
3. 상업LLM + PEFT(Parameter Efficient Fine Tuning)
- gpt가 모델의 파라미터를 공개하지 않기 때문에 불가
[오픈소스(Llama 등)활용 전략]
4. 오픈소스LLM + Prompt engineering(고려할 필요 없음)
방법: 오픈소스LLM을 활용해서 파라미터 수정없이 system메세지 설정 및 prompt원샷정도 주어서 활용
- 장점:
- ...
- 단점:
- 비용. 오픈LLM도 사이즈가 작지 않음. 매 호출마다 돈이 줄줄샘.
- 한글...한글...
5. 오픈소스LLM + full Fine-tuning
방법: 오픈소스 LLM을 full파인튜닝해서, 우리만의 모델 생성
- 장점:
- 우리회사만의 Pretrained-LM을 보유가능
- 단점:
- 어마무시한 학습비용(GPU 등)
- 자체 Pretrained-LM이 필요한 큰기업이나, NLP/AI연구 목적에 적당
- 한글...한글...
6. 오픈소스LLM + PEFT(Parameter Efficient Fine Tuning)
방법: 오픈소스LLM의 파라미터는 수정이 없이, Adapter, prefix, LoRA 등을 통한 파인튜닝. 기존 LLM모델은 유지한채, 다른 친구들을 붙여서, 그 붙인 친구들만 학습. 이를 통해 기존의 지식을 보전하며, 신규지식도 대답 가능
- 장점:
- full파인튜닝보다 저렴한 학습 비용
- 새로운 데이터에 대한 지식습득과 과거 지식도 유지
- 회사만의 챗봇 보유가능
- 단점:
- 파인튜닝은 상대적으로 비용이 저렴하지만, 결국 큰모델을 서빙하기 때문에 운영비용 높음
- AI전문가 필요
- 한글...한글...
[기타 방법]
7. 상업 LLM + RAG
방법: 기존에 내가 가지고 있는 지식/문서/데이터를 활용하여, LLM이 응답할때, 내가 가지고 있는 지식데이터에서 검색해서 유사한 내용을 함께 가져와서 질문+가져온지식을 상업LLM에 전달. 이렇게 하면, LLM이 가지고 있지 않았던 지식에 대해서 응답이 가능
- 장점:
- 파인튜닝이 없으니, 비용 절감
- 단점:
- 지식을 검색하고, 결과물을 반환하는 과정의 정확도 의문(벡터db)
- 상대적으로 느린속도. RAG하고, 그거 모아서 api호출로 과정이 많음
8. 상업LLM을 멀티로 활용하기
방법: gpt-api 객체를 여러개 생성. 첫번째 api는 질문의 의도파악(예: 해답요구, 요약, 공감 등). 그리고 두번째api는 의도와 함께 원래질문을 전달받아, 해당 내용에 대한 응답. 이 응답을 바로 고객에게 보내는 것이 아니라, 또 다른 api가 보정해서 고객에게 전달. 한번 질문에 대하여 총 3개의 LLMapi호출.
- 장점:
- 다양한 테스크 수행가능(요약보고서 제작 등)
- 만들면 재미있음
- 단점:
- api호출비용
- 상대적으로 느린 서비스
- 개발자/기획자의 기획 센스 필요
내가 선택하고, 실행중인 전략은...
초반에는 1,8번을 통한 사용자 반응 확인
초반을 지나서는 7번 테스트 중,
그리고 요즘은 6번을 준비중.
오픈소스LLM에 LoRA를 붙이고,
Gradual fine-tuning(파인튜닝시 in-domain데이터 비중 조절)과 같은 파인튜닝 스킬을 활용해서,
우리 도메인에 특화된 챗봇 모델을 만들어보고 있다.
그리고, DANN(Domain-Adaptaion Neural Network)와 같은 전이 학습이 현실적으로 가능한지 체크 중.
다음글은 LoRA 붙여서, 오픈LLM 파인튜닝 하기!
'AI & ML > 학습하기' 카테고리의 다른 글
AI-LLM 파인튜닝 한방에 끝내기(gemma-2B) (2) | 2024.04.16 |
---|---|
[NLP, embedding] FAISS 사용하기 (0) | 2024.03.19 |
[AI, NLP] LSTM으로 스팸분류기 만들기 (1) | 2024.03.18 |
[NLP, Fine-Tuning] LoRA로 도메인 특화 챗봇 만들기 (0) | 2023.12.22 |
chatgpt3 파인튜닝(fine-tuning)하기 (0) | 2023.05.02 |