kaggle竞赛宝典 | 微调推理大模型的几种方案。

本文来源公众号“kaggle竞赛宝典”,仅用于学术分享,侵权删,干货满满。

原文链接:微调推理大模型的几种方案。

如何微调推理大模型?以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构造推理数据集

图片

以下面模板为例:

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字段即可

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对话模型。

图片

关于DeepSeek-R1微调,LLaMA Factory有些讨论或者踩坑,我下面直接贴了链接,有兴趣大家可以看下:

  • LLaMA Factory:微调DeepSeek-R1-Distill-Qwen-7B模型实现新闻标题分类器

https://gallery.pai-ml.com/#/preview/deepLearning/nlp/llama_factory_deepseek_r1_distill_7b

  • deepseek r1微调 #7027

https://github.com/hiyouga/LLaMA-Factory/issues/7027

总结

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

THE END !

文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值