Kết quả — và vì sao KHÔNG nên dùng adapter này
Table with columns: Run, target, regression, format, latency| Run | target | regression | format | latency |
|---|
| (a) base + prompt ngây thơ | 0.000 | 0.7578 | 0.000 | 3173 ms |
| (b) base + prompt tối ưu | 0.765 | 0.7578 | 1.000 | 986 ms |
| (c) adapter này | 0.535 | 0.7556 | 0.990 | 1465 ms |
Cổng hồi quy: FAILED (target Δ = -0.230). Adapter thua chính base model khi base
được prompt tử tế, và còn chậm hơn 1,49×. Nó được công bố làm artefact của một thí
nghiệm có phán quyết âm, không phải làm model để dùng.
Nguyên nhân, đo được: adapter học được hình dạng JSON (format 0.99) và học được chép
tên sản phẩm (47/50 đúng), nhưng không học được bộ nhãn — 70% đầu ra intent nằm
ngoài từ vựng đóng 5 giá trị, so với 0% của baseline (b), vì prompt (b) liệt kê thẳng các
giá trị hợp lệ vào context. Trong 32 ca thua: intent sai 28, sentiment 23, urgency
21, product chỉ 2.
43% khoảng cách điểm chỉ là dấu tiếng Việt: adapter viết hỏi_thông_tin thay vì
hoi_thong_tin. Chấm lại sau khi bỏ dấu, (c) lên 0.635 còn (b) đứng yên 0.765.
Cấu hình huấn luyện
Table | |
|---|
| Base | unsloth/Qwen3.5-4B |
| Phần cứng | Colab Free Tesla T4 (14.6 GB), fp16 (Turing không có bf16) |
| LoRA | r=16, alpha=32, 12 lớp text-linear (không gắn vào vision tower) |
| Tham số huấn luyện | 32.464.896 |
| LR | 1e-4 (10× thang full fine-tune) |
| Batch hiệu dụng | 16 (per_device=1 × ) |
Dùng thử
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer
base = AutoModelForCausalLM.from_pretrained("unsloth/Qwen3.5-4B", dtype="float16",
device_map="auto")
model = PeftModel.from_pretrained(base, "kyanhhh/lab21-2A202601558-qwen35-triage-vi")
tok = AutoTokenizer.from_pretrained("kyanhhh/lab21-2A202601558-qwen35-triage-vi")
Nếu bạn thật sự cần phân loại triage tiếng Việt: dùng base model với prompt liệt kê từ
vựng thay vì adapter này. Nó chính xác hơn 0.230 điểm và nhanh hơn 1,49×.