跳到主要内容

24 篇博文 含有标签「inference」

查看所有标签

生产环境中的LoRA适配器组合:无冲突运行多个微调技能

· 阅读需 11 分钟
Tian Pan
Software Engineer

这个方案听起来简洁明了:为每种专项技能分别微调轻量级LoRA适配器——一个处理专业语气,一个处理JSON格式化,一个处理医学术语,一个负责安全护栏——然后在推理时将它们组合起来。团队上线了这套设计,开发阶段运行良好,但到了生产环境却频频崩溃:两个适配器开始争夺同一权重区域,输出质量骤降,最终与未经训练的基础模型毫无二致。不是略有下降,而是彻底退化。

本文探讨适配器组合在实际应用中的表现、朴素合并为何屡屡失败,以及哪些策略在生产规模下真正有效。

没人讨论的端侧 LLM 问题:模型更新传播

· 阅读需 13 分钟
Tian Pan
Software Engineer

大多数构建端侧 LLM 功能的工程师,将时间花在解决那些显而易见的问题上:量化、延迟、内存限制。模型能装进手机,推理速度够快,演示效果也很好看。然后他们向数百万台设备发布,才发现一个更难的问题——从来没人提前告诉他们:你现在有数百万个独立的计算节点,运行着你 AI 模型的不同版本,而你根本没有可靠的方式知道任何一个用户运行的是哪个版本。

云端推理在最好的意义上是无聊的。你更新模型,重新部署服务器,几分钟内整个用户群就都在运行新版本了。端侧推理则彻底打破了这个假设。一个三个月前最后一次打开你应用的用户,仍在运行那时当前的模型——而且没有干净的方法强制更新,没有服务器端回滚,也没有简单的方法在没有你从一开始就构建的监控埋点的情况下检测到版本不匹配。

这种版本碎片化是端侧 AI 的核心运营挑战,其后果远不止缓慢的发布。它造成无声的能力漂移,使事故响应复杂化,并将你的"AI 功能"变成一个由独立运行的异构系统组成的庞大集群——你对其负责,却无法直接控制。

浏览器原生 LLM 推理:你不知道自己需要的 WebGPU 工程化实践

· 阅读需 12 分钟
Tian Pan
Software Engineer

大多数 AI 功能的架构都大同小异:用户输入发送到 API,云端 GPU 进行处理,然后响应返回。这种往返过程已经如此常态化,以至于工程师们很少对其产生质疑。但它带有一个隐藏的“税”:每次交互都有 200–800 ms 的网络延迟,API 密钥必须存放在某个可访问的地方(因此容易受到攻击),而且你无法控制系统运行时间的硬性依赖。

通过 WebGPU 实现的浏览器原生 LLM 推理打破了这三个假设。模型在用户的 GPU 上运行,位于浏览器沙箱内,没有网络往返。这并非未来的功能 —— 截至 2025 年末,WebGPU 已在 Chrome、Firefox、Edge 和 Safari 中默认出货,覆盖了全球约 82.7% 的浏览器流量。工程问题已从“我们能做到吗?”转向“它何时能击败云端,以及我们如何在两者之间进行智能路由?”

压缩决策:延迟敏感型 AI 功能的量化、蒸馏与端侧推理

· 阅读需 11 分钟
Tian Pan
Software Engineer

模型路由是大多数团队首先采用的优化手段:将简单查询路由到小型廉价模型,复杂查询路由到大型强力模型。它在控制成本和吞吐量方面效果良好。但当云端推理的物理限制与 100ms 以内的延迟需求发生碰撞时,路由便无能为力了。从中间层数据中心发出的一次网络往返,在生成第一个 token 之前就已消耗 30–80ms。此时路由毫无意义——你要么需要将模型运行得更靠近用户,要么需要运行一个规模大幅缩减的模型。这两条路都需要压缩决策,而大多数团队对此并没有清晰的框架。

本文是一份做出这些决策的指南。量化、知识蒸馏和端侧部署这三种技术解决的问题有所重叠,但它们的成本结构、质量表现和运营影响各不相同。

端侧 LLM 推理:何时将 AI 迁出云端

· 阅读需 14 分钟
Tian Pan
Software Engineer

大多数团队只有在亲身碰壁后,才会发现云端运行 AI 推理的棘手之处:追溯到个人健康信息(PHI)跨越 API 边界的 HIPAA 审计;在预发布环境中表现良好,直到处于不稳定连接环境下的用户反馈“一直在转圈”的延迟数据;或者是每天 10,000 次请求时看似合理,但在 1,000 万次请求时却变成灾难的单次推理 API 账单。设备端推理通常是正确的答案 —— 但团队选择它的原因以及他们遇到的问题,很少与博客文章对比中提到的相同。

这是一个关于该决策的实用指南:本地执行何时优于云端 API、哪些小模型真正具备交付能力,以及在基准测试演示结束后,部署生命周期是什么样的。

语法约束生成:大多数团队忽视的输出可靠性技术

· 阅读需 11 分钟
Tian Pan
Software Engineer

大多数需要结构化LLM输出的团队都遵循同一套方案:写一个提示词说"只返回有效的JSON",解析响应,运行Pydantic验证,失败则附上错误信息重试。这种方式在大多数情况下能用,但在生产环境中恰恰会在最糟糕的时刻失效——高负载、边缘用例输入,以及指令遵循不如GPT-4可靠的低成本模型。

语法约束生成是一种根本不同的方法。它不是礼貌地请求模型然后事后检查,而是从数学上让结构无效的输出成为不可能。模型无法输出缺失的括号、不存在的枚举值或遗漏的必填字段——因为这些token在采样前就被过滤掉了。不是不太可能,而是不可能。

