Quiet-STAR Qwen2.5-3B

โมเดลนี้เป็นการนำ Qwen2.5-3B มาต่อยอดด้วยเทคนิค Quiet-STAR (Language Models Can Teach Themselves to Think Before Speaking) ซึ่งเป็นกลไกที่สอนให้โมเดลภาษาขนาดใหญ่ (LLMs) สามารถสร้าง "ความคิด" (Rationales/Thoughts) ภายในก่อนที่จะทำนายโทเคนถัดไปออกมา

กระบวนการคิดของโมเดลถูกเทรนด้วย REINFORCE algorithm เพื่อให้โมเดลเรียนรู้ด้วยตัวเองว่าความคิดแบบไหนที่ช่วยปรับปรุงความแม่นยำในการทำนาย โดยไม่ต้องอาศัยข้อมูลที่มี Label เฉพาะเจาะจง (Task-specific labels)

รายละเอียดโมเดล (Model Details)

  • Base Model: Qwen/Qwen2.5-3B
  • Architecture: Qwen2 architecture ที่ถูกปรับแต่งให้รองรับ Tokenwise parallel thought generation (Gumbel-Softmax) และ Mixing heads
  • Training Dataset: HuggingFaceFW/fineweb-edu (ชุดข้อมูลคุณภาพสูงสำหรับการศึกษา ซึ่งมีโครงสร้างการอธิบายและให้เหตุผลแฝงอยู่)
  • Language: English
  • License: Apache 2.0

กลไกการทำงาน (How it works)

ในระหว่างการสร้างข้อความ โมเดลจะแทรกโทเคนพิเศษ <|startthought|> และ <|endthought|> ออกมา ภายในโทเคนเหล่านี้คือกระบวนการประมวลผลความคิด (Thought tokens) ซึ่งโมเดลจะนำผลลัพธ์จากความคิดมาผสมรวม (Mix) กับ Base logits เพื่อตัดสินใจเลือกคำตอบสุดท้ายที่ดีที่สุด

ข้อควรระวัง: ในการใช้งานปกติ (Inference) ควรทำการ Mask หรือข้ามโทเคนความคิดเหล่านี้เพื่อให้ได้ผลลัพธ์ที่สะอาด (Clean output)

การใช้งาน (How to Get Started)

คุณต้องใช้สคริปต์ที่กำหนดสถาปัตยกรรมเฉพาะของ Quiet-STAR ในการโหลดโมเดล สามารถดูตัวอย่างการเรียกใช้งานได้ดังนี้:

import torch
from transformers import AutoTokenizer
from config import QuietStarConfig
from modeling_quiet_star import QuietStarQwen2ForCausalLM

model_path = "your-username/quiet-star-qwen2.5-3b" # เปลี่ยนเป็นชื่อ Repo ของคุณ

# 1. โหลด Tokenizer
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
tokenizer.padding_side = "left"

# 2. โหลด Model
config = QuietStarConfig.from_pretrained(model_path)
model = QuietStarQwen2ForCausalLM.from_pretrained(
    model_path,
    config=config,
    torch_dtype=torch.bfloat16,
    device_map="cuda",
    attn_implementation="sdpa"
)

# 3. กำหนดค่าโหมด Inference
model.n_ahead = 1
model.n_ahead_talk = 1
model.n_passes = 1
model.original_mode = False
model.tokenizer = tokenizer

if "<|startthought|>" in tokenizer.get_vocab():
    model.start_token_id = tokenizer.convert_tokens_to_ids("<|startthought|>")
if "<|endthought|>" in tokenizer.get_vocab():
    model.end_token_id = tokenizer.convert_tokens_to_ids("<|endthought|>")

model.eval()

# 4. ทดสอบสร้างข้อความ
prompt = "What is the capital of France?"
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)

# Suppress thought tokens for clean output
suppress_tokens = [model.start_token_id, model.end_token_id]

with torch.no_grad():
    output_ids = model.generate(
        **inputs,
        max_new_tokens=100,
        temperature=0.7,
        suppress_tokens=suppress_tokens
    )

generated_text = tokenizer.decode(output_ids[0, inputs["input_ids"].shape[1]:], skip_special_tokens=True)
print(generated_text)
Downloads last month
9
Safetensors
Model size
3B params
Tensor type
BF16
·
Video Preview
loading

Model tree for Phonsiri/Qwen2.5-3b-Quiet

Base model

Qwen/Qwen2.5-3B
Finetuned
(368)
this model

Dataset used to train Phonsiri/Qwen2.5-3b-Quiet

Paper for Phonsiri/Qwen2.5-3b-Quiet