跳到主要内容

39 篇博文 含有标签「performance」

查看所有标签

串行工具调用瀑布:Agent循环中隐藏的延迟税

· 阅读需 10 分钟
Tian Pan
Software Engineer

如果你曾剖析过一个莫名其妙跑得很慢的AI Agent,大概率会发现一个瀑布。Agent调用工具A,等待,再调用工具B,等待,再调用工具C——即便B和C根本不依赖A的结果。你为1倍的工作量付出了3倍的延迟。

这个模式并非边缘情况,而是几乎所有Agent框架的默认行为。模型在单次响应中返回多个工具调用,执行循环则逐一按顺序运行它们。修复并不复杂,但前提是要有一种可靠的方法来识别哪些调用真正相互独立。

AI 推理的突发容量规划:当黑色星期五遇上你的 KV Cache

· 阅读需 12 分钟
Tian Pan
Software Engineer

黑色星期五的流量峰值来了。传统 API 服务的应对方式是启动更多容器。60 秒之内,你的容量就扩充到三倍。自动扩缩容器做了它一贯的事,你安然入睡。

但如果用同一个自动扩缩容器跑 LLM,结果就大相径庭了。新的 GPU 实例要在四分钟的模型权重加载之后才能上线。等那时候,你的请求队列已经塞满,现有 GPU 在半途生成的请求的内存压力下颠簸挣扎,用户盯着转圈圈的加载动画发呆。增加更多算力没有任何帮助——瓶颈根本不在你以为的地方。

AI 推理负载打破了让响应式自动扩缩容在传统服务中奏效的大多数假设。理解其中的原因,是构建能够扛住流量峰值的系统的前提。

AI 工作负载的容量规划:当 Token 成为你的核心资源时,传统方法为何失效

· 阅读需 12 分钟
Tian Pan
Software Engineer

你的 GPU 监控面板正在欺骗你。利用率显示 60%,推理集群看起来健康无虞。用户却在经历 8 秒的首 Token 时间(TTFT)。值班工程师检查内存——正常。计算——正常。然而队列在增长,延迟在飙升。这就是将传统容量规划应用于 LLM 工作负载时会发生的事:你信赖的指标指向了错误的地方,真正的瓶颈在用户开始抱怨之前一直不可见。

根本问题在于:LLM 消耗的是一种本质上不同的资源。CPU 服务交换的是计算和内存。LLM 服务交换的是 Token——而 Token 的行为与请求截然不同。

推理优化陷阱:为什么提升单个模型的速度反而会拖慢你的系统

· 阅读需 11 分钟
Tian Pan
Software Engineer

你将昂贵的 LLM 换成了更快、更便宜的蒸馏模型。延迟增加了,成本上升了,质量下降了。你感到困惑并回滚了版本,因为你刚刚花了三周时间做的优化工作反而让一切变得更糟。

这并非假设。这是生产环境 AI 系统中最常见的失败模式之一,它源于一个诱人但错误的心理模型:优化某个组件就能优化整个系统。

推理服务商向你隐瞒了什么:KV 缓存、批处理与延迟底线

· 阅读需 14 分钟
Tian Pan
Software Engineer

你正在运行一个由 LLM 驱动的应用,你的 p99 延迟为 4 秒。你已经优化了提示词,减少了输出长度,并切换到了流式传输。但这个数字几乎没变。问题不在于你的代码——而是在你无法控制的黑盒内部运作的物理学和排队论。

每个推理服务商在你的第一次 API 调用之前,就已经通过数十项架构决策决定了你应用的性能上限。KV 缓存淘汰策略、连续批处理(continuous batching)调度、分块预填充(chunked prefill)块大小——文档中没有提到这些,你也无法配置,但它们决定了你不得不面对的延迟和成本曲线。

这篇文章将解释推理基础设施内部究竟发生了什么,为什么它会产生不可避免的延迟底线,以及你真正能做的少数几件事。

生产环境中的端侧 LLM 推理:何时选择边缘模型以及它们的实际成本

· 阅读需 12 分钟
Tian Pan
Software Engineer

大多数团队决定使用端侧 LLM 推理的方式,就像他们决定重写数据库时一样:冲动行事,仅仅是为了应对原本可以用更廉价方案解决的问题。推介词总是令人心动——无需网络往返、完全隐私、零推理成本——而且初始原型也验证了这一点。然而,在发布六个月后,模型开始悄无声息地输出更差的结果,新的操作系统更新打破了量化兼容性,而那些使用廉价安卓手机的用户正在运行一个你无法推送更新的版本。

