本项目系统性地对比了四种主流的大语言模型微调方法:
- 基础LoRA微调 - 低秩适配
- QLoRA 4bit微调 - 量化低秩适配
- DoRA微调 - 权重分解低秩适配
- 全参数微调 - 传统完整微调
- 比较不同微调方法的训练效率
- 分析内存使用和计算资源消耗
- 评估模型性能和质量
- 提供实践指导和建议
fine_tuning_comparison/ ├── configs/ # 配置文件 │ ├── lora.yaml # 基础LoRA配置 │ ├── qlora.yaml # QLoRA 4bit配置 │ ├── dora.yaml # DoRA配置 │ └── full_finetune.yaml # 全参数微调配置 ├── scripts/ # 执行脚本 │ ├── run_all_experiments.py # 运行所有实验 │ ├── run_single_experiment.py # 运行单个实验 │ └── visualize_results.py # 结果可视化 ├── utils/ # 工具模块 │ ├── trainer.py # 高级训练器 │ ├── evaluator.py # 模型评估 │ └── data_processor.py # 数据处理 ├── data/ # 训练数据 ├── results/ # 实验结果 ├── tests/ # 单元测试 ├── logs/ # 训练日志 ├── README.md ├── requirements.txt ├── setup.py └── .gitignore
- Python 3.8+
- GPU with CUDA support (推荐)
- 至少16GB RAM
pip install -r requirements.txt
2. 准备数据
bash
# 自动创建示例数据
python -c "from utils.data_processor import DataProcessor; DataProcessor.create_sample_data()"
3. 运行所有实验
bash
python scripts/run_all_experiments.py
4. 运行单个实验
bash
# 基础LoRA
python scripts/run_single_experiment.py configs/lora.yaml "基础LoRA微调"
# QLoRA 4bit
python scripts/run_single_experiment.py configs/qlora.yaml "QLoRA 4bit微调"
# DoRA
python scripts/run_single_experiment.py configs/dora.yaml "DoRA微调"
# 全参数微调
python scripts/run_single_experiment.py configs/full_finetune.yaml "全参数微调"
5. 可视化结果
bash
python scripts/visualize_results.py
📊 评估指标
指标 说明 测量方法
推理速度 Token生成速度 tokens/秒
内存使用 GPU内存占用 GB
生成质量 内容相关性 关键词匹配评分
训练时间 完整训练时长 分钟
参数效率 可训练参数比例 %
🔧 配置说明
基础LoRA配置
yaml
lora_config:
r: 16 # 秩
lora_alpha: 32 # Alpha参数
target_modules: [...] # 目标模块
QLoRA配置
yaml
quantization_config:
load_in_4bit: true # 4bit量化
bnb_4bit_quant_type: "nf4"
DoRA配置
yaml
lora_config:
use_dora: true # 启用DoRA
📈 结果分析
运行完成后查看:
results/comparison_results_*.json - 详细对比数据
results/comparison_charts.png - 可视化图表
各方法对应的模型文件和训练日志
预期结果对比
方法 训练速度 内存使用 生成质量 适用场景
LoRA ⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐ 资源受限
QLoRA ⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐ 极低资源
DoRA ⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐⭐ 高质量要求
全参数 ⭐⭐ ⭐⭐ ⭐⭐⭐⭐⭐ 充足资源
🛠️ 开发指南
添加新的微调方法
在 configs/ 创建新的配置文件
在 utils/trainer.py 中添加对应的处理逻辑
更新实验脚本
运行测试
bash
python -m pytest tests/ -v
代码结构
python
# 核心类说明
AdvancedFineTuner # 高级训练器
ModelEvaluator # 模型评估器
DataProcessor # 数据处理器
🔍 技术细节
资源监控
实时监控CPU/GPU使用率
训练过程内存跟踪
损失曲线记录
模型选择
默认使用 Qwen2.5-1.5B,可修改配置使用其他模型:
yaml
model_name: "Qwen/Qwen2.5-1.5B" # 可替换为其他模型
🤝 贡献指南
Fork 本项目
创建特性分支
提交更改
推送到分支
创建Pull Request
📄 许可证
MIT License
🙏 致谢
Hugging Face Transformers
PEFT Library
Qwen Team