j5ng's picture
Update README.md
b6d26b2
metadata
license: apache-2.0
language:
  - ko
tags:
  - chat

μœ„λ‘œν•˜λŠ” λ‚¨μΉœ 챗봇(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 λ‹˜μ˜ μ €μž₯μ†Œ 도움을 많이(λŒ€λΆ€λΆ„) λ°›μ•˜μŠ΅λ‹ˆλ‹€.