一个包含了多种主流大模型微调方案的实战代码库,基于Qwen3系列模型,旨在提供清晰、专业、易于扩展的微调示例。
- 多种微调方案: 涵盖了从监督微调到强化学习的多种主流技术。
- 监督微调 (SFT): 全量微调与LoRA高效微调。
- 强化学习 (RL):
- PPO: 经典的基于奖励模型的强化学习。
- ORPO: 无需奖励模型的高效偏好对齐算法。
- 训后优化技术:
- 知识蒸馏: 将大模型能力迁移到小模型。
- 专业化代码结构:
- 模块化设计: 所有代码按功能清晰划分,易于理解和维护。
- 完全参数化: 所有脚本均可通过命令行参数配置,无需修改代码即可运行。
- 详细教程: 提供从0到1的示例教程,带你走完每个微调流程。
- 新增实验:心理学多轮对话(PsyDT)
- 基于开源心理学对话数据集,提供 SFT-LoRA 训练与推理示例
- 数据集: PsyDTCorpus
- 文档:
example/SFT_PSYDT/README.md
Qwen3-FineTuning-Playground/
├── 📂 Supervised_FineTuning/ # 监督微调 (SFT) 脚本
├── 📂 RL_FineTuning/ # 强化学习微调脚本
│ ├── 📂 PPO/
│ ├── 📂 ORPO/
│ └── 📂 GRPO/ (待实现)
├── 📂 Post_Training/ # 训后优化技术脚本
│ └── 📂 Distillation/
├── 📂 data/ # 数据集和处理脚本
├── 📂 inference/ # 推理脚本
├── 📂 scripts/ # 辅助脚本 (如合并权重)
├── 📂 evaluation/ # 评测脚本
├── 📂 example/ # 详细的端到端教程文档
├── 📄 .gitignore
├── 📄 LICENSE # 开源协议
├── 📄 requirements.txt # 项目依赖
└── 📄 README.md # 就是你正在看的这个文件
下面将引导你快速跑通一个完整的SFT-LoRA微调流程。
git clone https://github.com/Muziqinshan/Qwen3-FineTuning-Playground.git
cd Qwen3-FineTuning-Playground我们强烈建议使用 conda 创建一个独立的Python环境。
conda create -n qwen3_ft python=3.10
conda activate qwen3_ft
pip install -r requirements.txt-
模型: 本项目推荐使用
modelscope库从魔搭社区下载模型。requirements.txt已包含modelscope库。运行以下命令下载本项目所需的基础模型:
# 下载Qwen3-1.7B (主要用于SFT, ORPO, PPO等微调) modelscope download --model Qwen/Qwen3-1.7B --local_dir ./Qwen3/Qwen3-1.7B # 下载Qwen3-4B (主要用作知识蒸馏的教师模型) modelscope download --model Qwen/Qwen3-4B --local_dir ./Qwen3/Qwen3-4B
下载完成后,模型文件将分别位于
./Qwen3/Qwen3-1.7B和./Qwen3/Qwen3-4B目录下。 -
数据: 本项目使用的数据格式已在
data/目录中提供示例dirty_chinese_dpo.json。
运行以下命令启动SFT训练。
python Supervised_FineTuning/train_sft_dirty.py \
--model_path ./Qwen3/Qwen3-1.7B \
--dataset_path data/dirty_chinese_dpo.json \
--sft_adapter_output_dir ./output/sft_adapter_demo训练完成后,LoRA适配器将保存在 ./output/sft_adapter_demo 目录下。
使用我们刚刚训练好的LoRA适配器进行交互式聊天。
python inference/inference_dirty_sft.py \
--model_path ./Qwen3/Qwen3-1.7B \
--adapter_path ./output/sft_adapter_demo \
--mode interactive我们为每种主流的微调技术都提供了详细的端到端教程,请查阅 example/ 目录下的文档:
欢迎任何形式的贡献!如果你有新的想法、修复了Bug或者想要添加新的微调方法,请随时提交Pull Request。
- Fork本仓库
- 创建你的新分支 (
git checkout -b feature/YourAmazingFeature) - 提交你的改动 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/YourAmazingFeature) - 创建一个Pull Request
- 感谢 Qwen Team 提供了如此强大的开源模型。
- 感谢 Hugging Face 生态提供的
transformers,peft,trl等优秀工具库。 - 数据集:
- 骂人数据集:btfChinese-DPO-small
- 心理学数据集:PsyDTCorpus
本项目采用 Apache 2.0 license 开源协议。