医疗场景实战|百条数据RFT微调盘古大模型,效果超越DS

举报
盘古大模型官方账号 发表于 2025/03/22 21:22:23 2025/03/22
【摘要】 RFT强化微调是一种新型LLM微调方法,通过强化学习与传统微调结合,少量数据即可显著增强领域场景的模型能力。近期,华为云ModelArts Studio大模型开发平台上线强化微调RFT功能,并支持对盘古大模型进行强化微调训练。本文实验通过仅800条医疗辅诊数据训练,模型领域效果提升达10.5%,显著优于DeepSeek-R1等优质通用推理大模型,为大模型的行业领域快速落地提供全新方案。

2024年以来,强化微调(Reinforcement Fine-Tuning, RFT)技术成为AI领域的热点,其核心在于将强化学习(Reinforcement Learning, RL)与传统微调方法结合,推动大语言模型(Large Language Model, LLM)性能突破。在OpenAI连续12天的技术发布会上,发布了强化微调的工具链,只需几十个样例,模型就能学会在自定义领域以新的有效方式进行推理」。也就是说,这种技术既能提高其在某领域特定任务上的准确性,还能增强模型对类似问题的推理能力,成为一个真正的领域专家。

3月12日,华为云ModelArts Studio大模型开发平台最新发布了强化微调功能,支持对盘古大模型进行强化微调,为盘古大模型深入行业提供了更高性价比的、领域增强的解决方案。同时,ModelArts Studio也成为业界首个支持在国产硬件上支持强化微调的平台。

studio首页.PNG


华为云ModelArts Studio大模型开发平台,盘古大模型唯一企业级入口,数据工程、模型开发、Agent开发及垂域应用四大套件全覆盖,昇腾硬件加持,全栈训推,性能出众,助力企业快速实现AI应用。

RFT技术到底强在哪里?用更少的数据获得更优的领域效果

强化微调是一种基于强化学习的模型微调方法。该方法通过引导模型分别给定的指令集自主生成响应,并利用参考答案对响应进行评分,从而突破了传统训练方式对海量人工标注偏好数据的依赖。借助这一技术,仅需少量高质量样本(数百至数千条)即可定制化训练特定领域的模型。

其训练过程如下:

RFT微调概念图.png


  • 用户数据集:通常仅需数百至数千条行业数据,需包含“system”(可选):系统指令,“context”:用户指令,“target”:参考答案;

  • LLM:选择具备 Chat 能力的模型作为 RFT 基座模型,如可选pangu-NLP-N2-4K模型

  • 规则打分器:用于帮助模型“自我反思”,如ModelArts Studio 当前支持逆序排序的打分方式

  • 强化算法:选择GRPO、DPO等强化算法进行RFT训练

在强化学习机制的支持下,强化微调使得模型能够通过“自我博弈”的方式自主生成训练数据,并结合动态奖励机制持续优化输出质量,兼顾效率与效果。与传统的监督微调(Supervised Fine-Tuning, SFT)相比,RFT在数据稀缺的专业领域展现出明显优势,适应性更强。

对比维度

RFT

传统SFT‌

训练数据需求

只需少量高质量样本(百条、千条)

通常需要大量人工标注数据

数据标注成本

低,只需参考答案进行评分

高,需要完整的人工标注(响应+答案)

适应性

可通过调整奖励函数快速适应新目标

调整目标需要重新采集标注数据

泛化能力

能力可迁移到相似但未见过的任务场景

对分布外任务泛化能力有限,依赖训练数据的覆盖范围

能力上限

可突破标注数据质量的限制

模型表现受限于人工标注质量

迭代优化

可持续优化,不断提升性能

迭代优化通常需要新的标注数据

优化目标

自主优化响应以最大化奖励

死记硬背当前指令下的响应

训练场景

有明确评价标准的任务

有大量标注数据的任务


盘古大模型+强化微调RFT的场景实战:800条数据提升10+%的模型精度

实战行业场景:大模型辅助诊断医疗疾病场景。

行业难点:

  • 通用模型由于在后训练阶段缺乏医疗相关数据,存在一定的幻觉问题;

  • 通用模型一般直接进行症状匹配并作出诊断,准确率低。

本次实验分为4个步骤:

实验步骤.png


Step1:准备实战数据

本次实验采用医疗开源数据集DxBench,随机选取800条数据为训练集,其余作为验证集。

数据样例:

数据样例.png

(Source: Chen, Junying, et al. "CoD, Towards an Interpretable Medical Agent using Chain of Diagnosis." arXiv preprint arXiv:2407.13301 (2024).)

Step2:上传数据至ModelArts Studio平台

数据拼接:

DxBench 原始数据中仅列出了显性症状、隐形症状与候选病症的独立信息,无法直接输入到模型中进行训练。为此,我们设计了一套简单的用户指令,给定上述三种信息,要求模型输出一个病症列表,其中排在第一位的是模型认为最有可能的病症,第二位为可能性较大的病症,以此类推。

拼接后用户指令如下:

