Views
No views yet
tmu-nlp/thai_toxicity_tweetหมายเหตุ: โมเดลนี้ไม่ใช่ toxicity classifier — เป็นการ adapt model ให้เรียนรู้สไตล์และรูปแบบภาษาของ Thai toxic tweet
1import torch
2from transformers import AutoModelForCausalLM, AutoTokenizer
3from peft import PeftModel
4
5BASE_MODEL_ID = "typhoon-ai/typhoon-7b"
6ADAPTER_REPO = "Datchthana/typhoon-7b-thai-toxic-cpt"
7
8tokenizer = AutoTokenizer.from_pretrained(BASE_MODEL_ID)
9tokenizer.pad_token = tokenizer.eos_token
10
11model = AutoModelForCausalLM.from_pretrained(
12 BASE_MODEL_ID,
13 torch_dtype=torch.bfloat16,
14 device_map={"": 0}
15)
16model = PeftModel.from_pretrained(model, ADAPTER_REPO)
17model.eval()
18
19def generate(prompt, max_new_tokens=256, temperature=0.1, top_p=0.9):
20 inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
21 input_len = inputs["input_ids"].shape[1]
22 with torch.no_grad():
23 outputs = model.generate(
24 **inputs,
25 max_new_tokens=max_new_tokens,
26 temperature=temperature,
27 top_p=top_p,
28 do_sample=True,
29 pad_token_id=tokenizer.eos_token_id,
30 repetition_penalty=1.1
31 )
32 return tokenizer.decode(outputs[0][input_len:], skip_special_tokens=True)
33
34print(generate("รัฐบาลชุดนี้มัน..."))Tips: prompt ที่ค้างกลางประโยคหรือมี...ต่อท้ายจะได้ผลดีที่สุด
| Parameter | ค่า |
|---|---|
| Base Model | typhoon-ai/typhoon-7b |
| Method | QLoRA (4-bit NF4) |
| LoRA rank (r) | 16 |
| LoRA alpha | 32 |
| Target modules | q/k/v/o/gate/up/down proj |
| Epochs | 3 |
| Learning rate | 5e-5 |
| LR Scheduler | cosine |
| Warmup ratio | 0.1 |
| Effective batch size | 16 (batch=1 × accum=16) |
| Max length | 256 tokens |
| Optimizer | paged_adamw_8bit |
| Framework | transformers + peft + trl |
| Epoch | Train Loss | Eval Loss | Token Accuracy |
|---|---|---|---|
| 1 | 3.551 | 3.563 | 37.68% |
| 2 | 3.210 | 3.321 | 40.67% |
| 3 | 3.093 | 3.302 | 40.95% |