Single SFT round (R8). Strongest single-adapter ThaiExam.
Base model: Qwen/Qwen3-8B
Adapter type: LoRA (r=16, α=32, target_modules = q,k,v,o,gate,up,down_proj)
Training recipe: Continue SFT from v1 on Kanitakorn + Wangchan + Thai academic synth (8143 records, 2 epochs, LR 1e-5)
This adapter was produced via LoRA SFT on Qwen3-8B with a multi-round corpus mix:
1from transformers import AutoTokenizer, AutoModelForCausalLM
2from peft import PeftModel
3import torch
4
5base_id = "Qwen/Qwen3-8B"
6adapter_id = "Jnx03/kanitakorn-qwen3-8b-sft-v8"
7
8tok = AutoTokenizer.from_pretrained(base_id, trust_remote_code=True)
9model = AutoModelForCausalLM.from_pretrained(base_id, torch_dtype=torch.bfloat16, device_map="auto", trust_remote_code=True)
10model = PeftModel.from_pretrained(model, adapter_id)
11model = model.merge_and_unload()
12model.eval()
13
14messages = [
15 {"role": "system", "content": "คุณเป็นผู้ช่วยภาษาไทย"},
16 {"role": "user", "content": "อธิบายหลักการของอัตราการเร่งในวิชาฟิสิกส์"}
17]
18text = tok.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
19inputs = tok(text, return_tensors="pt").to(model.device)
20out = model.generate(**inputs, max_new_tokens=512, do_sample=False)
21print(tok.decode(out[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))
1@misc{kanitakorn2026,
2 title = {Kanitakorn: Thai-Optimized Qwen3-8B via Multi-Round LoRA SFT + Task-Arithmetic Merging},
3 author = {Jnx03},
4 year = {2026},
5 publisher = {HuggingFace},
6 url = {https://huggingface.co/Jnx03/kanitakorn-qwen3-8b-sft-v8}
7}