YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
ViClickbait-2025 – Vietnamese Clickbait Detection
Phân lớp clickbait tiếng Việt trên dataset ViClickbait-2025 (3.414 tin tức). Baseline: PhoBERT · Model chính: openai/gpt-oss-20b (LoRA + BF16)
Cấu trúc dự án
scripts/
├── prepare_data.py ← Chia split 80/10/10 stratified, tạo cột text
├── train_phobert.py ← Fine-tune PhoBERT baseline
├── train_gpt_oss_20b.py ← Fine-tune openai/gpt-oss-20b với LoRA SFT
└── compare_results.py ← So sánh kết quả 2 model
run_all.sh ← Chạy toàn bộ pipeline 1 lệnh
data/splits/ ← train.csv / val.csv / test.csv (tự sinh)
outputs/
├── phobert/ ← Checkpoint + test_results.json
└── gpt20b/ ← LoRA adapter + test_results.json
Dataset
| Nguồn | Mendeley Data – 3wc46bfcjc |
| Tổng mẫu | 3.414 tin tức tiếng Việt |
| Nhãn | non-clickbait (2349) / clickbait (1065) |
| Split | Train 2.731 / Val 341 / Test 342 (stratified 80/10/10) |
| Text input | title [SEP] lead_paragraph |
Cài đặt
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
Chạy nhanh – Toàn bộ pipeline
# Đặt đường dẫn CSV
export CSV_PATH=/tmp/dataset_nlp/clickbait_dataset_vietnamese.csv
# Full pipeline: PhoBERT + GPT-OSS-20B + So sánh
bash run_all.sh
# Chỉ PhoBERT (nếu GPU nhỏ)
bash run_all.sh --skip_gpt
Demo Streamlit (PhoBERT + GPT-OSS-20B local)
A. Clone repo tu Hugging Face
git clone https://huggingface.co/minhy112/ViClickbait-2025
cd ViClickbait-2025
Neu repo private/gated:
git clone https://user:HF_TOKEN@huggingface.co/minhy112/ViClickbait-2025
cd ViClickbait-2025
B. Tao moi truong va cai dat dependencies
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install torchvision
C. Khoi chay demo tren server/Vast
export HF_TOKEN=your_hf_token
export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True
streamlit run streamlit_app.py \
--server.address 0.0.0.0 \
--server.port 8501 \
--server.fileWatcherType none
D. Mo demo tren Mac local
Neu port 8501 da mo public, co the mo truc tiep:
http://SERVER_IP:8501
Khuyen nghi dung SSH tunnel:
ssh -N -p SSH_PORT root@SERVER_IP -L 8501:localhost:8501
Sau do mo tren Mac:
http://localhost:8501
Neu muon map sang cong local khac:
ssh -N -p SSH_PORT root@SERVER_IP -L 8080:localhost:8501
Mo:
http://localhost:8080
E. Cau hinh trong app
- PhoBERT path mac dinh:
outputs/phobert/checkpoint-430 - GPT base model id mac dinh:
openai/gpt-oss-20b - GPT adapter path mac dinh:
outputs/gpt20b/checkpoint-430 - GPT score hien thi dang xac suat 0-1 (softmax tren 2 log-score)
- Co the nap sample nhanh tu
data/splits/test.csv
F. Troubleshooting nhanh
- Loi CUDA out of memory:
pkill -f "streamlit run streamlit_app.py" || true
pkill -f "python.*streamlit_app.py" || true
nvidia-smi
Sau do chay lai lenh Streamlit o buoc C.
- Loi model dang nam o CPU/GPU khac nhau:
- Ban code hien tai da ep GPT len cung 1 GPU de tranh mismatch.
- Khong load duoc base model GPT:
- Them
HF_TOKENhop le neu model bi gated.
- Khong vao duoc web tu Mac:
- Kiem tra dung SSH port cua Vast.
- Kiem tra tunnel dang mo va khong bi xung dot cong local.
G. Push thay doi len Hugging Face repo
git add README.md streamlit_app.py requirements.txt
git commit -m "Add Streamlit local demo for PhoBERT + GPT-OSS-20B and setup docs"
git push
Chạy từng bước
1. Chuẩn bị dữ liệu
python3 scripts/prepare_data.py \
--csv /tmp/dataset_nlp/clickbait_dataset_vietnamese.csv \
--out_dir data/splits
2. Huấn luyện PhoBERT baseline
python3 scripts/train_phobert.py \
--data_dir data/splits \
--output_dir outputs/phobert \
--model_name vinai/phobert-base-v2 \
--batch_size 32 --lr 2e-5 --epochs 10 \
--patience 5
3. Huấn luyện GPT-OSS-20B (LoRA SFT)
python3 scripts/train_gpt_oss_20b.py \
--data_dir data/splits \
--output_dir outputs/gpt20b \
--batch_size 4 --grad_accum 8 \
--lr 2e-5 --epochs 10 \
--patience 3 --lora_r 32 --lora_alpha 64
4. So sánh kết quả
python3 scripts/compare_results.py \
--phobert_dir outputs/phobert \
--gpt_dir outputs/gpt20b
Thông số kỹ thuật
| PhoBERT | GPT-OSS-20B | |
|---|---|---|
| Model | vinai/phobert-base-v2 |
openai/gpt-oss-20b |
| Phương pháp | Full fine-tune (SeqCls) | LoRA SFT (Generative, BF16) |
| LoRA | Không | r=32, alpha=64 |
| VRAM cần | ~4 GB | ~40 GB (BF16) |
| Batch hiệu quả | 32 | 32 (4 × grad_accum 8) |
| LR | 2e-5 | 2e-5 |
| Epochs (max) | 10 | 10 |
| Optimizer | AdamW | AdamW |
| Metrics | Accuracy, F1, Precision, Recall | ← như nhau |
| Early stopping | patience=5 | patience=3 |
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support