Một framework thử nghiệm để tinh chỉnh (fine-tune) các mô hình ngôn ngữ lớn, tập trung vào khả năng suy luận (reasoning) và tối ưu hóa sở thích (preference optimization). Dự án này tích hợp các kỹ thuật hiện đại như LoRA/QLoRA, DPO và GRPO để phục vụ mục đích nghiên cứu và học tập.
- PEFT (Parameter-Efficient Fine-Tuning): Hỗ trợ LoRA, QLoRA, DoRA.
- Preference Optimization: Tích hợp DPO (Direct Preference Optimization) và GRPO (Group Relative Policy Optimization).
- Reasoning Focus: Hỗ trợ xử lý các dataset suy luận như GSM8K, MetaMathQA.
- Performance: Tích hợp Flash Attention 2, gradient checkpointing.
- Đánh giá và giám sát toàn diện
- DeepSeek-R1 (2025): GRPO và căn chỉnh suy luận
- Bài báo QLoRA: Các phương pháp tốt nhất cho quantization 4-bit
- DoRA: Cải thiện phân rã trọng số
- DPO: Tối ưu hóa ưu tiên không cần reward
# Clone repository
git clone https://github.com/example/finetune.git
cd finetune
# Cài đặt dependencies
pip install -r requirements.txt
# Cài đặt package
pip install -e .python -m finetune.src sft --peft-method lora --use-reasoning-datapython -m finetune.src sft --peft-method qlora --batch-size 2python -m finetune.src dpo --beta 0.1python -m finetune.src grpo --learning-rate 5e-6python -m finetune.src pipeline --stages sft,dpofinetune/
├── src/
│ ├── configs/ # Các lớp cấu hình
│ ├── core/ # Chức năng cốt lõi
│ ├── data/ # Bộ xử lý dataset
│ ├── models/ # Tiện ích tải mô hình
│ ├── trainers/ # Triển khai huấn luyện
│ ├── utils/ # Các hàm tiện ích
│ └── cli/ # Giao diện dòng lệnh
├── tests/ # Kiểm thử đơn vị
├── docs/ # Tài liệu
├── scripts/ # Các kịch bản trợ giúp
└── configs/ # Các tệp cấu hình
Hệ thống sử dụng hệ thống cấu hình mô-đun với các lớp riêng biệt cho các khía cạnh khác nhau:
BaseConfig: Các thiết lập chungDataConfig: Cấu hình datasetPEFTConfig: Các thiết lập fine-tuning hiệu quả về tham sốTrainingConfig: Các siêu tham số huấn luyệnDPOTrainingConfig: Các thiết lập riêng cho DPOGRPOConfig: Các thiết lập riêng cho GRPO
from finetune.src import (
BaseConfig, DataConfig, PEFTConfig, TrainingConfig,
load_model_and_tokenizer, SFTTrainerWrapper
)
# Tạo cấu hình tùy chỉnh
base_config = BaseConfig(model_name="microsoft/Phi-3.5-mini-instruct")
data_config = DataConfig(use_reasoning_data=True, max_seq_length=2048)
peft_config = PEFTConfig(peft_method="lora", lora_r=64)
training_config = TrainingConfig(
num_train_epochs=5,
learning_rate=1e-4,
per_device_train_batch_size=2
)
# Tải mô hình và huấn luyện
model, tokenizer = load_model_and_tokenizer(base_config, peft_config, training_config)
trainer = SFTTrainerWrapper(model, tokenizer, base_config, data_config, training_config)
trainer.train()- Sử dụng QLoRA để tiết kiệm bộ nhớ: Quantization 4-bit giảm sử dụng bộ nhớ ~75%
- Bật Flash Attention 2: Tăng tốc 20-30% cho các thao tác attention
- Gradient checkpointing: Đổi tính toán lấy bộ nhớ để phù hợp với mô hình lớn hơn
- Độ chính xác hỗn hợp: Sử dụng bfloat16 trên phần cứng được hỗ trợ để huấn luyện nhanh hơn
Chúng tôi chào đón các đóng góp! Vui lòng xem Hướng dẫn Đóng góp để biết chi tiết.
Dự án này được cấp phép theo Giấy phép MIT - xem tệp LICENSE để biết chi tiết.
Nếu bạn sử dụng mã này trong nghiên cứu, vui lòng trích dẫn:
@misc{finetune2025,
title={Hệ thống Fine-tuning ML Chuyên nghiệp Nâng cao - Phiên bản 2025 Tối ưu},
author={Đội ngũ Fine-tuning ML},
year={2025},
url={https://github.com/example/finetune}
}