Qwen3-FineTuning-Playground是一个开源项目,它提供了一套完整的代码库,专门用于对Qwen3系列大语言模型进行微调。这个项目的基础是提供清晰、专业且容易扩展的微调代码示例,让开发者和研究人员可以方便地实践各种主流的微调技术。项目代码结构清晰,将不同功能模块化,例如监督微调、强化学习、知识蒸馏、推理等都存放在独立的目录中。所有的训练和推理脚本都支持通过命令行传递参数来配置,这意味着使用者不需要修改源代码就可以运行不同的实验。此外,项目还提供了多个详细的端到端教程,即便是初学者,也能按照文档说明,一步步完成从环境配置、数据准备到模型训练和推理的全过程。
機能一覧
- 多种监督微调方案 (SFT): 支持对模型进行全量参数微调,也支持使用LoRA(低秩适应)这类技术进行高效微调,以适应不同的硬件资源和训练需求。
- 强化学习对齐 (RL): 集成了多种基于人类反馈的强化学习算法,用于提升模型的对话质量和遵循指令的能力。
- PPO算法: 实现了经典的近端策略优化算法,通过奖励模型(RM)来指导模型学习。
- ORPO算法: 提供了一种无需额外奖励模型的高效偏好对齐算法,简化了训练流程。
- 训后优化技术:
- 知識の蒸留: 支持将一个更大、能力更强的教师模型(如Qwen3-4B)的知识迁移到一个更小的学生模型(如Qwen3-1.7B),以获得一个轻量但性能依然强大的模型。
- 模块化的代码结构: 项目将代码按照功能清晰地划分到不同目录,例如
Supervised_FineTuning
そしてRL_FineTuning
等,使代码易于理解和维护。 - 参数化运行脚本: 所有脚本都支持通过命令行参数进行配置,用户可以灵活地调整模型路径、数据集、输出目录等参数,而无需修改代码。
- 端到端示例教程で
example/
目录下提供了多个完整的实战教程,覆盖了从SFT到PPO的完整流程、ORPO的单步对齐、知识蒸馏以及特定领域的应用(如心理学多轮对话微调)。
ヘルプの使用
这个代码库提供了一个完整的流程,帮助你快速上手对Qwen3大模型进行微调。下面将以一个SFT-LoRA微调为例,详细介绍操作步骤。
1. 准备工作:克隆项目和配置环境
首先,你需要将项目代码从GitHub克隆到你的本地计算机,并进入项目目录。
git clone https://github.com/Muziqinshan/Qwen3-FineTuning-Playground.git
cd Qwen3-FineTuning-Playground
接下来是配置Python环境。为了避免与你系统中已有的库产生冲突,强烈建议使用conda
创建一个全新的独立环境。这个项目推荐使用Python 3.10版本。
# 创建一个名为 qwen3_ft 的新环境
conda create -n qwen3_ft python=3.10
# 激活这个新创建的环境
conda activate qwen3_ft
环境激活后,你需要安装项目所需的所有依赖库。项目根目录下的requirements.txt
文件已经列出了所有必需的库。运行以下命令进行安装:
pip install -r requirements.txt
2. 下载模型和准备数据
在微调之前,你需要准备好基础模型和用于训练的数据集。
ダウンロードモデル
本项目推荐使用modelscope
库从“魔搭”社区下载预训练好的Qwen3模型。modelscope
库在执行上一步pip install
命令时已经被安装。
运行以下命令来下载本项目示例中需要用到的两个基础模型:
# 下载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
カタログ
データの準備
本项目使用的数据有特定的JSON格式。在data/
目录下,提供了一个名为dirty_chinese_dpo.json
的示例文件,你可以参考它的格式来准备你自己的数据集。
3. 开始SFT-LoRA微调
一切准备就绪后,就可以开始训练了。下面的命令将启动一个监督微调(SFT)任务,并使用LoRA技术来提升效率。
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
--model_path
: 指定了我们刚刚下载的基础模型的路径。--dataset_path
: 指定了用于训练的数据集文件。--sft_adapter_output_dir
: 指定了训练完成后,LoRA适配器权重保存的目录。
训练过程会根据你的硬件性能持续一段时间。训练结束后,你会在./output/sft_adapter_demo
目录下找到生成的模型适配器文件。
4. 使用微调后的模型进行推理
模型训练完成后,最重要的一步就是验证它的效果。你可以运行下面的推理脚本,与你刚刚微调好的模型进行互动聊天。
python inference/inference_dirty_sft.py \
--model_path ./Qwen3/Qwen3-1.7B \
--adapter_path ./output/sft_adapter_demo \
--mode interactive
--model_path
: 同样是基础模型的路径。--adapter_path
: 指向我们上一步训练好的LoRA适配器所在的目录。--mode interactive
: 表示启动交互式聊天模式,你可以在命令行中直接输入问题与模型对话。
现在,你就可以测试模型在特定任务上的表现了。如果你想尝试其他微调方法,比如ORPO或知识蒸馏,可以参考example/
目录下的详细教程文档,步骤与此类似。
アプリケーションシナリオ
- 特定领域智能客服
可以将通用的Qwen3模型在特定行业的知识库(例如金融、医疗、法律)上进行微调,使其成为能够准确回答专业问题的智能客服机器人。项目中提供的SFT教程是实现这一场景的理想起点。 - 个性化内容创作助手
通过使用特定风格的文本数据(如某个作家的作品、特定风格的营销文案)对模型进行微调,可以创造出一个能够模仿该风格进行写作的助手,用于辅助内容创作、诗歌写作或广告文案生成。 - 模型轻量化与私有化部署
对于算力资源有限的场景,可以使用知识蒸馏功能,将一个大型模型(如Qwen3-4B)的能力迁移到一个小型模型(如Qwen3-1.7B)上。这样既能保留大部分性能,又能显著降低推理成本,便于在个人设备或边缘计算设备上进行私有化部署。 - 提升模型对话的安全性与一致性
可以使用强化学习方法(如PPO或ORPO),通过人类偏好数据对模型进行对齐,使其输出的回答更符合人类的价值观,减少有害或不当内容的生成,提升对话的可靠性和安全性。
品質保証
- 这个项目主要支持哪些Qwen3模型?
该项目主要基于Qwen3系列模型进行开发和测试,示例代码中直接提供了Qwen3-1.7B和Qwen3-4B的模型下载和使用方法。理论上,代码结构也兼容Qwen3系列的其他尺寸模型。 - 进行微调需要什么样的硬件配置?
硬件需求取决于你选择的微调方法和模型大小。对于SFT-LoRA微调Qwen3-1.7B这样的小模型,一张消费级的显卡(如NVIDIA 3090或4090)通常就足够了。但如果要进行全量微调或者训练更大的模型,则需要更多的显存和计算资源。 - ORPO和PPO微调有什么区别?
PPO是一种经典的强化学习算法,它需要一个独立的、预先训练好的奖励模型(Reward Model)来为模型的输出打分,训练流程相对复杂。而ORPO是一种更新的算法,它不需要额外的奖励模型,直接通过偏好数据对模型进行优化,流程更简单,效率更高。 - 我可以使用自己的数据集吗?
完全可以。你只需要将你的数据集整理成项目data/
目录下示例文件那样的JSON格式,然后在运行训练脚本时,通过--dataset_path
参数指定你的文件路径即可。