[sLLM]. 공감하는 남친 챗봇(empathy-boyfriend-chatbot)

jongmin-oh·2024년 1월 21일
0

Korean-NLP-model

목록 보기
4/4

공감하는 남친 챗봇

empathy-boyfriend-chatbot

Polyglot-ko-5.8B 모델을 기반으로 AI허브에 공개된 연인들사이의 공감대화로 QLoRA 파인튜닝한 sLLM 챗봇 모델

배경

극 T 성향이 강한 개발자인 저는 공감능력이 아주 많이 부족합니다.
그렇게 감정이 매말라가던 도중 [공감 데이터 셋]을 발견하게 되어
공감능력을 학습한 챗봇에게 조금이나마 도움 받아
미래의 여친에게 도움이 될까 제작하게 되었습니다.

*그냥 재밌어보여서 제작했습니다.



데이터 셋

  • 출처 : AI허브 공감형 대화
  • 활용 데이터: 연인

    *부부, 친구, 연인 등 많은 상황에 데이터가 존재하지만 연인의 데이터만 사용하였습니다.

데이터 전처리

  1. 상황데이터 제외
  2. 감정데이터 제외
  3. 대화데이터만 수집
  4. 데이터 프레임 형식으로 변환
  5. 학습데이터 형식으로 변환

전처리 데이터 샘플

roletext
speaker어제 늦게 잤더니 비몽사몽인 채로 출근했어. 출근길에 엉뚱한 버스를 타서 지각할 뻔한 거 있지? 정말 경황이 없더라고.
listener놀란 마음에 다급하여 어찌할 바를 몰랐겠다. 지각할 거라는 생각에 마음 졸이기도 했겠어. 마음고생했을 자기를 생각하니 내가 다 속상하네.
speaker매일 출근하는 일상이 똑같은데 버스를 잘 못 타는 건 처음 겪었어. 그래서 더 곤란해서 땀이 삐질삐질 나더라고.
listener상상만 해도 진짜 힘들었겠다. 잘 못 탔다는 걸 아는 순간 얼마나 어처구니가 없었겠어. 게다가 출근길이라 더 마음이 조급했을 것 같아.
speaker여유롭게 나오긴 했지만 혹시나 지각할까봐 어찌나 당황했던지. 진짜 소리를 지를 뻔한 정도였어.
listener매일 출근 시간보다 훨씬 이전에 나오는 것도 정말 힘들잖아. 더군다나 버스를 잘못 탔으면 늦을 수도 있었으니 그 순간 마음고생이 심했겠다.

학습 데이터 샘플

여친: 어제 늦게 잤더니 비몽사몽인 채로 출근했어. 출근길에 엉뚱한 버스를 타서 지각할 뻔한 거 있지? 정말 경황이 없더라고.
남친: 놀란 마음에 다급하여 어찌할 바를 몰랐겠다. 지각할 거라는 생각에 마음 졸이기도 했겠어. 마음고생했을 자기를 생각하니 내가 다 속상하네.</>
여친: 매일 출근하는 일상이 똑같은데 버스를 잘 못 타는 건 처음 겪었어. 그래서 더 곤란해서 땀이 삐질삐질 나더라고.
남친: 상상만 해도 진짜 힘들었겠다. 잘 못 탔다는 걸 아는 순간 얼마나 어처구니가 없었겠어. 게다가 출근길이라 더 마음이 조급했을 것 같아.</>
여친: 여유롭게 나오긴 했지만 혹시나 지각할까봐 어찌나 당황했던지. 진짜 소리를 지를 뻔한 정도였어.
남친: 매일 출근 시간보다 훨씬 이전에 나오는 것도 정말 힘들잖아. 더군다나 버스를 잘못 탔으면 늦을 수도 있었으니 그 순간 마음고생이 심했겠다.</>

학습

Base on Model

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
from peft import PeftModel

model_id = "EleutherAI/polyglot-ko-5.8b"
bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_use_double_quant=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.bfloat16
)

tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, quantization_config=bnb_config, device_map={"":0})

학습 방법

  • 코랩에서 학습 : Colab

    *데이터 셋은 AI 허브의 소유권이 있음으로 Private 입니다.

  • Epoch: 16

  • learning-rate: 3e-4

  • batch_size: 1

  • Lora r: 8

  • Lora target modules: query_key_value

사용 방법

  • 코랩에서 실행 : Colab

Git: https://github.com/jongmin-oh/empathy-boyfriend-chatbot/tree/main
huggingFace: https://huggingface.co/j5ng/polyglot-ko-empathy-chat-5.8b

요구 사항

  • 8GB 이상 VRAM

Thanks to

jwj7140 님의 저장소 도움을 많이(대부분) 받았습니다.

profile
스타트업에서 자연어처리 챗봇을 연구하는 머신러닝 개발자입니다.

3개의 댓글

comment-user-thumbnail
2024년 2월 25일

안녕하세요 ! velog 보다가 저도 비슷한 프로젝트를 진행중에 있고 궁금한점이 많아서 댓글 남겼습니다.
저는 의료기반 지식in data를 이용해서 질문 답변 형식의 데이터를 모델에 finetuning할 생각인데요,,
현재 샘플 데이터셋은 huggingface에 ssuengpp/test1_1 에 올려놓은 상태입니다. 이 데이터를 작업하신 colab 코드를 이용해서 사용하려고 하면 데이터셋의 형식을 어떤 식으로 바꾸어 주어야하나요?

저의 데이터셋으로 finetuning을 하려면 어떻게 바꾸어야 하는지 궁금합니다. 답변주시면 감사하겠습니다 !

1개의 답글
comment-user-thumbnail
2024년 5월 26일

너무너무 잘 봤습니다 ! 혹시 모델 학습 시킨것을 허깅페이스에 올릴려고하는데 어떻게 올려야 하는지 알려주실수있나요 ?!

답글 달기