如何微调推理大模型?以Qwen3/DeepSeek-R1为例

如何微调推理大模型?以Qwen3/DeepSeek-R1为例

前言

首先先简单介绍下两个系列的模型:

DeepSeek-R1是由深度求索公司推出的首款推理模型,该模型在数学、代码和推理任务上的表现优异。深度求索不仅开源了DeepSeek-R1模型,还发布了从DeepSeek-R1基于Llama和Qwen蒸馏而来的六个密集模型,在各项基准测试中均表现出色。本文以蒸馏模型DeepSeek-R1-Distill-Qwen-7B为例,为您介绍如何微调该系列模型。

Qwen3是阿里云通义千问团队于2025年4月29日发布的最新大型语言模型系列,包含2个MoE模型和6个Dense模型。其基于广泛的训练,在推理、指令跟随、Agent 能力和多语言支持方面取得了突破性的进展。PAI-Model Gallery已接入全部8个尺寸模型,以及其对应的Base模型、FP8模型,总计22个模型。本文为您介绍如何在Model Gallery部署评测该系列模型。

刚好最近在做一个推理训练任务,现在有现成的训练集,推理模型这么强的情况下,怎么把之前传统对话大模型+指令微调训练模式 转变成推理大模型+指令微调任务

后训练广义可能范围比较大,包括微调、 * 强化学习 *等。 可能我们构造强化学习数据集或者思维链数据集的成本比较高的,所以今天咱们就聊一聊怎么偷懒地将把之前的指令数据集或者指令微调的工作推演到推理大模型训练上呢?有没有比较省事或者比较规范的做法呢?

方法1:通过推理大模型将指令数据集蒸馏为推理数据

通过能力比较强的推理大模型底座将之前指令数据集蒸馏为思维链数据集,然后进行筛选过滤。

具体做法我们可以参考刘聪大佬开源的Chinese-DeepSeek-R1-Distill-data-110k,大致流程是调用企业版满血R1 API,然后数据生成结果进行了二次校验,并保留了评价分数:

  • 针对Math和Exam数据,先利用Math-Verify进行校对,无法规则抽取结果的数据,再利用Qwen2.5-72B-Instruct模型进行打分,正确为10分,错误为0分。
  • 针对其他数据,直接利用Qwen2.5-72B-Instruct模型从无害性、有用性、正确性/完整性三个角度进行打分,分值范围为0-10分。
方法2:使用COT数据集构造推理大模型训练数据

下面以一个推理数据集为例,

medical-o1-reasoning-SFT医学推理数据集,该数据集基于医学可验证问题和 LLM 验证器构建,这个数据集构造过程和方法1提到的差不多。方法1强调如何通过推理大模型蒸馏指令数据集,方法2强调如何通过已有COT构造推理数据集

以下面模板为例:

代码语言:javascript

代码运行次数:0

运行

AI代码解释

ini 复制代码
train_prompt_style = """Below is an instruction that describes a task, paired with an input that provides further context. 
Write a response that appropriately completes the request. 
Before answering, think carefully about the question and create a step-by-step chain of thoughts to ensure a logical and accurate response.
​
### Instruction:
You are a medical expert with advanced knowledge in clinical reasoning, diagnostics, and treatment planning. 
Please answer the following medical question. 
​
### Question:
{}
​
### Response:
<think>
{}
</think>
{}"""

有了模板下面我们直接通过占位符填充COT字段即可

代码语言:javascript

代码运行次数:0

运行

AI代码解释

ini 复制代码
EOS_TOKEN = tokenizer.eos_token# Must add EOS_TOKEN
​
​
def formatting_prompts_func(examples):
inputs = examples["Question"]
cots = examples["Complex_CoT"]
outputs = examples["Response"]
texts = []
for input, cot, output in zip(inputs, cots, outputs):
text = train_prompt_style.format(input, cot, output) + EOS_TOKEN
texts.append(text)
return {
"text": texts,
}
方法3:直接使用指令数据集微调推理大模型

那么还有一种方式就是,我们是不是也可以直接通过比较"素"的指令数据集训练R1类似模型呢,答案是可以!

这里"素"指的是只有instruction/input/output,没有推理思维链类似字段

笔者实测过, 这样微调出来的效果是丢失了思考过程,但是效果发现是没问题,设置32B推理模型超过了72B对话模型。

实测

针对下游任务,如果我们不想要思考过程,可以直接采用第三种方法,这种微调简单粗暴,效果也比传统同参数对话模型好一些。如果想要思考过程,可以参考方法1和方法2来准备数据,然后采用微调的方式进行训练即可。

相关推荐
Ronin-Lotus2 小时前
深度学习篇---剪裁&缩放
图像处理·人工智能·缩放·剪裁
cpsvps3 小时前
3D芯片香港集成:技术突破与产业机遇全景分析
人工智能·3d
国科安芯3 小时前
抗辐照芯片在低轨卫星星座CAN总线通讯及供电系统的应用探讨
运维·网络·人工智能·单片机·自动化
AKAMAI3 小时前
利用DataStream和TrafficPeak实现大数据可观察性
人工智能·云原生·云计算
山顶夕景4 小时前
【LLM】Kimi-K2模型架构(MuonClip 优化器等)
大模型·llm·agent·强化学习·智能体
Ai墨芯1114 小时前
深度学习水论文:特征提取
人工智能·深度学习
无名工程师4 小时前
神经网络知识讨论
人工智能·神经网络
nbsaas-boot4 小时前
AI时代,我们更需要自己的开发方式与平台
人工智能
SHIPKING3934 小时前
【机器学习&深度学习】LLamaFactory微调效果与vllm部署效果不一致如何解决
人工智能·深度学习·机器学习
jonyleek5 小时前
如何搭建一套安全的,企业级本地AI专属知识库系统?从安装系统到构建知识体系,全流程!
人工智能·安全