如何微调推理大模型?以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来准备数据,然后采用微调的方式进行训练即可。

相关推荐
千宇宙航3 小时前
闲庭信步使用SV搭建图像测试平台:第三十一课——基于神经网络的手写数字识别
图像处理·人工智能·深度学习·神经网络·计算机视觉·fpga开发
onceco3 小时前
领域LLM九讲——第5讲 为什么选择OpenManus而不是QwenAgent(附LLM免费api邀请码)
人工智能·python·深度学习·语言模型·自然语言处理·自动化
jndingxin6 小时前
OpenCV CUDA模块设备层-----高效地计算两个 uint 类型值的带权重平均值
人工智能·opencv·计算机视觉
Sweet锦6 小时前
零基础保姆级本地化部署文心大模型4.5开源系列
人工智能·语言模型·文心一言
hie988947 小时前
MATLAB锂离子电池伪二维(P2D)模型实现
人工智能·算法·matlab
晨同学03277 小时前
opencv的颜色通道问题 & rgb & bgr
人工智能·opencv·计算机视觉
蓝婷儿7 小时前
Python 机器学习核心入门与实战进阶 Day 3 - 决策树 & 随机森林模型实战
人工智能·python·机器学习
大千AI助手7 小时前
PageRank:互联网的马尔可夫链平衡态
人工智能·机器学习·贝叶斯·mc·pagerank·条件概率·马尔科夫链
小和尚同志7 小时前
Cline | Cline + Grok3 免费 AI 编程新体验
人工智能·aigc
我就是全世界8 小时前
TensorRT-LLM:大模型推理加速的核心技术与实践优势
人工智能·机器学习·性能优化·大模型·tensorrt-llm