本指南旨在让你在看清现实的情况下做出决策。在特定场景下,端侧推理确实是正确的选择,但其成本结构与团队预期的不同,且生产环境中的失效模式与云端 LLM 部署几乎完全不同。

当代码胜过模型:用确定性逻辑替换 LLM 调用的决策框架

· 阅读需 9 分钟
Tian Pan
Software Engineer

大多数 AI 工程团队都有着相同的故事。他们从一个真正需要 LLM 的难题开始。然后,一旦 LLM 基础设施到位,每一个新问题在他们眼中都成了那把锤子下的钉子。六个月后,他们甚至在调用 GPT-4o 来检查电子邮件地址是否包含 “@” 符号 —— 并且还在为此付费。

这种 “直接用模型” 的本能反应现在是 AI 应用中不必要的复杂性、虚高成本和脆弱生产系统的主要驱动力。这并不是因为工程师们粗心大意。而是因为 LLM 确实令人印象深刻,工具链降低了使用门槛,而且一旦你构建了 LLM 流水线,增加另一次调用感觉成本极低。事实并非如此。

数据库连接池:AI 流水线中被忽视的性能瓶颈

· 阅读需 10 分钟
Tian Pan
Software Engineer

你的 AI 功能上线了。在预发环境中,响应时间看起来还不错。一周后,生产环境开始出现神秘的 p99 尖峰——在中等负载下,延迟从 800ms 飙升至 8 秒,而 GPU 压力正常,模型没有报错,也找不到明显原因。你扩容了更多副本,没有改善。你对模型服务做了性能剖析,没有问题。你加了缓存,还是没用。

最终,有人查了数据库连接池的等待时间。从第三天起,它的利用率就已经高达 95%。

这是 AI 生产事故中最常见的一类,却鲜有人谈及——因为连接池耗尽的表现很像模型变慢。症状出现在错误的层级:你看到的是 LLM 调用延迟高,而不是数据库查询慢,所以定位问题往往需要数天,而用户一直在忍受降级的响应。

边缘推理决策框架:何时在本地而非云端运行 AI 模型

· 阅读需 14 分钟
Tian Pan
Software Engineer

大多数团队在做“云端 vs. 边缘”的决策时往往凭直觉:因为云端更简单,所以他们默认选择云端。直到 HIPAA 审计来袭,或者延迟 SLO 下降了 400 ms,亦或是收到了当月的账单。只有到那时,他们才会反思是否某些推理本来就应该在本地完成。

答案几乎永远不会是“全云端”或“全边缘”。大规模运行生产级 AI 的团队已经达成共识,采用了分层架构:由设备端或本地模型处理大部分请求,而云端前沿模型则负责处理小模型无法应对的情况。正确处理这种路由是一个工程决策,而不是一种直觉。

这就是进行严谨决策的决策框架。

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

· 阅读需 11 分钟
Tian Pan
Software Engineer

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

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

投机解码在生产环境中的应用:免费 Token 与隐藏陷阱

· 阅读需 10 分钟
Tian Pan
Software Engineer

大多数 LLM 推理瓶颈归结于一个令人不安的事实:GPU 在等待内存带宽,而非计算资源。每生成一个 token,都需要从 HBM 加载整个模型权重,这一传输过程主导了运行时间。投机解码正是为了利用这一空隙而设计的——但其收益取决于你的基准测试几乎肯定没有测试过的条件。

将投机解码部署到生产环境的团队,往往发现其实际表现比实验室数据低 40–60%。这不是因为该技术存在缺陷,而是因为工作负载特征以重要的方式发生了变化:更大的批量、更短的输出、更严格的输出约束。理解投机解码何时真正有效、何时会悄然造成伤害,是负责任部署的前提。

Token 是有限资源:复杂 Agent 的上下文预算分配框架

· 阅读需 11 分钟
Tian Pan
Software Engineer

前沿模型如今宣传的上下文窗口动辄 200K、1M 乃至 2M token。工程团队将其视为已解决的问题而继续前行。数字如此之大,我们应该永远不会触及上限。

然而,在一个自主研究任务执行六小时后,agent 开始产生幻觉,对它三小时前编辑过的文件路径一无所知。一个代码 agent 自信地打开了它在第四轮已删除的函数。文档分析流水线开始与它之前从同一文档得出的结论相矛盾。这些不是模型失败——它们是上下文预算失败:可预测、可测量,而且只要将上下文窗口视为它实际所是的稀缺计算资源,几乎完全可以预防。