Overseas access: www.kdjingpai.com
Bookmark Us

Qwen3-FineTuning-Playground是一个开源项目,它提供了一套完整的代码库,专门用于对Qwen3系列大语言模型进行微调。这个项目的基础是提供清晰、专业且容易扩展的微调代码示例,让开发者和研究人员可以方便地实践各种主流的微调技术。项目代码结构清晰,将不同功能模块化,例如监督微调、强化学习、知识蒸馏、推理等都存放在独立的目录中。所有的训练和推理脚本都支持通过命令行传递参数来配置,这意味着使用者不需要修改源代码就可以运行不同的实验。此外,项目还提供了多个详细的端到端教程,即便是初学者,也能按照文档说明,一步步完成从环境配置、数据准备到模型训练和推理的全过程。

Function List

  • 多种监督微调方案 (SFT): 支持对模型进行全量参数微调,也支持使用LoRA(低秩适应)这类技术进行高效微调,以适应不同的硬件资源和训练需求。
  • 强化学习对齐 (RL): 集成了多种基于人类反馈的强化学习算法,用于提升模型的对话质量和遵循指令的能力。
    • PPO算法: 实现了经典的近端策略优化算法,通过奖励模型(RM)来指导模型学习。
    • ORPO算法: 提供了一种无需额外奖励模型的高效偏好对齐算法,简化了训练流程。
  • 训后优化技术:
    • Knowledge Distillation: 支持将一个更大、能力更强的教师模型(如Qwen3-4B)的知识迁移到一个更小的学生模型(如Qwen3-1.7B),以获得一个轻量但性能依然强大的模型。
  • 模块化的代码结构: 项目将代码按照功能清晰地划分到不同目录,例如Supervised_FineTuning,RL_FineTuning等,使代码易于理解和维护。
  • 参数化运行脚本: 所有脚本都支持通过命令行参数进行配置,用户可以灵活地调整模型路径、数据集、输出目录等参数,而无需修改代码。
  • 端到端示例教程: Inexample/目录下提供了多个完整的实战教程,覆盖了从SFT到PPO的完整流程、ORPO的单步对齐、知识蒸馏以及特定领域的应用(如心理学多轮对话微调)。

Using Help

这个代码库提供了一个完整的流程,帮助你快速上手对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. 下载模型和准备数据

在微调之前,你需要准备好基础模型和用于训练的数据集。

Download model
本项目推荐使用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.7Bcap (a poem)./Qwen3/Qwen3-4BCatalog.

Prepare data
本项目使用的数据有特定的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/目录下的详细教程文档,步骤与此类似。

application scenario

  1. 特定领域智能客服
    可以将通用的Qwen3模型在特定行业的知识库(例如金融、医疗、法律)上进行微调,使其成为能够准确回答专业问题的智能客服机器人。项目中提供的SFT教程是实现这一场景的理想起点。
  2. 个性化内容创作助手
    通过使用特定风格的文本数据(如某个作家的作品、特定风格的营销文案)对模型进行微调,可以创造出一个能够模仿该风格进行写作的助手,用于辅助内容创作、诗歌写作或广告文案生成。
  3. 模型轻量化与私有化部署
    对于算力资源有限的场景,可以使用知识蒸馏功能,将一个大型模型(如Qwen3-4B)的能力迁移到一个小型模型(如Qwen3-1.7B)上。这样既能保留大部分性能,又能显著降低推理成本,便于在个人设备或边缘计算设备上进行私有化部署。
  4. 提升模型对话的安全性与一致性
    可以使用强化学习方法(如PPO或ORPO),通过人类偏好数据对模型进行对齐,使其输出的回答更符合人类的价值观,减少有害或不当内容的生成,提升对话的可靠性和安全性。

QA

  1. 这个项目主要支持哪些Qwen3模型?
    该项目主要基于Qwen3系列模型进行开发和测试,示例代码中直接提供了Qwen3-1.7B和Qwen3-4B的模型下载和使用方法。理论上,代码结构也兼容Qwen3系列的其他尺寸模型。
  2. 进行微调需要什么样的硬件配置?
    硬件需求取决于你选择的微调方法和模型大小。对于SFT-LoRA微调Qwen3-1.7B这样的小模型,一张消费级的显卡(如NVIDIA 3090或4090)通常就足够了。但如果要进行全量微调或者训练更大的模型,则需要更多的显存和计算资源。
  3. ORPO和PPO微调有什么区别?
    PPO是一种经典的强化学习算法,它需要一个独立的、预先训练好的奖励模型(Reward Model)来为模型的输出打分,训练流程相对复杂。而ORPO是一种更新的算法,它不需要额外的奖励模型,直接通过偏好数据对模型进行优化,流程更简单,效率更高。
  4. 我可以使用自己的数据集吗?
    完全可以。你只需要将你的数据集整理成项目data/目录下示例文件那样的JSON格式,然后在运行训练脚本时,通过--dataset_path参数指定你的文件路径即可。
0Bookmarked
0kudos

Can't find AI tools? Try here!

Just type in the keyword Accessibility Bing SearchYou can quickly find all the AI tools on this site.

Top

en_USEnglish