Qwen3-1.7B News Event Extraction Model

์ด ๋ชจ๋ธ์€ Qwen/Qwen3-1.7B๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ๊ตญ์–ด ๋‰ด์Šค ํ…์ŠคํŠธ ๋ถ„์„ ๋ฐ ์ด๋ฒคํŠธ ์ถ”์ถœ์„ ์œ„ํ•ด LoRA ๋ฐฉ์‹์œผ๋กœ ํŒŒ์ธํŠœ๋‹๋œ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค.

โœจ ๋ชจ๋ธ ๊ธฐ๋Šฅ

  • ๋‰ด์Šค ์นดํ…Œ๊ณ ๋ฆฌ ๋ถ„๋ฅ˜: ๋ถ€๋™์‚ฐ, ์‚ฐ์—…, ์˜คํ”ผ๋‹ˆ์–ธ, ์ฆ๊ถŒ ์นดํ…Œ๊ณ ๋ฆฌ๋กœ ๋ถ„๋ฅ˜
  • ํ•ต์‹ฌ ์ด๋ฒคํŠธ ์ถ”์ถœ: ๋‰ด์Šค ํ…์ŠคํŠธ์—์„œ ์ฃผ์š” ์ด๋ฒคํŠธ๋“ค์„ ์ถ”์ถœ
  • ๊ตฌ์กฐํ™”๋œ ์ถœ๋ ฅ: Python dictionary ํ˜•์‹์œผ๋กœ ๊ฒฐ๊ณผ ์ œ๊ณต

์‚ฌ์šฉ๋ฒ•

๊ธฐ๋ณธ ์„ค์ •

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
import json

# ๋ชจ๋ธ ๋ฐ ํ† ํฌ๋‚˜์ด์ € ๋กœ๋“œ
repo_id = "sogm1/qwen3-1.7b-news-event-merged"
tokenizer = AutoTokenizer.from_pretrained(repo_id)
model = AutoModelForCausalLM.from_pretrained(
    repo_id,
    torch_dtype="auto",
    device_map="auto"
).eval()

์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ

system_prompt = """๋‹น์‹ ์€ ๋‰ด์Šค ํ…์ŠคํŠธ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ๋ถ„๋ฅ˜ํ•˜๊ณ  ์ฃผ์š” ํ•ต์‹ฌ ์ด๋ฒคํŠธ๋“ค์„ ์ถ”์ถœํ•˜๋Š” ์ „๋ฌธ ๋ถ„์„ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค.
์ฃผ์–ด์ง„ ํ…์ŠคํŠธ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ๋ฐ˜๋“œ์‹œ ํŒŒ์ด์ฌ์˜ dictionary ํ˜•์‹์œผ๋กœ ๊ฒฐ๊ณผ๋ฅผ ์ž‘์„ฑํ•˜์‹ญ์‹œ์˜ค.

๋ถ„์„ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ ํ˜•์‹์œผ๋กœ ์ž‘์„ฑํ•˜์‹ญ์‹œ์˜ค:

๋‹ต๋ณ€:
{"category": "['๋ถ€๋™์‚ฐ', '์‚ฐ์—…', '์˜คํ”ผ๋‹ˆ์–ธ', '์ฆ๊ถŒ'] ์ค‘ ํ•˜๋‚˜",
"event_count": "ํ•ต์‹ฌ ์ด๋ฒคํŠธ ๊ฐœ์ˆ˜(์ •์ˆ˜)",
"events": ["์ด๋ฒคํŠธ1", "์ด๋ฒคํŠธ2", ...]}"""

ineference

