群体感知微调:当单一模型不够,而针对每个用户的微调又负担过重时
我在上个季度交谈过的一个团队发布了一个微调模型,该模型在内部评估中比基础模型高出 4 分,但在接下来的 6 周内,他们却眼睁睁地看着排名前三的客户流失。评估结果没问题。聚合指标没问题。微调模型只是恰好在中位数用户(即询问简短事实性问题的小型企业买家)身上表现出色,而在企业法律客群中悄悄退化了,而后者那些长篇、包含大量引证的查询才是真正的营收驱动力。没有人按照客户等级对评估进行切片分析,因为建模端的人并不知道客户等级至关重要。
大多数关于微调的讨论都处于两个极端之一。一端是“一个微调统治所有”的方法,它在所有客户数据的混合体上训练单个专业化模型,并冲刷掉了原本在基础模型中区分各细分市场的特定客群行为。另一端是“单客户微调”方法,它为每个租户训练一个单独的适配器(adapter),这在客户数量少于 100 个时在运维上是可以忍受的,但在达到几百个左右时就会崩溃。一个有趣的中间地带——由少数几个 客群感知微调模型来服务细分的客群——在大多数生产实践手册中是缺失的。
这个中间地带才是真正的工程工作所在。客群感知微调将微调视为一种披着模型决策外衣的细分决策。你实际上并不是在问“我应该在什么数据上进行训练”——你是在问“这个模型是为谁而存在的,以及有多少个不同的‘谁’”。不先问第二个问题的团队,最终会针对一个无法代表任何真实客户的聚合分布进行训练。
聚合与单用户之间缺失的中间环节
极端情况占据主导地位的原因是,每种情况都有一个简洁的故障模式,在设计文档中很容易自圆其说。单一微调对所有人都会以同样的方式失败,这感觉很公平。单租户微调完美地隔离了爆炸半径,这感觉很安全。两者都忽略了生产流量几乎从未有过平坦的分布。通常有 3 到 8 个起关键作用的集群,它们中表现最好和最差之间的差距大到足以让整体平均值丢失大部分信号。
典型的症状是评估分数提高了,但满意度(CSAT)或留存率指标却持平甚至变差。这就是从外部观察到的客群退化现象。模型在大部分流量上胜出(这正是评估采样最密集的地方),却在长尾部分落败,而评估中这一部分的占比与其营收权重并不相符。聚合指标掩盖了稀有子群体上的严重失败,而你业务中的稀有子群体通常正是高营收的群体。
单客户微调从定义上解决了这个问题,但运维成本是极其惨重的。你每入驻一个客户,就多了一个需要永久维护的 训练流水线。每一次基础模型升级都会变成 N 个重新训练任务。每一次回归都会变成 N 次调查。客群感知微调能以较小的固定成本为你带来大部分细分收益。
寻找合适的客群数量
第一个决策是你实际上拥有多少个客群。太少的话,你就会带着额外的步骤回到聚合指标的问题上。太多的话,你就在假装自己没有在做单用户微调,而实际上却是在趋近它。对于大多数产品来说,有用的答案在 3 到 8 个之间。
定义客群边界的实际信号:
- 行业垂直领域 —— 法律、医疗、金融、零售。词汇、引用期望和风险承受能力的差异大到单一模型无法很好地兼顾。
- 账户等级 —— 免费版、专业版、企业版。每个等级的查询分布是真正的不同,而不仅仅是规模更大。
- 语言区域 —— 即使都在“模型会说英语”的范畴内,英国法律英语和美国技术英语对同一个提示词的要求也不同。
- 任务类型 —— 摘要 vs. 提取 vs. 开放式生成。这些因素对行为的驱动作用往往超过了客户身份。
- 交互模式 —— 单次 API 调用用户 vs. 智能体(agent)工作流 vs. 交互式聊天。工具使用密度和轮次计数改变了“优质生成内容”的定义。
正确的客群轴并不总是产品营销所使用的那一个。营销细分通常是区分客户如何购买的客群,而不是他们如何使用产品的客群。对微调至关重要的客群是那些能区分客户如何向模型提问 的客群。对生产流量进行客群识别,基于提示词嵌入(prompt embeddings)和响应分布而非账户元数据进行聚类,几乎总能改变至少一个边界。
你最终可能会得到少数几个重叠的轴——例如“垂直领域 × 等级”——你必须决定是对它们进行交叉组合(8 个客群)还是选择主轴(4 个客群)。除非你有明确的理由不这样做,否则请选择主轴。客群数量增加带来的运维成本增长速度远快于其带来的质量提升速度。
在训练任何模型之前先对评估进行切片
最重要的一条准则是在你开始训练群体感知 (cohort-aware) 模型之前,而不是之后,就对评估 (eval) 进行切片。如果你目前的评估只是一个单一的数值,并且你无法按群体拆解并复现其得分,那么你就无法判断群体感知微调是否真的胜出。你只能看到平均值是否发生了变化。
在实践中,按群体进行的评估切片意味着三件事。首先,评估集中的每个示例都标有其所属群体,评估报告会显示每个群体的得分以及聚合得分。其次,评估集的群体构成被作为一个独立的属性进行跟踪——如果你 70% 的评估数据属于同一个群体,那么聚合得分主要反映的就是该群体的得分。第三,任何单一群体的回归 (regression) 都会独立于聚合结果阻止发布。如果一个模型在整体上提升了两点,但在企业群体上损失了三点,那么该模型就不会发布。
- https://aws.amazon.com/blogs/machine-learning/multi-llm-routing-strategies-for-generative-ai-applications-on-aws/
- https://www.lmsys.org/blog/2023-11-15-slora/
- https://arxiv.org/pdf/2311.03285
- https://www.together.ai/blog/serverless-multi-lora-fine-tune-and-deploy-hundreds-of-adapters-for-model-customization-at-scale
- https://aws.amazon.com/blogs/machine-learning/easily-deploy-and-manage-hundreds-of-lora-adapters-with-sagemaker-efficient-multi-adapter-inference/
- https://docs.litellm.ai/docs/proxy/multi_tenant_architecture
- https://docs.aws.amazon.com/wellarchitected/latest/generative-ai-lens/multi-tenant-generative-ai-platform-scenario.html
- https://learn.microsoft.com/en-us/azure/architecture/guide/multitenant/approaches/ai-ml
- https://docs.vllm.ai/en/latest/features/lora/
