Qwen-7B医疗大模型实战:从数据清洗到RLHF全流程解析

发布时间:2026/9/19 5:19:19
Qwen-7B医疗大模型实战:从数据清洗到RLHF全流程解析 Qwen-7B这个底座我前后折腾了快两个月从数据清洗到RLHF全部跑通中间踩过的坑比病历本还厚。这篇文章就把整套流程原原本本捋一遍从医疗数据怎么准备、怎么构造SFT样本到奖励模型怎么训、RLHF怎么调全部写成可以直接上手的操作记录。不管是刚入门的大模型爱好者还是想在企业里落地医疗助手的工程师照着这篇走至少能少走两周弯路。1. 一件事先说清楚为什么是Qwen-7B以及医疗大模型到底难在哪1.1 医疗场景对模型的三重约束医疗这个领域和通用聊天有个本质区别它是要承担责任的。一个感冒问诊的错误回答最多让人不舒服但一个用药建议的错误是真的可能出安全问题。所以医疗大模型首先面临的不是“能力问题”而是“约束问题”。第一重约束是准确性。模型可以不知道但不能瞎编。可惜大模型的本质就是概率生成天然有幻觉倾向在医学这种知识密度极高的领域幻觉比例会被进一步放大。第二重约束是合规性。病历数据涉及患者隐私训练数据不能随便用模型输出不能承诺疗效不能诱导用药。第三重约束是可解释性。医生不会因为你给了一个结论就信你他要看依据看推理过程所以医疗模型的回答必须能追溯到某种医学逻辑而不是直接蹦出几个药名。这三重约束决定了医疗大模型不能靠“暴力堆参数”来解决而是要在数据侧、对齐侧下功夫。这也是为什么我们选Qwen-7B而不是直接上几百B的闭源API——因为你需要的是能完整控制训练流程的开源模型得能改数据、能微调、能干预输出。1.2 为什么选Qwen-7B而不是更大的模型很多人一上来就问为什么不用Qwen-72B或者更大的模型答案很现实资源够不够数据配不配场景需不需要。Qwen-7B在中文理解上表现扎实尤其在医学领域它本身就已经具备相当数量的医学常识。你拿它问感冒吃什么药它不会完全胡说。这就意味着微调时不需要从零教它医学知识而只需要把它的知识“校准”到符合医疗场景的表达方式上。从硬件角度看7B模型用LoRA方式微调单张24G显存的卡就能跑起来就算做全参数微调两张A100也能勉强扛住。而72B光是推理就要多家卡训练成本直接翻十几倍。对于绝大多数想尝试医疗大模型落地的团队来说7B是一个能力与成本平衡得最好的切入点。另外还有一个容易忽略的点医疗数据本身就稀缺且敏感。小模型对数据量的要求更低训练轮次更多也不会轻易过拟合这在实际操作中给数据准备环节留出了很多容错空间。2. 项目整体流程设计与技术选型2.1 全流程管线的六段式结构我拆解下来整个项目其实可以分成六个相对独立的阶段每个阶段有清晰的输入和输出这样无论是一个人搞还是团队协作都容易把控进度。阶段核心任务输入输出数据采集与构建收集各类医疗语料并整理为结构化数据公开医学知识库、脱敏病历、医学问答预训练语料集、SFT对话集数据清洗与质控去重、去噪、隐私过滤、质量抽检原始语料集干净可用的高质量数据集SFT监督微调用人工标注的“问题-标准答案”对调整模型Qwen-7B基座 SFT数据集具备基础问答能力的SFT模型RM奖励模型训练让模型学习“什么样的回答更好”SFT模型 对比偏好数据可对回答打分的Reward ModelRLHF对齐训练用强化学习让SFT模型朝偏好方向优化SFT模型 RM模型 提示词集对齐后的最终模型评测与部署用医疗测试集评估效果部署推理服务最终模型 评测集可实际使用的服务这个结构最大的好处是每一阶段都能单独验证。比如SFT做完了可以先请几个医生朋友帮忙做一轮盲评不用等到RLHF做完才发现方向不对。2.2 关键工具链选型微调框架、加速方案、训练设备工具链这块我直接把最终稳定运行的组合列出来这些都是经过实际验证的搭配微调框架LLaMA-Factory它对Qwen系列支持得非常好LoRA、QLoRA、全参微调都能一键切换UI界面也方便给同事演示。强化学习框架TRL库配合PPOTrainer使用如果显存不够就换成DPOTrainer走DPO路线。量化方案QLoRA用的4-bit bitsandbytes单卡24G就能跑7B的SFT。模型运行vLLM做推理加速在部署阶段能把吞吐量提上去好几倍。训练设备我手上是4张RTX 4090SFT用QLoRA大约5小时RM训练3小时PPO阶段需要约8小时。2.3 资源评估与时间预估这里必须说实话如果你想全部用免费资源跑完RLHF整个流程几乎不现实。7B模型做全参数训练至少要60G以上显存普通个人电脑根本扛不住。但我实测下来预算不用太高也能搞定。云服务商租4张RTX 4090按小时计费大概几十块钱一小时整个流程跑一轮大概需要两天总花费在可控范围内。如果只做SFT不做RLHF那单张24G显卡就完全够了很多云平台有按小时的便宜实例适合先验证流程可行性。时间分配上我建议这样安排数据准备占50%的时间因为这块直接决定了模型质量上限SFT和RM加起来占30%RLHF调试占20%。不要一上来就急着训练数据没做好后面全白费。3. 医疗数据准备整个项目的地基3.1 语料来源怎么搭公开数据脱敏病历医学知识库医疗数据的核心来源我归纳成三大类每类的用途和获取难度都不一样第一类是公开医学知识库比如医学教材、诊疗指南、药典说明书、医学百科类内容。这些数据结构化程度高知识密度大适合用来构建SFT时的标准答案。获取渠道主要是公开出版物和部分开放授权的中文医学知识库成本相对低。第二类是脱敏的临床病历和医患对话。这块数据最珍贵也最难拿。真实病历里有疾病描述、检查结果、医嘱、病程记录信息量大但隐私问题必须先解决。实际操作中的思路是和医疗机构建立合规合作拿到已经经过严格脱敏处理的文本。注意这里的关键词是“脱敏”所有能定位到患者身份的信息都必须去掉。第三类是医学问答对。公开的医疗问答社区、医院科普专栏、医生写的科普文章里都有大量“用户问-医生答”的优质语料。这种数据特别适合SFT因为本身就是问答形式直接用就行关键是做筛选和清洗。三种数据的比例我跑了多轮实验之后的经验值是知识库语料占比40%问答对占35%病历语料占25%。病历语料不要太多因为它的表达风格过于碎片化而知识库和问答对能帮模型建立规范的医学表达习惯。3.2 医疗数据清洗与标注从原始语料变成可训练数据拿到原始语料后第一步不是训练而是清洗。医疗数据比通用数据脏得多各种OCR识别错误、英文大小写混乱、剂量单位不统一、缩写满天飞。清洗这件事没有捷径就是结合正则表达式和人工规则一条条过。我总结了一套清洗规则几个关键步骤处理项具体做法作用隐私过滤用正则匹配身份证号、手机号、住院号等敏感信息替换为占位符或直接删除满足合规要求剂量单位统一把“1片”“一粒”“0.25g”这类表达标准化为统一格式避免模型输出混乱去重用MinHash计算文本相似度对重复内容直接过滤防止模型过拟合到重复样本长度过滤过滤掉少于20个字符和超过2048个字符的样本保证训练数据质量特殊字符清理去掉多余的换行、乱码、HTML标签提升数据整洁度这里有一个特别容易踩的坑剂量单位不统一的问题被大多数人低估了。“每日三次每次0.5g”和“一天三回每回半克”如果在数据里混着出现模型就会学会这两种表达方式最终输出时可能随机组合非常危险。我的做法是把所有医学实体标准化至少要把最常见的剂量单位全部映射成标准写法。清洗完原始语料接下来还要做数据标注。如果你手里有几位医生或者医学专业的学生资源让他们对问答对进行质量打分和标注标注的内容包括答案是否正确、表述是否规范、是否有风险信息。没有专业标注资源的话也可以用规则筛选比如配比几个模型答案让人工抽查但质量会打折。3.3 数据量估算与配比多少数据才够很多新手最爱问到底需要多少数据这个问题的答案取决于你的目标。我实测下来的感受是要做医疗领域的基础问答能力SFT数据至少需要3万条高质量问答对低于这个量模型很难形成稳定的领域表达习惯。要覆盖常见科室的常见病最好做到10万条以上且科室分布要相对均衡。RM训练用的对比数据至少需要2万条偏好对太少会导致奖励模型过拟合。注意我强调的是“高质量”而非“数量”。3万条干净、准确、结构清晰的样本要好过30万条从网上爬来的泛泛问答。这是整个项目中最值得投入时间的地方。关于配比我的经验是做领域内知识的平衡内科、外科、儿科、妇产科、皮肤科常见病都要有覆盖不能只押在一个方向上。不然训练出来的模型会出现严重的偏科现象。3.4 多渠道语料融合的实战细节把三类数据融合到一起不是简单拼接就行。我的做法是把它们拆开处理后再合并知识库语料先做章节切分然后按段落做成“知识点片段”喂给模型前以“背景知识”的形式放在System Prompt里。这部分数据适合做预训练阶段的语料。病历语料清洗脱敏后从病程记录里抽取“症状-检查-诊断-治疗方案”的结构化信息转成问答对。比如根据一段“发热伴咳嗽三天”的病历构造“患者出现什么症状”这种问答样本。这一步工作量不小但信息密度极高。问答对语料医疗社区的问答通常比较口语化我会用LLM做一次改写把医生的口语回答规范成正式的医学表述再由人工抽检确认。合并之后不要急着用先跑一遍质量抽检。我习惯随机抽200条逐条人工检查如果错误率超过3%就说明清洗流程还有漏洞得调整规则再跑一遍。4. 数据构造进阶从医学问答到带推理链的样本4.1 SFT样本结构怎么设计直接拿“问题-答案”这种最简单的结构去训练模型也能学会回答但效果上限很低。因为医疗场景需要模型具备解释能力而不是只会蹦结论。我使用的是Qwen官方推荐的ChatML格式并用System Prompt固定模型扮演的角色{ messages: [ {role: system, content: 你是一位专业的内科医生请根据患者的描述结合医学知识给出诊断建议、进一步检查建议和注意事项。回答必须严谨对于不确定的内容必须明确说明。}, {role: user, content: 我最近三天总是头晕血压测量正常睡眠也还好请问可能是什么原因}, {role: assistant, content: 根据您的描述需要考虑以下几类可能1. 颈椎问题可能导致椎动脉供血不足……} ] }关键是样例里要让模型“展示思考过程”而不是只给结论。这样能在SFT阶段就为模型植入思维链的种子后续通过RLHF进一步强化。此外我强烈建议在系统提示词里写明“不确定的内容必须说明”这能显著降低模型胡编乱造的概率。医疗场景下一个诚实的“我无法确定建议尽快就医”远比一个胡乱推测的结果安全。4.2 用模型辅助生成数据的风险控制人手不够的时候可以借助大模型批量生成SFT数据这个方法叫“Self-Instruct”。但直接用生成数据训练出一堆“一本正经地胡说八道”的模型这是最常见的翻车原因。我自己实践下来有两条铁律第一模型生成的数据不能当标准答案只能当候选答案必须经过人工或规则校验后合并成最终数据的组成部分。我一般会生成三份候答案然后按信息完整度和风险提示丰富度打分选最好的那份进入候选池再由医疗专业的人复核。第二用更大、更可靠的模型当“老师”。优先用在线的大模型API生成问答对然后让Qwen-7B自己再回答一遍对比两份答案的一致性。如果一致说明问题难度适中可以保留如果不一致就要人工介入判断。这本质上是在做数据蒸馏可以有效控制错误率。4.3 样本配比与多轮对话组装数据准备好了组装训练集时还要注意几个具体问题单轮和多轮的配比。真实医疗场景里用户不会一次把所有信息都说全模型需要具备追问能力。我在数据里混合了30%左右的多轮对话样本模拟“患者补充症状-医生继续追问”的过程。样本去重不能只看文本完全一样。两个问题表达不同但意思完全相同的情况在医疗数据里非常普遍比如“发烧能吃布洛芬吗”和“发热了能不能吃布洛芬”。这类语义重复样本留着会放大模型的错误模式。我的做法是先用Embedding模型把问题转成向量计算余弦相似度相似度超过0.9的样本直接只保留一条。还有一个细节组装样本时句子长度要适中尽量截断到512~1024 token范围内方便后续训练时batch拼装。过长的样本不仅拖慢训练速度还可能让模型注意力发散。5. 阶段一SFT监督微调实战5.1 数据准备好之后先跑一遍“冒烟训练”直接上全量数据训练到一半发现学习率崩了或者loss异常是很痛苦的事情。我的习惯是先做一个冒烟测试从全部数据里随机抽200条样本把微调轮次调到很小跑一轮看能不能正常走通。冒烟测试的核心目的有三个验证数据格式能不能被框架读取验证显存占用是否合理验证loss有没有下降趋势。如果200条样本训了几百步loss完全不动那大概率是数据或配置的问题这时候排查成本最低。冒烟测试跑通之后再切到全量数据正常训练。用LLaMA-Factory的话先确认配置文件中数据集名称和格式正确然后启动训练。Qwen-7B用QLoRA方式微调4张4090大约需要5小时如果只有单卡时间会拉长到20小时左右。5.2 关键训练配置与超参参考这里直接给一份我跑通后验证过的关键配置参数取值说明LoRA rank64秩越大模型学习能力越强但显存占用也越高7B用64是平衡点LoRA alpha128通常设为rank的2倍缩放因子更平滑learning rate2e-4LoRA微调常用区间是1e-4到5e-4从2e-4起步比较稳batch size32梯度累计8 × 单卡4医疗数据噪音多batch太小学不稳定max sequence length1024兼顾训练速度和上下文信息epochs3医疗数据量够的情况下3轮充分但不过拟合warmup ratio0.1避免开局学习率过大导致震荡lr schedulercosine后期缓慢衰减学得更稳Loss曲线的观察方法也很简单训练集loss稳定下降但验证集loss在某个epoch后开始反弹就是过拟合信号。医疗数据中这种情况很常见因为数据本身有噪音模型把噪音也背下来了。遇到这种情况就调低epoch数或者加大dropout。5.3 训练中遇到的几个具体问题训练时最容易遇到的第一个问题是显存溢出。7B模型即使做了QLoRA24G显存也比较紧张。如果OOM优先尝试三个办法降低batch size同时调大梯度累计步数把max_seq_length从1024调到768或512降低LoRA rank从64降到32。这些都是立竿见影的优化。第二个问题是loss骤降。正常现象不用担心尤其是QLoRA初始化后的第一步。但如果loss降到0.3以下后完全不下降观察一下是不是学习率衰减太快。我一般会把学习率调回1e-4附近再跑一轮。第三个问题容易被忽略SFT阶段不要用ChatML格式的System Prompt做模板。在SFT时数据里的prompt部分应该尽量贴近真实推理时的输入形式否则推理时模板一旦改一点模型表现都会崩。我最后固定下来的方案是SFT阶段就完全按照部署时的对话模板来构造数据这个习惯帮我避开了很多后续的部署坑。5.4 完成SFT后必须做的验证动作训练完成后别急着进下一步先用一小批验证集几百条看SFT后的模型表现。我常用的方式是把一个训练集外的医学问题丢给它人工判断回答质量。SSFT模型常见的问题有三个一是回答过于口语化缺少结构化描述二是会学到训练集中的错误模式比如把“感染”和“消炎药”强行绑定三是对中文提问的响应风格过于模板化比如每句话都以“根据您的描述”开头。遇到这些问题别急着调模型先回到数据层面去检查是不是某类科室的样本过多或者某些问答对的Pattern太一致。我一般会在SFT后做一轮样本平衡性分析按科室、问题类型统计数据分布针对性补充或裁剪然后再训一轮。6. 阶段二奖励模型RM——让模型学会判断好坏6.1 为什么要单独训练一个RMRLHF的核心思路是让模型自己学会判断“什么是好的输出”而不是继续靠人去标注。实现这个目标需要一个为模型输出打分的“裁判”这个裁判就是Reward Model。简单理解SFT阶段教会模型把话说明白RM阶段教会模型分辨说得“对还是不对”RLHF阶段利用这个裁判反过来训练SFT模型让它在各种情况下都尽量生成高分回答。三步层层递进少了RM后面就是无源之水。RM的任务是给一个文本打分所以它的训练方式不是生成而是分类或回归。输入是一段文本输出是一个数值。训练时通常用“排序”思路给模型看两个关于同一问题的回答让它预测哪个更好更好的一方得分更高。6.2 RM训练数据对比样本的构造方式RM训练数据的形式是“同一个问题对应的多个质量不同的回答”并且能给出这些回答之间的优劣排序。医学场景里对比数据的构造我采用了一套分级标准等级定义示例优秀诊断准确、处理建议完整、包含风险提示和就医引导完整回答鉴别诊断风险提示良好诊断基本正确但缺少部分细节或风险提示准确但不全面一般有错误信息或明显遗漏但未造成直接风险有轻微错误差存在严重误导信息可能对患者产生风险建议错误的用药方式构造方法分三步先让SFT模型对一批问题生成多个候选答案再由人工最好有医学背景按上述标准标注排序最后把排序结果组织成“好-坏”配对样本。注意同一问题的多个答案必须来自不同解码参数或不同方法才能提供足够差异性的训练信号。这里特别提醒一下不要用同一个模型在temperature0.2和0.8下生成的答案做配对因为两者的句式风格差异过大RM可能会学到“长句子就得分高”这种肤浅的相关性。尽量让候选答案在字数、语气上接近只在内容质量上有区分。6.3 RM训练细节与常见坑RM模型的训练相对快在2090上大约需要3小时。常用的做法是把Qwen-7B的最后一层替换成回归头输入文本后输出标量分数用Pairwise Ranking Loss训练。关键超参参考参数取值batch size16learning rate5e-5epochs1~2max seq len1024只训1-2个epoch是因为RM的过拟合问题非常严重。一旦过拟合它就会死记硬背训练集里的样本失去泛化能力。实操中最常见的坑是RM打分退化训练一段时间后所有输出都打高分没有区分度。这通常是因为偏置项被学成了正数。解决办法是做一个“分数归一化”操作让模型学习相对分差而不只是绝对分数。另外采样时要保证好样本和坏样本的比例接近1比1避免模型为了最小化loss而把所有样本都倾向判成同一个类别。RM训练完成后一定要做一个手工验证拿一批模型生成的回答人工给排序再看RM的打分排序和人工排序是否吻合。如果吻合度不到70%说明RM还有问题继续用它跑RLHF只会放大错误。7. 阶段三RLHF与DPO——让模型对齐医疗偏好7.1 RLHF的PPO实现要点RLHF最经典的实现以PPO让模型在保持原有语言能力的同时朝着高分回答方向优化。TRL库里的PPOTrainer把大部分流程都封装好了你想偷懒可以直接用默认逻辑但要在细节上多注意才能让效果稳定。我自己实践下来有几条经验值得分享经验一RLHF阶段必须先冻结RM和参考模型。你的SFT模型是“演员”RM是“裁判”参考模型是“锚点”——防止模型为了拿高分把语言表达能力全丢掉。TRL里这些角色默认处理好了但你心里要有数。经验二提示词集合要足够多样且贴合真实场景。RLHF训练时输入的是Prompt然后让模型自由生成、打分、更新。这些Prompt不应该只是训练集里的原创问题还要覆盖没见过的场景。我准备了大约5000条真实场景的Prompt作为RLHF的输入来自社区的热门提问和门诊常见的患者描述。经验三KL惩罚系数要设好。简单说就是限制模型不能跑得太偏。医疗场景下我建议KL系数比通用场景稍大一些比如1e-4到5e-4因为医疗输出更看重稳定性不希望模型在RLHF之后失去SFT阶段学到的规范表达。在4090集群上PPO每个batch的训练时间比SFT慢得多因为每个step都要让四个模型演员、裁判、参考模型同时前向和反向。跑完一轮PPO需要8到12小时建议中途设置断点保存方便随时检查。7.2 显存不够怎么办DPO作为替代方案PPO对显存和调试的要求都很高如果你的机器只有一两张卡我建议直接改用DPO。DPO的核心思路是不要绕一圈去训练RM而是直接用偏好数据优化策略模型本身。这种方式不再需要显式地训练RM也不需要做采样和强化学习循环训练资源的开销小很多。实际操作中DPO的输入是“Prompt chosen(好回答) rejected(差回答)”三元组。模型根据偏好数据计算loss让“好回答”的概率上升让“差回答”的概率下降。在效果上对于医疗问答这种单轮短文本任务DPO的效果可以做到和PPO基本持平但训练时间只有PPO的三分之一。如果你之前没训练RM只是有一批偏好数据DPO无疑是最好的起点。7.3 训练稳定性控制与效果监控RLHF阶段最容易出现的情况是模型“奖励黑客”模型找到了一个让RM打高分但实际内容很空洞的套路比如所有回答都以“请您尽快就医”结尾。这种现象说明模型在钻空子而不是在变好本质上是因为KL惩罚不足或者RM质量不够。监控RLHF效果时我习惯同时关注三张图表Reward曲线应该总体上升但局部出现尖峰下降是正常的。KL散度如果KL散度值快速飙升说明模型在偏离原来的语言基础需要立刻冻结检查。回答长度如果回答普遍变长或变短说明模型找到了某种捷径。RLHF跑完后不要急着做最终评判先让模型在训练中没见过的测试集上回答一轮。因为RLHF有个特点训练集里高分了不代表没见过的场景也会高分。我在实践中遇到过几次“训练完比SFT还差”的倒挂现象最后发现都是测试集分布与训练集差距太大导致的。8. 评测、部署与快速迭代8.1 医疗能力评测集怎么搭这里的核心原则是评测集要独立于训练数据并且要由医学专业人士把关。我的评测集由三部分组成评测维度题量考察点医学知识问答200模型对疾病基础知识、药物原理的掌握真实问诊模拟150患者描述症状后模型能否给出合理的问诊和治疗建议安全与合规100能否识别危险情况并引导就医是否产生不当承诺评测时建议找1-2位有医学背景的朋友当裁判对模型回答从准确性、完整性、安全性、可读性四个维度打分。自动化评测可以作为辅助但人工打分永远是最重要的判断依据。8.2 部署与推理优化模型验证通过后部署阶段我推荐用vLLM它对Qwen的支持非常成熟开启--tensor-parallel-size 1后在单张24G显卡上就可以高效进行7B模型的推理。如果是高并发场景可以部署多个vLLM实例做负载均衡。部署还有几个小细节值得注意第一用训练时同一套对话模板。推理阶段的模板必须和SFT/RLHF阶段完全一致包括System Prompt的表述。模板不一致导致的性能损失非常隐蔽我在这上面吃过亏后来养成了“部署配置里写死模板”的习惯。第二对输出做安全兜底。可以在服务层加一层规则过滤器当检测到“建议用药剂量”这类高风险关键词时自动追加风险提示。“建议您咨询专业医生并遵医嘱”这个兜底在真实场景能省很多麻烦。第三温度参数不要设太高。医疗场景建议temperature0.1~0.3。温度太高模型输出随机性过强会产生不稳定的建议。8.3 上线前的合规自查清单我整理了一份在上线前必须跑一遍的自查清单确认训练数据中没有患者隐私信息全部完成脱敏处理确认模型对“紧急情况”能给出“立即就医”等明确引导不会耽误病情输出中是否含有对药物疗效的绝对化保证这类表述必须拦截模型是否能主动声明“不由诊断替代面诊”是否有内容审核机制对严重跑偏的输出进行拦截是否有人工监督入口允许用户一键转接真实医生框住这六条起码能让你的模型在法律和伦理风险上站稳脚。医疗产品的底线就是不给患者添麻烦上线前宁可多审几轮。9. 常见问题与排查速查表我把实操中遇到的各类高频问题整理成一个速查表可以直接对照排查问题现象可能原因解决办法SFT训练Loss不降数据格式错误或多轮对话结构不对检查数据模板确认Role字段正确务必做冒烟测试SFT后模型只会回答“您好”样本中指令部分太短或重复度高增加指令多样性扩充不同科室问法RM打分普遍偏高偏置项学偏了做分数归一化降低学习率检查好坏样本比例PPO阶段Reward飙升但回答变差奖励黑客或KL惩罚过小增大KL系数检查RM打分离群样本模型用词过于书面化SFT数据中口语问答比例不足增加真实场景问答对减少纯教科书式样本推理时回答格式完全乱掉推理模板与训练模板不一致核对System Prompt和Chat模板的每个字段显存溢出OOMbatch size过大或序列过长减batch加梯度累计或降低max_seq_len部署时首字延迟太高模型没做连续批处理换vLLM开--max-num-seqs参数最后说几句实在话整套流程跑下来我的体会是医疗大模型真正的门槛不在模型和算力而在数据和对医疗场景的理解。Qwen-7B是一个非常好用的底座但决定模型能不能用的是数据准备的细致程度、SFT阶段的样本结构、RM和RLHF阶段你愿不愿意花时间调优。如果你现在正准备入这个方向我给的建议是先拿一个垂直小领域练手比如“高血压问诊”或者“皮肤科常见病问答”用一两条数据管线把流程跑通再慢慢横向扩展。不要一开始就追求大而全数据量大了之后质量控制会变得非常困难。最后再分享一个小技巧每次训练完把当时的Prompt、数据分布、超参配置、评测结果全部记录下来连续记录几轮之后你会发现自己对模型行为的预判能力提升特别快。这套实验日志的习惯比任何一个框架和工具都重要。