def generate_analysis(model, tokenizer, text, system_prompt):
    messages = [
        {"role": "system", "content": system_prompt},
        {"role": "user", "content": f"๋‹ค์Œ ๋‰ด์Šค ํ…์ŠคํŠธ๋ฅผ ๋ถ„์„ํ•ด์ฃผ์„ธ์š”:\n\n{text}"}
    ]
    
    prompt_text = tokenizer.apply_chat_template(
        messages,
        tokenize=False,
        add_generation_prompt=True,
        enable_thinking=False
    )
    
    inputs = tokenizer([prompt_text], return_tensors="pt").to(model.device)
    
    with torch.no_grad():
        generated_ids = model.generate(
            **inputs,
            max_length=8192,
            temperature=0.5,
            top_p=1.0,
            do_sample=False
        )
    
    output_ids = generated_ids[0][len(inputs.input_ids[0]):]
    decoded_output = tokenizer.decode(output_ids, skip_special_tokens=True).strip()
    
    return decoded_output

์‚ฌ์šฉ์˜ˆ์‹œ

# ์ƒ˜ํ”Œ ๋‰ด์Šค ํ…์ŠคํŠธ
news_text = """
์‚ผ์„ฑ์ „์ž๊ฐ€ 3๋ถ„๊ธฐ ์‹ค์  ๋ฐœํ‘œ์—์„œ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ˜๋„์ฒด ๋ถ€๋ฌธ์˜ ํšŒ๋ณต์„ธ๋ฅผ ๋ณด๊ณ ํ–ˆ๋‹ค. 
ํšŒ์‚ฌ๋Š” D๋žจ ๊ฐ€๊ฒฉ์ด ์ „๋ถ„๊ธฐ ๋Œ€๋น„ 15% ์ƒ์Šนํ–ˆ์œผ๋ฉฐ, ๋‚ธ๋“œํ”Œ๋ž˜์‹œ ์ถœํ•˜๋Ÿ‰๋„ 20% ์ฆ๊ฐ€ํ–ˆ๋‹ค๊ณ  ๋ฐํ˜”๋‹ค.
ํŠนํžˆ AI ์„œ๋ฒ„์šฉ ๊ณ ๋Œ€์—ญํญ๋ฉ”๋ชจ๋ฆฌ(HBM) ๋งค์ถœ์ด ์ „๋…„ ๋™๊ธฐ ๋Œ€๋น„ 300% ๊ธ‰์ฆํ•˜๋ฉด์„œ ์‹ค์  ๊ฐœ์„ ์„ ๊ฒฌ์ธํ–ˆ๋‹ค.
"""

# ๋ถ„์„ ์‹คํ–‰
result = generate_analysis(model, tokenizer, news_text, system_prompt)

# ๊ฒฐ๊ณผ ํŒŒ์‹ฑ ๋ฐ ์ถœ๋ ฅ
if "๋‹ต๋ณ€:" in result:
    json_part = result.split("๋‹ต๋ณ€:")[-1].strip()
    parsed_result = json.loads(json_part)
    
    print(f" ์นดํ…Œ๊ณ ๋ฆฌ: {parsed_result['category']}")
    print(f" ์ด๋ฒคํŠธ ๊ฐœ์ˆ˜: {parsed_result['event_count']}")
    print("์ด๋ฒคํŠธ ๋ชฉ๋ก:")
    for i, event in enumerate(parsed_result['events'], 1):
        print(f"   {i}. {event}")

์ถœ๋ ฅ์˜ˆ์‹œ

 ์นดํ…Œ๊ณ ๋ฆฌ: ์‚ฐ์—…
 ์ด๋ฒคํŠธ ๊ฐœ์ˆ˜: 3
 ์ด๋ฒคํŠธ ๋ชฉ๋ก:
   1. D๋žจ ๊ฐ€๊ฒฉ์ด ์ „๋ถ„๊ธฐ ๋Œ€๋น„ 15% ์ƒ์Šน
   2. ๋‚ธ๋“œํ”Œ๋ž˜์‹œ ์ถœํ•˜๋Ÿ‰์ด 20% ์ฆ๊ฐ€
   3. HBM ๋งค์ถœ์ด ์ „๋…„ ๋™๊ธฐ ๋Œ€๋น„ 300% ๊ธ‰์ฆ
Downloads last month
11
Safetensors
Model size
1.72B params
Tensor type
BF16
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for sogm1/qwen3-1.7b-news-event-merged

Finetuned
Qwen/Qwen3-1.7B
Finetuned
(287)
this model