我不知道你现在手头在做什么样的深度学习项目,反正我最近这半年的工作重心,几乎全被大语言模型、多模态生成和配套的训练推理基础设施占满了。每隔一段时间,我都会强迫自己把手头接触过的模型架构、训练方法和工程方案整理成一份技术摘要,不然很容易被具体业务带走,失去了对整体技术方向的判断。这篇文章就是最新一轮的摘要笔记,主要围绕四个方向:大语言模型的架构变化、多模态生成模型、对齐技术、训练与推理基础设施。适合正在做模型训练或部署的工程师,也适合准备从传统深度学习切入生成式AI方向的同学,读完可以对当前的技术版图有一个比较清晰的整体认知。
1. 大语言模型:从拼规模到改架构
1.1 专家混合(MoE)凭什么成为主流
大语言模型最直观的变化是参数量越来越大,但粗暴地堆参数很快就碰上了两堵墙:训练算力成本和推理时的显存与延迟。于是大家把目光转向了稀疏激活架构,其中最成熟的代表就是专家混合(Mixture of Experts,MoE)。MoE的思路很简单,把一个巨大的网络拆成若干“专家”子网络,每次处理输入时,由路由模块挑选最相关的少数几个专家参与计算,而不是把全部参数都跑一遍。我习惯用一个类比来解释:一个大而全的咨询团队,接到新需求时不会让全体成员都上手,而是根据需求方向快速筛选出最对口的几个小组来干活。团队规模是大的,但真正投入的人力是可控的。
这个机制的好处非常直接:参数量可以做得很高,理论上能装下足够多的知识,但每次前向计算只激活一小部分专家,训练和推理的浮点运算量被压下来,GPU显存和延迟压力也随之缓解。实践中,我见到的绝大多数中大规模模型都采用了类似的稀疏结构,专家数量常用8、16、32,路由通常选top-2,也就是每个token只交给两个最强的专家处理,这是目前性价比最高的组合之一。
但MoE的工程坑不少。第一个坑是路由坍塌(routing collapse):如果辅助负载均衡loss的系数设得太大,路由会倾向于把所有token都丢给同一个强专家,稀疏激活就失去了意义;但如果这个系数设得太小,某些专家又会被饿死,训练不充分。第二个坑是通信开销:专家分布在多张卡上,token去别的卡找专家就要走网络,跨节点通信很容易成为瓶颈。第三个坑是显存规划:虽然激活参数少了,但要把全部专家和优化器状态装进显存,需要的总显存并不少。我的经验是,如果想在有限GPU数量下训练大参数量模型,MoE是一个性价比很高的方向,但一定要事先做通信带宽的评估,并留出这部分余量。
1.2 长上下文:不止是把窗口拉长
长上下文是最近绕不开的另一个关键词。早期的语言模型能处理的序列长度只有几千token,现在一些开源模型已经把窗口推到几十万甚至百万级。这个变化冲击的不只是模型结构,还有下游的检索、文档解析、Agent记忆管理。但长上下文远不是“把max_len参数改大”这么简单,自注意力机制的计算量随序列长度呈平方级增长,窗口从8K拉到32K,注意力部分的理论计算量直接翻16倍。
位置编码是长文本项目里最容易出问题的地方。目前的主流方案是旋转位置编码(RoPE)以及它的一堆变体。RoPE的优点是外推性强,训练时没用过的长度,推理时也能勉强接上,但直接硬外推会带来明显效果衰减。我实测比较稳的做法是:要么在训练阶段就把序列拉长到目标长度,要么在微调时配合频率缩放(例如把底座频率从1e4提高到5e5或1e6)做短到长的渐进式延展。后者的训练成本低很多,但需要分阶段安排数据,先短后长,不能一步到位。
部署层面,长上下文的杀手是KV Cache。即使模型结构不变,缓存key和value也会占掉大量显存。对于那些“看过一遍就不再看”的历史内容,很多工程方案会选择提前压缩或丢弃部分KV,或者引入检索式上下文,只把最相关的文档片段拼进窗口。我在实际项目中的体会是:面向长文本的业务,优先把精力放在“如何选进窗口”和“如何淘汰窗口”这两件事上,而不是一味追求模型本身能读多长。
1.3 推理期缩放:让模型多想一会儿
传统观点认为,模型能力在训练完成那一刻就固定了,推理只是把参数里的知识“读”出来。但最近大家发现,推理阶段也可以有策略地消耗更多计算量,换取回答质量的提升。这个过程通常被称为推理期缩放(inference-time scaling),简单说就是:让模型在给出最终回答前,多生成几个候选、自己检查一遍,或者换几种思路重试。这和人类考试时的行为很像,时间充裕的时候,做完题还会验算、换一种方法复核。
我在实际工程里常用的做法是best-of-n采样:让模型对同一个问题生成多个候选答案,再用一个评分器(可以是奖励模型,也可以是规则打分)选出最优的返回。候选数量n一般取8到16左右,收益和成本比较均衡,继续往上加,质量的提升会明显变平。另一种做法是让模型对自己生成的答案做多轮修正,但要注意控制轮数,超过两三轮之后,模型经常把本来正确的答案改错,出现来回震荡。所以我的经验是,如果要把推理期计算量作为产品质量的提升手段,最好搭配一个强验证器,而不是完全依赖模型自我感觉。
这里还有一个容易被忽略的点:推理期缩放的效果和训练阶段的对齐方式要匹配。如果训练时模型从没见过这种“多步修正”的格式,推理时强行让它在多个候选里反复挑,效果往往很一般。理想的做法是在对齐阶段就把这类数据混进去,让模型在训练时就适应“生成候选、评分、重写”的交互流程。
2. 多模态与生成模型:统一世界的表征
2.1 从单模态到统一表征
多模态这两年最大的变化,不是单纯把图像识别和文本理解拼在一起,而是尝试把不同模态统一成同一种表征空间。图像先被切成patch再token化,音频被抽成离散token,然后这些和文本token一起进入同一个序列。这样一来,模型既能理解图文,也能生成图文,处理视频也只是把连续帧压成更长的token序列。这种“一切皆token”的建模思路,是当前多模态大模型的主流框架。
从训练目标看,主流的做法分两类:一类是对比式学习,把图像和文本的表示拉到同一个空间,让匹配的图文向量更接近,这个思路在早期的图文检索任务里非常有效;另一类是生成式训练,直接让模型学习“根据文本生成图像patch”或者“根据图像生成文本描述”。目前业界的趋势是把两者融合起来,用对比损失做粗对齐,再用生成损失做细粒度建模。实际落地时,我发现大部分多模态项目的瓶颈都不在模型结构,而在数据。字幕(caption)质量尤其关键,一段模糊的“一只狗站在草地上”和一段精确的“一只金毛犬蹲在清晨阳光下的草坪上,背景有栅栏和木屋”对模型的可控性影响是完全不同的。
我在做这类项目时会把数据清洗分成几个层级:先做基础去重和过滤,再做caption的丰富度评测,最后做图文一致性的自动校验,比如用反向一致性分数挑出“图文不匹配”的样本。数据质量到位了,模型的提升往往比换一个更大规模的骨干网络更明显。
2.2 视频生成:从图像到时间的跨越
视频生成比图像生成上了一个台阶,难就难在要在时间维度上保持一致性。图像生成只需要理解一个静态画面,视频生成却要让画面里的物体在几十上百帧里保持形状、颜色、运动轨迹的一致。现在的主流路线大致是:先用自编码器把视频压缩成低维的时空特征,再用扩散或流匹配模型在这个隐空间里生成,最后解码回像素。这个思路可以理解为“先压缩时间和空间,再在压缩后的世界里生成”。
实际操作中,视频生成项目最折磨人的是两件事:一是时序抖动,画面单帧看着都正常,连起来就有闪烁、变形、物体漂移;二是运动可控性,比如用户希望镜头缓缓推进,模型却输出了一段快切镜头。针对时序抖动,常见做法是在训练时增加帧间一致性的损失约束,推理时也可以对相邻帧做特征层面的平滑。针对运动可控性,比较好的方案是把运动描述(镜头推拉、物体位移、速度)作为条件输入,而不是让模型自己脑补。
另外一个容易被低估的点是视频数据的清洗成本。图像数据可以靠检测模型粗筛,视频数据还必须处理片段切分、运动幅度筛选、时间标注等问题。我见过不少团队把大量时间花在模型调参上,最后发现训练数据的运动分布太窄,模型生成的视频要么全是静止镜头,要么运动幅度过大完全失控。数据分布统计这一步,在视频项目里值得专门做一轮分析报告。
2.3 多模态评估:别让指标骗了你
多模态模型的评估是另一个容易被低估的环节。自动指标确实方便,比如图像生成常用的FID、CLIP-Score,视频方面也有帧间一致性指标,但它们和人的主观感受经常对不上。我在一个图像生成项目里就有过教训:某轮实验自动指标全部变绿,但人工一看,生成图像开始出现多余的装饰性元素,整体风格明显偏离业务要求。自动指标喜欢“平均意义上和文本更接近”,但平均不代表业务上正确。
所以我现在做多模态项目,一定会搭一套人工评测流水线:固定一批覆盖常规、困难、对抗三类场景的评测集,让至少两三个人独立打分,并记录偏好原因。同时控制评测集规模,不需要很大,两三百条高质量问题往往就能反映出版本之间的真实差距。另外,评测集要定期更新,避免模型过拟合到测试集风格上。多模态项目的效果波动往往比纯文本项目大得多,评测频次也要相应提高。
3. 对齐技术:让模型学会说人话
3.1 从RLHF到DPO的逻辑
模型预训练学的是“预测下一个token”,但会预测不代表会沟通。以前那种海量语料训练出来的模型,回答经常是语法正确但空洞、重复、甚至有毒。对齐(alignment)技术的目标,就是通过人类偏好数据把模型的输出风格、行为方式和交互习惯校准到符合预期。最经典的路径是RLHF:先用人工标注的偏好数据训练一个奖励模型,再用这个奖励模型给策略模型打分,通过强化学习优化策略。它的本质是“用奖励函数做指挥棒”。
DPO是近几年比较受欢迎的新方法,核心思想是绕开奖励模型,直接从偏好数据推导出策略优化目标。不再需要单独训练一个奖励模型,也不用跑PPO那套复杂的强化学习流程,只要把“被偏好的回答”和“不被偏好的回答”成对地喂给模型,让它学习更偏好前者。我用一个类比来理解:RLHF像是先找一个经验丰富的评委(奖励模型),再让选手根据评委的评分去练动作;DPO则更像是直接把“好动作和坏动作”的录像放给选手看,让它自己悟。DPO的工程复杂度低很多,迭代速度快,特别适合中小团队。
下面这个表格是实际选型时我会参考的对比:
| 对比维度 | RLHF | DPO |
|---|---|---|
| 训练流程 | 预训练、SFT、奖励模型、强化学习 | 预训练、SFT、偏好优化,跳过奖励模型 |
| 工程复杂度 | 高,需要维护奖励模型和强化学习链路 | 低,训练逻辑接近普通监督微调 |
| 稳定性 | 超参数多,容易波动 | 稳定性较好,但对偏好数据质量敏感 |
| 适用场景 | 数据量大、基础设施强、需要细粒度控制 | 中小团队、快速迭代、算力有限 |
3.2 偏好数据的质量比算法更关键
对齐算法再先进,也救不了烂数据。我的经验是,偏好数据的质量直接决定对齐效果的天花板。最关键的指标是偏好对之间的差异度:如果被偏好和未被偏好的两个回答只在措辞上有细微差别,模型很难学到有用的信号,训练还会不稳定。我通常会先做一轮自动筛选,去掉那些差异度太低的pair,再用规则或者模型打分做一遍质量过滤。重复数据也在必清之列,同一个pair在多个epoch里被反复看到,会直接导致DPO训练发散,loss突然冲高。
训练参数上,DPO的beta温度系数对结果的影响很大。beta越小,模型越激进地向偏好方向偏移,容易把自己学歪;beta越大,偏移越保守,但可能效果不明显。我常用的初始范围是0.1到0.3,具体再根据验证集效果调整。另外,DPO需要冻结一个参考模型来约束偏移量,训练时这个参考模型不能更新;为了降低遗忘风险,我还会在优化数据里掺入一部分普通的监督微调样本,比例大概在5%到15%,让模型在学偏好的同时保持基本能力。
关于停止点:对齐训练最好用留出的偏好验证集做监控,观察偏好准确率的同时也要盯通用能力指标。如果通用指标开始下滑,即使偏好准确率还在涨,也该停了。这个度很难拿捏,但比盲目跑满固定步数要稳妥得多。
3.3 安全与能力的天平
对齐中的安全性话题这几年讨论很多,落到工程上,就是“拒绝回答”和“能力可用性”之间的平衡。过度追求安全很容易让模型变成惊弓之鸟,问什么都先道歉或拒绝,业务完全没法用;但完全不设防也不行,面向海量用户的产品是巨大的风险。我在实际项目中总结的做法是:评测集里专门设计两类对抗样本,一类是真危险内容,一类是看似敏感但实际无害的良性样本,然后监控模型在两类样本上的表现。理想状态是危险的能挡掉,良性的又能正常回答。如果拒答率在良性样本上过高,就说明安全对齐过重了,需要回退调整。
除此之外,输出的语气和风格也会在对齐阶段被大幅改变。我踩过的坑是:某次用DPO做一轮风格优化,模型确实变得更礼貌了,但同时回答变得冗长、废话变多,因为偏好数据里的“更受欢迎”回答普遍更长。后来我才意识到,需要在偏好数据构造阶段主动控制长度和措辞的变量,把“风格是否更好”和“长度是否更长”解耦,否则模型学会的不是风格,而是“多说废话”。
4. 训练与推理基础设施:真正决定项目成败的部分
4.1 并行策略怎么选
模型算法再好,最终都要落到训练和部署上,我见过太多项目死在基础设施这一环。先说分布式训练。并行策略并不神秘,本质是解决两件事:模型参数放不下怎么办,数据量太多算不完怎么办。最常用的几个手段是数据并行、张量并行、流水线并行,以及介于数据并行和参数分片之间的全分片数据并行(如FSDP)。选择逻辑其实很简单:优先算一下单卡显存能不能放下一份完整的模型权重、梯度和优化器状态,如果能,优先用纯数据并行,通信开销最小;如果单卡放不下一个层或多头注意力计算,再引入张量并行按层内切分;如果模型层数极深,就用流水线并行把不同层分配到不同设备上。
真正容易翻车的是混用多种并行策略后的通信拓扑设计。模型并行会在每步训练中增加all-reduce、all-gather等集合通信,如果机架间的网络带宽跟不上,显存是省下来了,训练吞吐量反而会暴跌。我踩过的一次坑是:某次实验为了在单机四卡上跑一个参数量更大的模型,过度使用张量并行,结果每个训练step的通信时间比计算时间还长,整卡利用率掉到30%以下。后来改成层间切分加梯度通信优化,吞吐量才恢复正常。我的建议是:在加入任何并行策略之前,先用profiler工具测一下当前的计算通信比例,再决定怎么切。
4.2 混合精度与数值稳定性
混合精度训练已经是标配,但真正把它用好的人不多。现在的主流选择是BF16:它和FP16一样只占两个字节,但动态范围比FP16大得多,不需要频繁做损失缩放,训练稳定性高。缺点是精度稍微低一点,但对于常见的大模型训练任务完全够用。FP8是更新的选择,能把权重占用再砍一半,显存和带宽都更友好,不过对硬件和框架的支持要求更高,数值敏感的层(比如LayerNorm、最后的分类头)通常需要保留更高精度。我的经验是:如果硬件不支持FP8,或者框架的缩放机制不够成熟,老老实实用BF16,别为了省显存给自己找麻烦。
训练稳定性方面,我总结过一套排查流程。loss突然出现尖峰,先看学习率是否过高,再看数据顺序是否突然变化,然后检查梯度是否出现NaN或Inf。梯度裁剪(gradient clipping)是必开项,我一般把全局梯度范数上限设在1.0到2.0之间,它对训练稳定性的贡献比大多数人想象得大。另一个常被忽略的点是优化器状态:Adam类的二阶矩估计受数值震荡影响很大,如果某个batch的梯度异常,后续很多步都会受牵连。所以在怀疑数值稳定问题时,不要只盯着当前loss,要多翻几轮之前的状态日志。
4.3 推理侧的三个关键优化点
模型训练完了,部署环节决定的是真实成本。推理优化我一般会从三个点入手:量化、KV Cache、请求调度。
量化方面,目前对生成任务影响最小的组合通常是对权重做INT8或W4A16,同时保留激活值的高精度。权重从FP16压缩到INT8,绝大多数业务场景的精度损失可以忽略,但显存占用和带宽压力明显下降。如果还想更激进,可以做4bit权重,但这时需要配合更好的校准集和混合精度恢复策略,而且不同任务的退化程度不一样。另外,KV Cache是长上下文场景下的显存大头,可以单独对KV做INT8量化,我实测在多数任务上损失很小,但显存占用能降四成以上。
请求调度层面,连续批处理(continuous batching)是最值得优先引入的优化,它打破了过去一个batch必须同步完成的限制,请求到达就能插入当前批次,吞吐量提升非常明显。配合前缀缓存,能让多个共享相同上下文前缀的请求复用计算结果,这在大语言模型Agent场景里尤其有用。投机采样(speculative decoding)则适合追求低延迟的场景,用一个更快的小模型先草拟一批token,再由大模型一次性验证,能在不损失精度的前提下把解码速度提上去一个档次。下面是我常用的方案选择表:
| 优化手段 | 适合场景 | 效果预期 | 注意事项 |
|---|---|---|---|
| 权重INT8或W4A16量化 | 显存紧张、吞吐优先 | 显存降30%-50% | 4bit需要校准集 |
| KV Cache量化 | 长上下文、高并发 | 显存降40%以上 | 极端序列下需验证精度 |
| 连续批处理 | 高并发在线服务 | 吞吐提升明显 | 需要框架支持调度 |
| 投机采样 | 低延迟对话 | 延迟降低1.5-2倍 | 草稿模型质量需要匹配 |
| 前缀缓存 | Agent反复调用 | 首token延迟大幅降低 | 缓存命中率依赖业务特征 |
5. 前沿架构与个人实践建议
5.1 注意力之外的探索
Transformer自诞生以来统治了几乎所有主流模型,但它有一个绕不开的软肋:二次方复杂度。为此,研究社区一直在寻找替代方案。状态空间模型(SSM)及其衍生架构是近年最受关注的方向之一,它把序列建模复杂度降到线性,而且在长序列上表现突出。纯SSM的能力说实话还不稳定,但“注意力+SSM混合”的架构已经在一些场景里表现出非常好的性价比:长距离依赖用注意力捕捉,局部模式用SSM高效建模,既保住质量又压住了计算量。
除了架构层面的探索,硬件协同设计也在成为新的竞争点:稀疏计算、算子融合、专用加速芯片,都在试图从底层降低大模型训练和推理的成本。我的建议是:对这类新技术保持关注和灰度测试,但不要急着把核心业务迁移到未经充分验证的架构上。我见过不少团队看到某个新架构在论文指标上有优势就全面切换,结果在真实数据上被长尾问题反复折磨。理性做法是先在旁路实验里验证,用你自己的数据和评测集跑一两个月,确认稳定收益后再考虑迁移。
5.2 给工程师的落地建议
最后聊点实在的。如果你的目标不是发论文而是做产品,我的第一个建议是:不要被层出不穷的新架构扰乱节奏。当前阶段,最稳妥的技术路径仍然是大语言模型基础架构加上监督微调和偏好优化,再针对业务场景做数据工程和推理优化。这个组合成熟、工具链完善、社区资料多,能把大多数业务的八成需求覆盖掉。等你发现这个组合确实存在瓶颈,比如长文本效果不行、推理成本无法承受,再动手研究新架构也不迟。
第二个建议是:数据工作投入的收益往往被严重低估。一个小模型配上高质量、覆盖均衡的数据,效果可以轻松超过一个大模型配上粗糙数据。尤其在微调和多模态项目里,数据清洗、标注规范、分布分析这些看起来“不性感”的工作,恰恰是决定最终效果上限的部分。我自己的项目时间分配,最近半年已经有超过一半花在数据和评测上,真正调模型结构的时间反而不多。
第三个建议是:把成本当成核心指标。很多生成式AI项目在技术demo阶段光彩照人,一上线就被推理成本压垮。所以从项目一开始就要估算单次推理的成本、并发峰值下的GPU数量、以及优化预算的分配。我看项目是否健康,第一眼看的往往不是模型的精度榜单,而是单位成本能换多少有效产出。这些就是我在最近这段时间整理的技术摘要里最主要的观察。如果让我浓缩成一句话,那就是:前沿技术的门槛正在从“训练一个大模型”转向“用合理的成本运营一个模型系统”。