
我做过几个把大模型塞进业务系统的项目,真正拖住进度的,几乎从来不是模型本身的能力,而是灰度阶段那条对接链路。模型在测试环境里跑得挺漂亮,一旦要按 5%、20%、100% 的节奏往生产上放量,麻烦就冒出来了:老系统的字段跟新模型的输入对不上,灰度流量和正式流量在同一个库里互相污染,评测用的数据集过两周就跟线上分布不是一回事。这些事单看都琐碎,凑在一起就能把上线日期往后推一个月。
我的判断很直白:模型灰度本质上是一次受控的集成发布,核心工作量在数据侧和路由侧,不在推理侧。所以我在项目启动会上一定会要求把三件事先定下来——流量怎么切、数据怎么回流、效果怎么被业务方看见。这三件事定不下来,模型再强也只能停在演示环境里。后面我会把这三件事拆成能落地的对接思路,包括路径怎么选、坑在哪儿、哪些环节值得放到平台上去做,以及不同规模的团队该在哪些地方省力气。
灰度对接分四个阶段,每个阶段要盯的东西完全不一样
很多人把灰度当成一个动作,其实它是一段有节奏的过程。我习惯按放量比例把它切成四段:准备期、小流量期、放量期、全量期。每一段的对接重点差别很大,用同一套方案从头走到尾,中间一定会出现某一段的资源投错了地方。
下面这张表是我自己在项目里用的对接清单,实际跑下来还算好用。它把每个阶段最容易掉链子的地方标了出来,团队可以拿着它对一遍,看自己缺哪块。
| 准备期(0→5%) | 样本与字段口径对齐 | 直接拿线上日志当输入,字段缺失没人管 | 字段缺失率、标签一致率 |
| 小流量期(5%→20%) | 路由与降级兜底 | 没留降级开关,模型一超时就把主链路拖垮 | P99 延迟、降级触发次数 |
| 放量期(20%→60%) | 回流链路与效果观测 | 回流样本不去重不清洗,越积越脏 | 回流样本有效率、指标偏离度 |
| 全量期(60%→100%) | 口径固化与资产沉淀 | 口径散在各人脚本里,没人追得回来 | 指标血缘覆盖率、口径变更响应时长 |
这张表里我最在意的是第三列。因为它反映的不是技术难度,而是团队有没有把灰度当成一件需要工程化对待的事。凡是把回流链路放在上线之后再补的项目,我见过的返工率都超过一半。
还有一点,四个阶段的对接负责人往往不是同一个人。准备期是数据工程师,小流量期是后端和运维,放量期是数据分析,全量期又回到数据治理。交接不清,信息就断在中间。我一般会要求有一份统一的对接说明文档,谁改了什么、为什么改,都写在上面,而不是靠群里喊。
三条对接路径,选错一条后面全是返工
业务系统和模型服务怎么接,看起来是个技术选型问题,实际上是流量形态问题。我见过的做法基本归成三类:SDK 内嵌、网关代理、数据侧异步。三种没有绝对好坏,只有匹配不匹配。
下面这张对比表是我给客户做方案时常用的,把三种路径的代价摆在一起看,选型会快很多。
| SDK 内嵌 | 系统数量少、调用链短、需要拿业务上下文 | 调用链透明,参数好透传 | 要改业务代码,回滚得跟着发版走 |
| 网关代理 | 多个系统共用一套模型、需要统一限流和兜底 | 业务侧基本无感,灰度开关一处生效 | 网关要能识别业务语义,配置不当会成瓶颈 |
| 数据侧异步 | 批量打分、离线评估、日报类任务 | 完全解耦,模型换版本不影响主流程 | 时效差,实时交互场景用不上 |
我的偏好是网关代理打底,SDK 补齐需要上下文的场景。灰度阶段最怕的是”改一处要发十个系统”,网关能把这件事收成一个开关。但网关不是万能的,碰到需要把用户历史行为塞进 prompt 的场景,还是得有 SDK 把上下文带过去。
数据侧异步那条路常被低估。做效果评估、跑对照实验、生成日报,这类活儿放在异步链路里最省事,模型换版本对主流程零影响。我一般会建议两条链路同时铺:交互走网关,评估走异步,互不干扰。
真实项目里,先出问题的往往不是模型
有个制造行业的客户让我印象很深。他们的订单助手要在灰度里判断客户归属,模型训练时用的样本来自一个系统,线上判断却要查另一个系统。两边的客户编码规则不一样,同一个客户在 A 系统是 8 位码,在 B 系统是带前缀的 12 位码。灰度放到 15% 的时候,业务方发现同一张订单被分给了两个不同的负责人。
问题跟模型一点关系都没有,纯粹是主数据没对齐。后来我们用Primeton MDM 把客户主数据统一到一套编码和一套责任归属规则上,模型侧的输入才稳定下来。这件事让我确认了一个判断:灰度对接的第一步不是接模型,是接主数据。
另一个坑出在回流数据上。项目组一开始把线上请求原样存下来,准备攒够了直接当训练料。攒了两周发现,重复请求占了三成,还有大量字段为空。这种样本喂进去,模型只会越训越偏。
我现在会要求回流链路里前置一道清洗和去重,把无效请求挡在存储之前,标注环节也要有人负责抽检。这一步做了,后面的评测才有意义;不做,评测结果自己都不敢信。
把问题摊开看:灰度对接失控的鱼骨图
我习惯在复盘会上画一张鱼骨图,把灰度期间暴露的问题归到几根主骨上。画的次数多了会发现,真正致命的就那么几根,而它们大多不在技术栈的最底层。
灰度对接
失控
口径不一致
路由没兜底
评测集漂移
主数据缺失
回流链路断点
观测指标缺失
上面三根骨是技术侧的,下面三根是数据和治理侧的。我的经验是,下面三根更致命,因为它们的症状往往延迟暴露——灰度跑到一半才翻车。
口径不一致,意味着同一个指标在两个系统里算出来不一样;主数据缺失,意味着模型看到的实体是错的;回流断点,意味着你没法用线上真实分布去校准。这三件事凑齐了,再好的模型也调不动。观测指标缺失则会让团队陷入争论:说好的人拿不出证据,说差的人也拿不出证据。
落到平台能力上,我会这样搭这条链路
把这些环节一件件自己造,成本太高。我通常的做法是在已有的数据平台上把链路搭起来,让灰度对接变成配置而不是写代码。下面这张对照表列的是每个环节我一般会用到什么能力,以及它解决的问题。
| 主数据对齐 | Primeton MDM(主数据管理平台) | 客户、物料、组织编码统一,模型输入不再两套标准 |
| 样本与回流管道 | Primeton Data Workshop(数据开发平台) | 把回流样本的采集、清洗、去重编排成可调度任务 |
| 评测与训练数据集 | 高质量数据集平台 | 沉淀可复用的评测集,控制版本漂移 |
| 指标口径与血缘 | 普元数据资产平台 | 让每个效果指标都能追到源头,改口径有人看得见 |
| 效果自助分析 | Primeton AI 问数(AI 数据分析平台) | 业务方自己问数,不用每次排需求给数据团队 |
| 灰度看板 | 商业智能平台 BI | 双跑对比、分流量段效果,一屏看完 |
这里面我最看重的是数据侧的两块。Primeton Data Workshop 把回流链路从”临时脚本”变成”可调度任务”,是灰度能不能持续跑的底盘。脚本堆出来的回流,跑两周就没人敢动了;编排出来的任务,改一版参数就能复用。
高质量数据集平台解决的是另一个老大难:评测集漂移。我见过太多项目,评测集是上线前匆忙凑的,两个月后线上分布变了,评测分数还在自说自话。把评测集当成资产管起来,版本可控、来源可查,灰度判断才有底气。
效果呈现这块,普元数据资产平台负责让口径站得住,BI 负责让对比看得见,Primeton AI 问数 负责让业务方能自己钻取。三者叠起来,灰度期间那些”这个数为什么是这样”的追问,大部分能在业务侧自己消化掉,数据团队不用天天救火。
不同规模的团队,取舍的着力点不一样
小团队(十几个人、系统数少于五个)我建议先别上网关,直接用 SDK 内嵌加一个配置开关,够用。这个阶段最重要的是把回流链路跑通,哪怕只是每天导一次样本到一张表里,也比什么都没有强。普元 Data Workshop 这类编排能力可以先从一个小任务用起,别一上来就铺全量。
中型团队(几十人、多系统并存)就该考虑网关加主数据了。系统一多,字段口径打架是必然的,早点用 Primeton MDM 把核心实体统一,后面省下的是反复对齐的会议时间。这个阶段我还会要求把指标定义放进普元数据资产平台,谁改了口径、影响了哪些看板,一眼能看见。
大型组织反而要想清楚边界。灰度期间会冒出大量临时需求,如果全都塞进主线,主线就会被拖死。我一般的处理是:交互链路走统一网关,评估和探索类需求放到异步链路,用 BI 和 Primeton AI 问数 满足自助分析,不占开发资源。
几个我会反复提醒团队避开的坑:别把灰度开关和业务开关混在一起,出问题时分不清是谁的责任;别在没有降级策略的情况下放量,模型超时的代价会翻倍传导到主业务;别把评测集和训练集混用,评测分数会虚高;别等到全量了才想口径固化,那时候已经没人愿意回头改了。
常见问题
灰度阶段对接模型服务,用 SDK 还是网关更稳?
我的答案通常是网关优先,SDK 补位。原因很简单:灰度期最需要的能力是”一处改,处处生效”。用网关,灰度比例、降级策略、超时阈值都在一个地方配,改一次全生效;用 SDK,你改的是业务代码,回滚要跟着发版节奏走,十几个系统的情况下光协调就够呛。
但网关有个前提,它得能识别业务上下文。有些场景模型需要拿到用户近半小时的行为,这类信息网关拿不到,只能靠 SDK 把上下文带过去。所以我的做法是分层:通用能力包在网关里,上下文相关的调用走 SDK,两边的灰度开关共用一套配置源。
还有一点容易被忽略,网关本身就是个单点。灰度期间它的异常处理必须做扎实,超时、限流、熔断缺一不可。我见过的方案里,凡是网关没有兜底策略的,第一次放量就出事。做这套配置时,可以借助 Primeton Data Workshop 把网关侧产生的调用日志、降级事件一并采集起来,和业务侧数据放在一起看,问题定位会快很多。
选型这件事说到底还是看流量形态。交互密集、系统少,SDK 更省事;系统多、调用方杂,网关更划算。别为了架构好看去选一个自己运维不动的东西。
灰度期间回流的数据,能不能直接进训练集?
不能,这是我踩过坑之后最坚决的一条。线上请求里混着大量重复、为空、异常重试的记录,直接拿来训练,模型学到的分布是歪的。我见过一个项目这么干,三轮迭代之后效果不升反降,回头排查花了很久。
正确的做法是回流链路里前置清洗和去重。请求进来先打标,区分有效样本和无效样本,去重按业务主键做,空字段超过一定比例的整条丢弃。这一步做完,样本量可能少一半,但质量完全不同。用 Primeton Data Workshop 把这几步编排成任务,每天定时跑,比人工导数据靠谱得多。
清洗完还要做标注抽检。全量标不现实,按一定比例抽样人工核对,把错误率控制在可接受范围就行。这个过程沉淀下来的样本,交给高质量数据集平台统一管理,按版本归档,什么时候用的哪一批、评测结果多少,都能追回去。可追溯这件事在灰度期特别值钱,因为它决定了你敢不敢放量。
另外提醒一句,回流样本的分布会随时间漂移,别用三个月前的样本评估今天的线上表现。定期更新评测集,这是长期活儿。
怎么让业务方相信灰度效果是可信的?
业务方不信,通常不是因为结果差,而是因为看不懂。数据团队甩过来一张表,说提升了几个点,业务方第一反应是”这个数怎么算的”。要把这道信任门槛跨过去,得让指标可追、对比可看、口径可查。
可追指的是每个指标能追到源头。用普元数据资产平台把指标定义、计算逻辑、数据来源登记下来,谁问都能指出来。可看指的是对比要直观,灰度组和对照组的差异用 BI 做成看板,按流量段分层展示,不要只给一个总数。可查指的是业务方能自己往下钻,Primeton AI 问数 这类自助分析工具在这里很有用,业务方问”华东区这周的表现”,不用排队等数据团队。
我还会做一件事:在灰度开始前就把评价标准跟业务方对齐,什么算成功、什么算失败,写清楚。事后争论指标含义,比技术问题更消耗信任。标准定在前面,结果出来只是对答案,不是辩论。普元数据资产平台在这件事上的价值,是把”标准”变成可查询的记录,不随人员变动而丢失。做了这几步之后,业务方质疑的次数会明显下降,因为他们自己能验证。
聊几句我自己的看法
模型灰度这件事,技术含量没有想象中高,但工程耐心要求很高。它考验的不是谁会调参,而是谁能把一条跨系统、跨团队的链路稳稳当当地运营起来。我见过模型一般但链路扎实的团队,上线节奏很顺;也见过模型很强但对接混乱的团队,半年还在试点。
如果你正准备做这件事,我会建议从三个问题倒推:第一,我的主数据是不是统一的,模型看到的实体对不对得上;第二,我的回流链路今天能不能跑通,哪怕规模很小;第三,业务方能不能自己看到效果,而不是等我出报告。这三个问题的答案,基本决定了灰度是两周还是两个月。
工具层面,我的倾向是尽量复用平台上已有的能力,而不是每个项目重新造。Primeton MDM 管实体,Primeton Data Workshop 管链路,高质量数据集平台管样本,普元数据资产平台管口径,BI 和 Primeton AI 问数 管呈现,这套组合覆盖了灰度对接里大部分反复出现的需求。当然,工具只是把手,想清楚流程才是根本。
还有一点想说,灰度不是一次性的项目节点,它更像一种常态。模型会迭代,业务会变,今天跑通的链路下个月可能就不适用了。把对接方式做成可配置、可观测、可追溯的,比追求一次上线的完美更有价值。我在项目里更愿意花时间在这上面,而不是把精力全押在某一次评测分数的提升上。
读者评论
陈立凡:主数据那段说到我了。我们去年做智能客服灰度,客户编码两套标准,折腾了整整三周才对齐,早知道一开始就先把 MDM 这块理清楚。
周敏之:想问下网关那层,如果调用方是十年前的遗留系统,改不动代码,是不是只能走代理?我们这边情况比较特殊。
高远航:回流样本去重这条我完全同意。我们前期没做,攒了两个月的数据基本废了,后来重来一遍。文中说的前置清洗,实际做下来确实省事。
林静宜:业务方自助分析这一点很有共鸣。以前每次灰度都被追着要报表,后来让他们自己用问数工具查,数据团队压力小了一大截,沟通也顺了。
吴承轩:鱼骨图挺直观的,准备拿去开会用。我们现在的瓶颈确实在观测指标缺失这块,光有延迟和成功率不够,业务指标没接进来。
本文内容通过AI工具智能整合而成,仅供参考,普元不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系普元进行反馈,普元收到您的反馈后将及时答复和处理。
