2024-NIKL-DCS
κ΅λ¦½κ΅μ΄μ AI λ§ν μΌμ λν μμ½ 'λͺ¨λΈλ€μμ¬λμμ΄μ' ν
μ μλ λͺ¨λΈμ μ¬μ νλ ¨λ μΈμ΄ λͺ¨λΈ EXAONEμ κΈ°λ°μΌλ‘ νμΈ νλλμμΌλ©°, νΉμ μ§μμ΄λ κΈ°μ μ μ΅λνλλ‘ μ€κ³λμμ΅λλ€.
ν₯ν μ°κ΅¬μμλ μ΄λ¬ν μ§μμ΄λ κΈ°μ μ΄ μ¬λμ μ νΈμ μ‘°νλ μ μλλ‘ Direct Preference Optimizationκ³Ό κ°μ κΈ°λ²μ ν΅ν΄ νμ΅ν κ³νμ
λλ€.
νμ¬ μ
λ‘λλ μμ€ μ½λμ κ²½μ° μΈκ° μ νΈ λ°μ΄ν°μ
λ§ κ΅¬μΆ λλ€λ©΄ μ κΈ°λ²μ μ μ©ν μ μλλ‘ μμ±λμμΌλ©°, μΆν μλμΌλ‘ μ μ©λμ΄ νμ΅λ μ μλλ‘ κ³ λν μμ μ
λλ€.
νμ΅ λ° νκ° λ°©λ²
https://github.com/BM-K/2024-NIKL-DCS
Quick Start
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
model_name = "BM-K/EXAONE-3.0-7.8B-Daily-Conversation-Summary"
device = "cuda"
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.bfloat16,
device_map=device,
trust_remote_code=True
)
tokenizer = AutoTokenizer.from_pretrained(model_name)
PROMPT = '''You are EXAONE model from LG AI Research, a helpful assistant. Please answer the user's questions kindly.'''
chat = "[Conversation]\nνμSD2000001: μ λ μ¬ν λ€λλ κ²μ κ΅μ₯ν μ’μνλλ°μ. κ·Έλκ°μ§κ³ μ€νμΈμ΄λ λ μκ΅ μ λ½ μλλ©΄ κ΅λ΄μμλ λ κ°λ¦μ΄λ μ μ£Ό κ°μ λ°λ₯Ό λ§μ΄ λ€λ
λλ°\nνμSD2000001: νΉμ μ¬ν λ€λλ κ±° μ’μνμλμ?\nνμSD2000002: μ μ¬ν λ€λλ κ±° λκ² μ’μν΄μ λνκ΅ λ΄λ΄ μ¬νμ μμ² λ§μ΄ λ€λ
μλλ°μ.\nνμSD2000002: μ κ° κ³ λ±νκ΅ λλ μ¬νμ λν΄ ν₯λ―Έκ° μμλλ° κ·Έκ² μ’ μλ²μ§κ° μ§ λλ‘ ν¨ν€μ§μ²λΌ μ¬νμ λ€λ
μ κ·Έλ° κ² κ°μμ.\nνμSD2000002: κ·Έλμ λνκ΅ κ° μ΄νλ‘λ ν΄μΈμ¬νμ λκ² λ§μ΄ κ°μλλ° κ·Έμ€μμ μ μΌ κΈ° μ’μλ κ±°λ μ€νμΈμ΄λ ν¬λ₯΄ν¬κ°μ΄μκ±°λ μ.\nνμSD2000002: μ΄~ νΉμ ν¬λ₯΄ν¬κ°μ΄λ μ€νμΈ μ λ½ μͺ½ λ€λ
μ€μ μ μμΌμ κ°μ?\nνμSD2000001: μ΄~ λ€. μ λ μ°μ°ν μ€νμΈκ³Ό ν¬λ₯΄ν¬κ°μ λ€λ
μμμμ΅λλ€.\nνμSD2000001: μ΄~ μ λ μ€νμΈ μ€μμλ λ§λ리λμ κ·Όκ΅μ μμλ ν¨λ λλΌλ μ§μμ΄ κ΅μ₯ν μ’μλλ°μ. κ·Έ ν¨λ λμμ νΉν κΈ°μ΅μ λ¨μλ κ±°λ κ±°κΈ°μ λμ±λΉμ΄ μλλ° κ·Έ μ±λΉμ΄ μμ² νλ €νλλΌκ³ μ. κ·Έλμ κ±°κΈ°λ₯Ό κΎΈλ©°λ
Ό κ±°λ₯Ό 보면μ κΈμ μμ² λ§μ΄ μ¬μ©ν΄κ°μ§κ³ λκ² λΉ€μ§λΉ€μ§νκ³ μ’ μ±λΉμ λ³΄ν΅ μ’ μλ°νλ€λΌλ μΈμμ΄ μμλλ° μ~ μ΄λ κ² νλ €ν μ±λΉλ μꡬλλΌλ κ±°λ₯Ό μλ‘κ² μκ² λμμ΅λλ€.\nνμSD2000001: μ΄~ λ ν¨λ λμ μ§μ μμλ κ°μ΄ λ¨Ήμμλλ° μ~ μ΄λ¦μ μ§κΈ μ μκ°μ΄ λμ§λ μμ§λ§ κ΅μ₯ν λ¬λ¬νλ κ·Έλ° λμ νΈ μ’
λ₯μλλ° κ·Έ~ λμ νΈλ λ¨Ήκ³ κ·Έλ€μμ μ²μ²ν κ±Έμ΄ λ€λλ©΄μ μ£Όλ³ νκ²½λ λ³΄κ³ κ·Όκ΅ μ¬νλ§μ μ½κ° μλ°ν λ§μ΄ μμλ€κ³ μκ°μ ν©λλ€.\nνμSD2000001: μ΄~ λ λ¬Όλ‘ λ§λ리λλ κ΅μ₯ν μ’μλλ° μ λ½ μ¬νμ λ§μ΄ κ°μ
¨λ€κ³ ν΄μ νΉμ ν¨λ λλ κ°λ³Έ μ μ΄ μλμ?\nνμSD2000002: μ~ μ κ° ν¨λ λλ λ€λ
μλλ° μ λ μ΄μ μ¬ν μΌμ μ κΈΈκ² μ‘μμ ν¨λ λλ ν루λ₯Ό λ΄€λλ° λ κ·Έλ κ² λ무 λμ κΈ° λλ¬Έμ λ§μ΄ λ³΄μ§ λͺ»ν κ² κ°μμ.\nνμSD2000002: κ·Έλλ λ²μ€ κ΄κ΄λ²μ€λ₯Ό νκ³ κ³μ λμλ€λλ©΄μ μ΄μ λ΄λ¦¬λ λ°λ§λ€ κ΄κ΄μ ν μ μλ λ²μ€λ₯Ό νλλ°μ. κ·Έ λ²μ€λ₯Ό νκ³ μ 체λ₯Ό λ€ λ΄λ €μ λ³΄λ €κ³ νμ§λ§ λ μ¨κ° λ무 λμμ κΈλ°© κΈλ°© μ΄μ xx μ₯μλ‘ λμ΄κ°λ κ² κ° κ°μ΅λλ€.\nνμSD2000002: κ±°κΈ°λ μ΄μ κ³ λ λμλΌκ³ ν΄μ μ¬λλ€μ΄ λ§μ΄ μΆμ²ν κ±°μ λΉν΄μλ μ λ ν루λ₯Ό μ‘κΈ°μλ μ‘°κΈ λΆμ‘±ν μ¬νμ§λΌλ μκ°μ΄ λ€μκ³ \nνμSD2000002: μ€νλ € κ΄μ₯μμ μΌνμ νλ κ² λ κΈ°μ΅μ λ¨μ΅λλ€.\n\n[Question]\nμ ν΄μΈμ¬ν μ£Όμ μ λν λνλ₯Ό μμ½ν΄μ£ΌμΈμ."
message = [
{"role": "system", "content": PROMPT},
{"role": "user", "content": chat}
]
source = tokenizer.apply_chat_template(
message,
add_generation_prompt=True,
return_tensors="pt"
)
outputs = model.generate(
source.to(device),
max_new_tokens=1024,
eos_token_id=tokenizer.eos_token_id,
do_sample=False
)
summary = tokenizer.decode(outputs[0][source.shape[-1]:], skip_special_tokens=True).replace('\n',' ').replace(' ', ' ')
"""
>>> μ΄ λνμμ νμλ€μ μ¬ν κ²½νμ λν΄ μ΄μΌκΈ°νμ΅λλ€. SD2000001μ μ€νμΈκ³Ό ν¬λ₯΄ν¬κ°μ μ¬ννλ€κ³ λ§νμ΅λλ€. νΉν ν¨λ λμμ νλ €ν λμ±λΉκ³Ό μ§μ μμμ λ¨Ήμλ κ²½νμ 곡μ νμ΅λλ€. SD2000002λ λνκ΅ λλΆν° μ¬νμ μ’μνκ³ , κ³ λ±νκ΅ λλ μλ²μ§κ° μ§μ€ ν¨ν€μ§ μ¬νμ λ€λ
κΈ° λλ¬Έμ μ¬νμ ν₯λ―Έκ° μμλ€κ³ λ§νμ΅λλ€. λνκ΅ μ΄νλ‘λ μ€νμΈκ³Ό ν¬λ₯΄ν¬κ°μ μ¬ννλλ°, νΉν μ€νμΈμ΄ μ’μλ€κ³ λ§νμ΅λλ€. λ ν¨λ λλ λ€λ
μμ§λ§ λ μ¨κ° λ무 λμμ λ§μ΄ 보μ§λ λͺ»νλ€κ³ λ§νμ΅λλ€.
"""
Citation
@misc{exaone_sft_dcs,
title={EXAONE Daily Coversation Summarization Model},
author={Bong-Min Kim and Gyu-Min Park},
year={2024},
url={https://github.com/BM-K/2024-NIKL-DCS}
}
License
- Downloads last month
- 49