你是一位经验丰富的医生。请基于患者的症状信息,对候选疾病进行可能性排序。\n\n输入信息包括:\n1.显性症状列表:[{显性病状}]]\n2.隐性症状列表:[{隐形病状}]\n3.候选疾病列表:{候选病症}\n\n请按照以下步骤进行分析:\n1.综合分析所有症状信息\n2.对每个候选疾病评估其与症状的匹配程度\n3.基于症状表现的典型性和特异性进行排序\n4.将疾病按可能性从高到低排序,并以json格式输出最终的排序列表\n\n示例输出:\n{\n \"possible_diseases\": [\"疾病1\", \"疾病2\", \"疾病3\"]\n}\n\n请基于以上标准对该患者的候选疾病进行分析并给出排序结果。

格式处理:

本数据为带人设的单轮问答数据,采用ModelArts Studio的单轮数据格式处理数据。

格式样例:

{"system":"***","context":"***","target":"***"}

处理完的数据样例:

{"system": "你是一个擅长于文章写作、文本分析、代码编写、数学运算、逻辑推理的AI助手,专注于针对用户的问题给出高质量解答。", "context": "你是一位经验丰富的医生。请基于患者的症状信息,对候选疾病进行可能性排序。\n\n输入信息包括:\n1.显性症状列表:[['呕吐', 'True']]\n2.隐性症状列表:[['哭声评分减分', 'True'], ['喂养困难', 'True'], ['腹部不适', 'False']]\n3.候选疾病列表:['新生儿呕吐', '进食障碍', '消化不良']\n\n请按照以下步骤进行分析:\n1.综合分析所有症状信息\n2.对每个候选疾病评估其与症状的匹配程度\n3.基于症状表现的典型性和特异性进行排序\n4.将疾病按可能性从高到低排序,并以json格式输出最终的排序列表\n\n示例输出:\n{\n \"possible_diseases\": [\"疾病1\", \"疾病2\", \"疾病3\"]\n}\n\n请基于以上标准对该患者的候选疾病进行分析并给出排序结果。", "target": "新生儿呕吐"}

数据上传:

将数据上传到华为云数据存储服务中。在ModelArts Studio数据导入模块,选择文本->单轮问答(人设)数据,将数据上传到平台。

现网-数据导入.png

由于本数据集比较干净,无需使用平台进行二次清洗。我们直接将其发布为用于模型训练的格式数据。

现网-数据发布.png

Step3:创建RFT训练任务

在ModelArts Studio大模型开发平台上选择 NLP大模型->强化学习->RFT 的训练目标,模型选择Pangu_NLP_N2_4K-3.2.35,该模型是华为自研的百亿级通用大模型。

现网-模型训练.png

使用平台默认参数进行强化微调,打分器规则选择:Inverse-rank-grader,即对模型输出的逆序列表进行打分,正确答案越靠前分数越高(分数最高为1),越靠后分数越低(分数最低为0)。

以上述“Step2 格式处理”中的样本为例。患者实际病症为“新生儿呕吐”,若模型输出结果为['新生儿呕吐', '进食障碍', '消化不良'],则 Score=1.0;若模型输出结果为['进食障碍', '新生儿呕吐', '消化不良'],则 Score=0.5;若模型输出结果为['进食障碍', '消化不良', '新生儿呕吐'],则 Score=0.

现网-训练参数.png

Step4:评估模型效果


在训练平台上观测训练曲线,本用例中强化算法学习使用Iterative DPO,Loss曲线呈现先降低后增加,符合预期。使用DPO算法,能够降低强化学习的硬件消耗,起训卡数与传统SFT相当。


现网-loss.png

随着模型的RFT训练,测试集上的准确率稳步上升,表明该方法具有较强的有效性与泛化性。第1个epoch训练完成后测试集acc提升至0.657,超越DeepSeek-R1(Top@1=603),Deepseek-R1-distill-qwen-32B(Top@1=0.647)。第3个epoch训练完成后测试集Top@1 acc提升至0.697,大幅超越qwen72b(Top@1=0.667)与qwq-32b(Top@1=0.663)。实验结果显示,通过RFT微调的模型在“疾病选择”任务中具有显著的性能提升。这表明强化学习微调是一种有效的策略,可以进一步提高大模型在特定任务上的表现。

准确率.PNG

模型训练完成后,我们将模型进行部署,进行效果评测。使用之前拆分的300条评测集进行评测,在评测集上,原模型(Pangu_NLP_N2_4K-3.2.35)准确率为0.607,开源模型DeepSeek-R1、eepSeek-R1-Distill-Qwen-32B、QwQ-32B、Qwen2.5-72B-Instruct的准确率分别为0.603、0.647、0.663、0.667,而我们通过强化微调后的模型,准确率达到了0.712,较微调前上升了10.5%。可以明显的看出,与各通用模型相比,我们使用800条数据就可让大模型在特定行业应用场景下得到明显提升。

准确率2.PNG


经验总结

经验一:通过在ModelArts Studio大模型开发平台上使用盘古大模型进行强化微调,我们仅需少量(百条级)行业数据,就可训练一个高性能的行业大模型。可以展望的,在诸如医疗、法律等数据相对稀缺的行业,通过精选少量的行业相关数据,并采用强化微调的训练方式,从而在有限的数据资源下取得了更优的模型性能。这种方法不仅提高了模型的准确性,还有效解决了数据不足的问题。

经验二:在ModelArts Studio上使用强化微调能力,平台预置了强化微调方式的模型和最优路径,各行业人员仅需有少而精的专业数据,就可以自助训练出自己的领域专家模型,训练难度明显降低。

经验三:在通用场景表现优异的基础大模型,在深入行业时效果不一定为最佳。在行业场景落地时,选择适合行业领域的大模型知识学习方式,才能让大模型真正在行业落地。正如盘古大模型坚定践行2B路线理念一样,深入行业,帮助客户打造行业大模型与行业智能体。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。