250 ticket CSKH tiếng Việt → JSON triage (split seed 42)
Train / val
225 / 25 (seed 42)
max_length
1024 (p95 thực = 98 token; 1024 để chừa headroom cho <think> trace dài)
MASK_MODE
assistant-only — supervise cả block <think> lẫn JSON phía sau
Epochs / max_steps
2 epochs / 30 optimizer steps
Optimizer / LR
AdamW, 1e-4 (chuẩn LoRA)
Ba baseline (đo TRƯỚC khi train)
Run
target
regression
format
latency (ms)
(a) base + naive prompt
0.000
0.758
0.000
3223.8
(b) base + optimized prompt
0.765
0.758
1.000
1016.5
(c) LoRA fine-tune
0.970
0.344
1.000
1443.4
Phán quyết: FAILED
Cổng bốn nhóm (target, regression, format, latency):
target Δ = +0.205 ✓ (vượt baseline (b))
regression Δ = −0.413 ✗ (tolerance 0.020; vượt 20× — đây là "general-capability regression")
format = 1.0 ✓
latency = 1443 ms (trong budget T4)
valid_trace_rate = 0.0 — sau khi train, model bỏ luôn block <think>
(dấu hiệu overfitting cục bộ).
Khuyến nghị từ deck §14.3: trộn 1–5 % dữ liệu replay
(data/eval_regression.jsonl) để giữ regression trong tolerance
trước khi deploy.
Bốn thí nghiệm NB4 (cấu hình sai — phân tích)
Run
vị trí
r
trainable
LR
train loss
target
s
VRAM GB
correct
text-linear
16
32,464,896
1e-4
0.6259
0.97
955
12.01
attn_only
q,v
283 (matched budget)
32,456,704
1e-4
0.538
0.97
809
12.02
wrong_lr
text-linear
16
32,464,896
1e-5
1.5704
0.00
949
12.01
qlora
text-linear
16
32,464,896
1e-4
0.7058
0.94
1020
7.09
Bài học:
Train loss là proxy nguy hiểm — attn_only thắng train-loss nhưng
bằng correct trên target. Memorize ≠ generalize.
LR 1e-5 giết training — loss đi xuống đều nhưng target = 0.00 sau 30 step.
QLoRA tiết kiệm 41 % VRAM (−5 GB), trả 3 % chất lượng (−0.03 target).
Vị trí adapter ≈ rank, ở ngân sách tham số bằng nhau — không có
"vị trí nào thắng" rõ ràng, cần eval độc lập.
Định tính (5 ca, có cả thắng lẫn thua)
6/50 ca eval target FT-thua (i ∈ {3, 5, 12, 39, 41, 46}) đều thua đúng
một trường: urgency, và thua theo cùng một cách — nhãn đúng là thap
nhưng model dự đoán trung_binh. Tất cả 6 ticket chứa cụm
"Khi nào tiện" ở cuối câu — đây là perfect predictor trong train
(35/250 mẫu, 100 % nhãn thap) nhưng model vẫn không học được quy tắc
này ở eval. Bias thống kê của SFT ít mẫu: model học prior
("chọn trung_binh khi không chắc") thay vì quy tắc cụ thể.
Adapter này không nên deploy ở trạng thái hiện tại. Target 0.97 là cải
thiện có ý nghĩa, nhưng regression 0.34 là "thảm hoạ deployment" — model
sẽ trả JSON sai schema khi khách hàng hỏi câu kiến thức phổ thông. Đòn
bẩy thật sự là chất lượng dữ liệu (thêm replay 1–5 %), không phải
vị trí adapter hay learning rate.
MSSV: 2A202601756 · Ngày nộp: 2026-08-22 · Tier: T4