Skip to content

learningmapn/llm-finetuning

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LLM Fine-tuning Platform — Qwen2.5

🇻🇳 Tiếng Việt · 🇬🇧 English

Hệ thống fine-tuning LLM end-to-end cho Qwen2.5 (1.5B / 3B) với QLoRA, kèm web UI dark theme (song ngữ VI/EN) để quản lý dữ liệu, theo dõi training, và đánh giá mô hình. Chú ý: Khuyến nghị sử dụng máy có GPU khoẻ để thực hiện. Học thêm về LLM hoặc ủng hộ chúng tôi tại learningmap.net

Tính năng chính

  • Pipeline đầy đủ: ingest → validate → preprocess → tokenize → train (QLoRA) → eval → export.
  • Web UI dark theme: dashboard, dataset manager, training console, model registry, real-time logs/metrics qua WebSocket. Hỗ trợ song ngữ Tiếng Việt / English với toggle ngay trên topbar.
  • Backend FastAPI: REST + WebSocket, SQLite (dev) / PostgreSQL (prod-ready), background workers.
  • Training engine: HuggingFace Transformers + PEFT + TRL, hỗ trợ QLoRA 4-bit, gradient checkpointing, packing.
  • Hỗ trợ format dữ liệu: Alpaca, ShareGPT, ChatML, JSONL tự do với schema validator.
  • Tracking: loss/lr/grad_norm/throughput, eval metrics (perplexity, BLEU/ROUGE optional), checkpoint manager.

Cấu trúc dự án

LLMFinetuning/
├── backend/              # FastAPI + training engine
│   └── app/{api,core,data,training,services,models,schemas,db,websocket,utils}
├── frontend/             # React + Vite + Tailwind (dark + i18n VI/EN)
│   └── src/{pages,components,contexts,hooks,services,i18n}
├── configs/              # YAML training configs
├── data/                 # raw/processed/samples
├── outputs/              # checkpoints/adapters/logs
├── scripts/              # CLI tools (smoke_pipeline, train_cli, check_env)
└── docs/                 # tài liệu (VI mặc định, EN trong docs/en/)

Bắt đầu nhanh

⚠️ Stack training cần Python 3.12 (cũng hỗ trợ 3.10/3.11). PyTorch chưa hỗ trợ 3.13/3.14.

# 0. (Nếu chưa có) cài Python 3.12
brew install python@3.12              # macOS
# Ubuntu: sudo apt install python3.12 python3.12-venv python3.12-dev

# 1. Tạo venv và cài dependencies
cd backend
python3.12 -m venv .venv
source .venv/bin/activate              # Windows: .venv\Scripts\activate

# Upgrade pip
pip install --upgrade pip

# Install all dependencies
pip install -r requirements.txt

# 2. Khởi tạo DB và chạy backend
cp .env.example .env                   # đổi APP_API_TOKEN
python -m app.db.init_db
uvicorn app.main:app --reload --port 8000

# 3. Cài frontend (terminal khác)
cd frontend
npm install
npm run dev   # http://localhost:5173

Lần sau chỉ cần source backend/.venv/bin/activate rồi chạy lại bước 2/3.

Cách thay thế (Conda): xem docs/03_installation.md §3. Gặp lỗi Could not find a version that satisfies torch>=... ⇒ Python quá mới hoặc kiến trúc sai, xem mục 9 trong cùng file.

Tài liệu

Tài liệu 🇻🇳 Tiếng Việt 🇬🇧 English
Yêu cầu chức năng & phi chức năng docs/01_requirements.md docs/en/01_requirements.md
Kiến trúc tổng thể, sơ đồ component docs/02_architecture.md docs/en/02_architecture.md
Hướng dẫn cài đặt chi tiết docs/03_installation.md docs/en/03_installation.md
Hướng dẫn sử dụng web UI docs/04_user_guide.md docs/en/04_user_guide.md
API REST + WebSocket docs/05_api_reference.md docs/en/05_api_reference.md
Chi tiết QLoRA, hyperparameters docs/06_training_guide.md docs/en/06_training_guide.md
Training qua terminal (server transfer) docs/07_terminal_training.md docs/en/07_terminal_training.md

Bộ dữ liệu mẫu

Dataset Số mẫu Ngôn ngữ Config
data/samples/alpaca_vi_mini.json 50 🇻🇳 Tiếng Việt configs/qwen15b_vi.yaml
data/samples/alpaca_en_mini.json 50 🇬🇧 English configs/qwen15b_en.yaml
data/samples/alpaca_bilingual_mini.json 100 VI + EN xen kẽ configs/qwen15b_bilingual.yaml

Xem data/samples/README.md để biết tại sao tách riêng thường tốt hơn cho smoke test, và khi nào nên dùng bản song ngữ.

# Sinh lại dataset song ngữ (interleave VI/EN)
python scripts/make_bilingual.py

# Fine-tune nhanh trên mỗi dataset
python scripts/train_cli.py configs/qwen15b_vi.yaml --max-steps 50
python scripts/train_cli.py configs/qwen15b_en.yaml --max-steps 50
python scripts/train_cli.py configs/qwen15b_bilingual.yaml --max-steps 50

License

MIT

About

This is project for fintuning LLM using LoRA

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors