μœ„λ‘œν•˜λŠ” λ‚¨μΉœ 챗봇(empathy-boyfriend-chatbot)

Polyglot-ko-5.8B λͺ¨λΈμ„ 기반으둜 AIν—ˆλΈŒμ— 곡개된 μ—°μΈλ“€μ‚¬μ΄μ˜ κ³΅κ°λŒ€ν™”λ‘œ QLoRA νŒŒμΈνŠœλ‹ν•œ sLLM 챗봇 λͺ¨λΈ

λ°°κ²½

κ·Ή T μ„±ν–₯이 κ°•ν•œ 개발자인 μ €λŠ” 곡감λŠ₯λ ₯이 μ•„μ£Ό 많이 λΆ€μ‘±ν•©λ‹ˆλ‹€.
κ·Έλ ‡κ²Œ 감정이 λ§€λ§λΌκ°€λ˜ 도쀑 [곡감 데이터 μ…‹]을 λ°œκ²¬ν•˜κ²Œ λ˜μ–΄ 
곡감λŠ₯λ ₯을 ν•™μŠ΅ν•œ μ±—λ΄‡μ—κ²Œ μ‘°κΈˆμ΄λ‚˜λ§ˆ 도움 λ°›μ•„ 미래의 μ—¬μΉœμ—κ²Œ 도움이 될까 μ œμž‘ν•˜κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

*κ·Έλƒ₯ μž¬λ°Œμ–΄λ³΄μ—¬μ„œ μ œμž‘ν–ˆμŠ΅λ‹ˆλ‹€.


image/gif


데이터 μ…‹

  • 좜처 : AIν—ˆλΈŒ κ³΅κ°ν˜• λŒ€ν™”
  • ν™œμš© 데이터: 연인
    *λΆ€λΆ€, 친ꡬ, 연인 λ“± λ§Žμ€ 상황에 데이터가 μ‘΄μž¬ν•˜μ§€λ§Œ μ—°μΈμ˜ λ°μ΄ν„°λ§Œ μ‚¬μš©ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

데이터 μ „μ²˜λ¦¬

  1. 상황데이터 μ œμ™Έ
  2. 감정데이터 μ œμ™Έ
  3. λŒ€ν™”λ°μ΄ν„°λ§Œ μˆ˜μ§‘
  4. 데이터 ν”„λ ˆμž„ ν˜•μ‹μœΌλ‘œ λ³€ν™˜
  5. ν•™μŠ΅λ°μ΄ν„° ν˜•μ‹μœΌλ‘œ λ³€ν™˜

μ „μ²˜λ¦¬ 데이터 μƒ˜ν”Œ

role text
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

image/png

μ‚¬μš© 방법

  • μ½”λž©μ—μ„œ μ‹€ν–‰ : Colab

  • WebDemo μ‹€ν–‰

run.sh

μš”κ΅¬ 사항

  • 8GB 이상 VRAM

Thanks to

jwj7140 λ‹˜μ˜ μ €μž₯μ†Œ 도움을 많이(λŒ€λΆ€λΆ„) λ°›μ•˜μŠ΅λ‹ˆλ‹€.

Downloads last month
11
Safetensors
Model size
5.89B params
Tensor type
FP16
Β·
Inference Examples
This model does not have enough activity to be deployed to Inference API (serverless) yet. Increase its social visibility and check back later, or deploy to Inference Endpoints (dedicated) instead.