ViT5-base fine-tuned for Vietnamese Abstractive News Summarization
Mô hình tóm tắt tin tức tiếng Việt (abstractive), fine-tune từ
VietAI/vit5-base trên tập
nam194/vietnews.
Đây không phải
VietAI/vit5-base-vietnews-summarization. Mô hình này được fine-tune độc lập trong khuôn khổ một đồ án tốt nghiệp, xuất phát từ checkpoint nềnVietAI/vit5-base.
Cách dùng
Yêu cầu transformers >= 5.0 (tokenizer dùng backend TokenizersBackend của v5).
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
MODEL_ID = "<username>/vit5-base-vietnews-summarization-finetuned"
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID)
model = AutoModelForSeq2SeqLM.from_pretrained(MODEL_ID)
article = "..." # bài báo tiếng Việt
inputs = tokenizer(
article,
return_tensors="pt",
truncation=True,
max_length=768,
)
outputs = model.generate(
**inputs,
num_beams=4,
max_new_tokens=128,
min_new_tokens=8,
no_repeat_ngram_size=3,
length_penalty=1.0,
early_stopping=True,
)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
Các tham số sinh ở trên đã được ghi sẵn trong generation_config.json, nên gọi
model.generate(**inputs) không truyền gì cũng cho kết quả tương đương.
Tiền xử lý đầu vào
Kết quả tốt nhất khi đầu vào được xử lý giống lúc huấn luyện:
- thay dấu gạch dưới
_(word segmentation của vietnews) bằng khoảng trắng - chuẩn hoá khoảng trắng thừa
- không thêm prefix nào (mô hình được huấn luyện với prefix rỗng)
- không tự thêm
</s>— tokenizer đã tự thêm - cắt nguồn ở 768 token, mục tiêu ở 128 token
Kết quả
Đánh giá một lần duy nhất trên split test (22.498 mẫu, không lấy mẫu con),
rouge_score 0.1.2, F1, thang 0–100, tắt stemmer (Porter stemmer chỉ dành cho
tiếng Anh).
| Metric | Điểm | KTC 95% (bootstrap, 10.000 lần) |
|---|---|---|
| ROUGE-1 | 37.80 | [37.59, 38.01] |
| ROUGE-2 | 20.05 | [19.85, 20.26] |
| ROUGE-L | 30.32 | [30.12, 30.53] |
Phân tầng theo độ dài bài báo
| Số token nguồn | n | ROUGE-1 | ROUGE-2 | ROUGE-L |
|---|---|---|---|---|
| ≤256 | 1.798 | 43.93 | 23.92 | 36.20 |
| 257–512 | 9.667 | 40.00 | 21.79 | 32.66 |
| 513–768 | 5.684 | 37.11 | 19.90 | 29.53 |
| >768 | 5.349 | 32.49 | 15.78 | 24.97 |
Chất lượng giảm rõ rệt với bài dài hơn 768 token, vì phần vượt quá bị cắt bỏ.
Huấn luyện
| Checkpoint nền | VietAI/vit5-base (rev 2209a38) |
| Dữ liệu | nam194/vietnews — train 99.134 / validation 22.184 / test 22.498 |
| Checkpoint chọn | checkpoint-9294 (epoch 3) |
| Epochs | 3 |
| Batch | 4 × 8 gradient accumulation = 32 |
| Optimizer | AdamW fused, β=(0.9, 0.999), ε=1e-8 |
| Learning rate | 3e-5, lịch tuyến tính, warmup 5% (465 bước) |
| Weight decay | 0.01 |
| Precision | bf16 |
| Grad clipping | 1.0 |
| Seed | 42 |
| Tham số | 225.950.976 |
| GPU | RTX 5060 Ti (16GB) |
Hàm mất mát là cross-entropy có trọng số theo token: tổng CE trên các token mục tiêu chia cho tổng số token mục tiêu trong toàn batch tích luỹ.
Checkpoint được chọn theo ROUGE-L trên validation. Split test chỉ được
dùng đúng một lần, cho đánh giá cuối cùng — không có quyết định nào về siêu
tham số, tiền xử lý, giải mã hay metric được đưa ra sau khi nhìn kết quả test.
Hạn chế
- Chỉ huấn luyện trên tin tức tiếng Việt; miền văn bản khác (hội thoại, pháp lý, y khoa) sẽ kém hơn đáng kể.
- Bài dài quá 768 token bị cắt, mất thông tin ở cuối bài.
- Mô hình abstractive nên có thể sinh ra chi tiết không có trong bài gốc (hallucination). Không dùng cho các tình huống cần độ chính xác sự kiện tuyệt đối mà không có người kiểm duyệt.
- Kế thừa các thiên lệch có trong dữ liệu tin tức nguồn.
Môi trường tham chiếu
python 3.12.3
torch 2.11.0+cu128
transformers 5.15.0
tokenizers 0.22.2