BM-K's picture
Update README.md
cc161f2 verified
metadata
license: other
license_name: exaone
license_link: https://huggingface.co/LGAI-EXAONE/EXAONE-3.0-7.8B-Instruct/blob/main/LICENSE

2024-NIKL-DCS

ꡭ립ꡭ어원 AI 말평 일상 λŒ€ν™” μš”μ•½ 'λͺ¨λΈλ’€μ—μ‚¬λžŒμžˆμ–΄μš”' νŒ€

image

μ œμ•ˆλœ λͺ¨λΈμ€ 사전 ν›ˆλ ¨λœ μ–Έμ–΄ λͺ¨λΈ 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

exaone