大多数团队跳过了这个方法,但不应该。

混合 LLM 工作负载的 GPU 调度:那个没人解决好的装箱问题

· 阅读需 12 分钟
Tian Pan
Software Engineer

大多数运行 LLM 推理的 GPU 集群正在浪费 30% 到 50% 的可用算力。这并非因为工程师粗心,而是因为调度问题本身极为困难——而大多数团队首先想到的工具根本不是为此设计的。

标准做法是搭建 Kubernetes,为每个 Pod 申请完整的 GPU,然后让调度器自行处理。这对训练任务运行良好。但对于处理异构模型集合的推理场景,这种方式会悄悄摧毁利用率。一个运行三个不同 7B 模型且流量稀疏的集群,每个 GPU 的实际繁忙时间可能不足 15%,同时却处于完全"已分配"状态,拒绝调度任何新任务。

根本原因在于 Kubernetes 理解 GPU 的方式与 LLM 推理实际需求之间的错配。

非确定性税:在概率性基础设施上构建可靠的流水线

· 阅读需 11 分钟
Tian Pan
Software Engineer

在生产级 LLM 工程中,设置 temperature=0 并期望获得可重现的输出是最常见的误解之一。这种想法很直观:温度控制随机性,所以零温度意味着零随机性。但温度只控制 Token 选择规则 —— 将概率采样切换为贪婪的 argmax。它对稳定 Logits 本身 毫无作用,而这才是真正产生变数的地方。

实际后果是:在 temperature=0 的情况下,针对同一个模型运行同一段提示词一千次,可能会产生 80 种不同的补全结果。这并非假设 —— 而是在现实的推理服务器条件下测试 Qwen3-235B 模型的实证结果。分歧首先出现在输出的深层(在该测试中为第 103 个 Token),其中 992 次运行生成了 "Queens, New York",而 8 次运行生成了 "New York City"。同样的模型,同样的提示词,同样的温度,由于服务器上不同的批处理状态而导致了差异。

知识蒸馏的经济学:压缩前沿模型真的划算吗?

· 阅读需 11 分钟
Tian Pan
Software Engineer

大多数采用知识蒸馏的团队,都在错误的理由和错误的时机下做出了这个决定。他们看到一个70B模型吞噬了推理预算,读到蒸馏可以产出一个"同样出色"的7B学生模型,便立即开干。六周后,他们得到了一个在验证集上表现良好的蒸馏模型,上线后却开始大规模输出自信满满的废话。验证集来自与教师模型合成训练数据相同的分布,而真实流量并非如此。

蒸馏是一种优化工具,而非能力升级手段。只有在特定条件下,经济账才算得过来——而且失败模式足够隐蔽,团队往往要等到用户先发现问题。

当思考模型真正发挥作用时:生产环境推理算力的决策框架

· 阅读需 11 分钟
Tian Pan
Software Engineer

有一项研究,研究人员要求一个推理模型比较两个数字:0.9 和 0.11。一个模型花了 42 秒才给出答案。数学计算只花了几毫秒。模型在剩下的 41.9 秒里都在进行糟糕的思考。它重新审视自己的答案,怀疑自己,重新考虑,最后得出了它在前三个 token 中就已经得出的正确结论。

这就是过度思考的问题,它并非个案。当你将推理侧计算(inference-time compute)不加区分地应用于不需要它的任务时,就会发生这种情况。

"https://opengraph-image.blockeden.xyz/api/og-tianpan-co?title=%E5%BD%93%E6%80%9D%E8%80%83%E6%A8%A1%E5%9E%8B%E7%9C%9F%E6%AD%A3%E5%8F%91%E6%8C%A5%E4%BD%9C%E7%94%A8%E6%97%B6%EF%BC%9A%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E6%8E%A8%E7%90%86%E7%AE%97%E5%8A%9B%E7%9A%84%E5%86%B3%E7%AD%96%E6%A1%86%E6%9E%B6"

推理模型(o1、o3、DeepSeek R1、具有扩展思考能力的 Claude)的出现,代表了解决难题能力上的真正飞跃。但它也引入了一类新的生产错误:在快速、廉价的生成完全足够的情况下,部署了昂贵且缓慢的深思熟虑。正确做出这一决策,对于构建真正有效的 AI 系统正变得越来越核心。

LLM 延迟分解:为什么 TTFT 和吞吐量是两个不同的问题

· 阅读需 13 分钟
Tian Pan
Software Engineer

大多数在 LLM 上构建应用的工程师都将延迟视为一个单一的刻度盘。他们调整一些参数——批处理大小(batch size)、量化级别(quantization level)或实例类型(instance type)——观察“它是否变快了”,然后就收工了。这在上线生产环境之前一直有效,直到你发现 p50 TTFT 看起来不错,而 p99 却超过了 3 秒,或者发现让吞吐量翻倍的优化不知为何却让单个用户感觉系统变慢了。

TTFT 和吞吐量(throughput)并不是同一个滑块的两端。它们是由根本不同的物理特性引起的,受不同瓶颈的影响,并由不同的技术修复。将它们视为可互换的是我在生产环境中看到的大多数 LLM 推理事故的根本原因。

生产环境中的 LLM 延迟:哪些手段真正能见效

· 阅读需 12 分钟
Tian Pan
Software Engineer

大多数 LLM 延迟建议往往会陷入以下两种失败模式之一:要么关注错误的指标,要么推荐的优化过于依赖特定硬件,除非你运行自己的推理集群,否则难以应用。如果你是基于托管 API 或受管推理提供商进行构建,那么这类建议中的大部分都是噪音。

本文专注于真正能产生影响的因素 —— 无论你是否控制整个技术栈,这些技术都适用,且基于生产数据而非基准测试的实验室条件。