什么是人工智能可扩展性?

什么是人工智能可扩展性?

如果你曾经看到过演示模型在小规模测试负载下运行流畅,但一旦真实用户涌入就立刻卡死,那么你就遇到了罪魁祸首:扩展性。人工智能贪婪地消耗数据、计算能力、内存、带宽,甚至还有一点奇怪的是,它对用户注意力也同样贪婪。那么,人工智能的可扩展性究竟是什么?如何在不每周重写所有代码的情况下实现它?

您可能想阅读以下文章:

🔗 什么是人工智能偏见?简单解释一下。
了解隐藏的偏见如何影响人工智能的决策和模型结果。

🔗 入门指南:什么是人工智能
人工智能概述、核心概念、类型和日常应用。

🔗 什么是可解释人工智能?它为何如此重要?
了解可解释人工智能如何提高透明度、信任度和监管合规性。

🔗 什么是预测性人工智能?它是如何运作的?
了解预测性人工智能、常见用例、优势和局限性。


什么是人工智能可扩展性?📈

AI 可扩展性是指 AI 系统在处理更多数据、请求、用户和用例的同时,还能将性能、可靠性和成本控制在可接受范围内的能力。这不仅仅是指更大的服务器,而是更智能的架构,能够在需求增长的同时保持低延迟、高吞吐量和稳定的质量。这包括弹性基础设施、优化的模型以及能够实时监测系统运行状况的可观测性。


优秀人工智能可扩展性的要素是什么?✅

如果人工智能可扩展性做得好,您将获得:

  • 即使在峰值或持续负载下,延迟也可预测

  • 吞吐量大致与新增硬件或副本数量成正比

  • 成本效益高,不会因每次请求而大幅增加

  • 随着投入多样化和产量增加,质量稳定性

  • 得益于自动扩缩容、追踪和合理的SLO,运行保持稳定。

在底层,这通常融合了水平扩展、批量处理、缓存、量化、强大的服务以及与错误预算相关的周全的发布策略[5]。


AI 可扩展性 vs 性能 vs 容量 🧠

  • 性能是指单个请求在独立状态下完成的速度。

  • 容量是指你一次可以处理多少个这样的请求。

  • AI 可扩展性是指增加资源或使用更智能的技术来提高容量并保持性能稳定,而不会导致账单或寻呼机过载。

微小的区别,巨大的后果。


为什么规模化在人工智能中有效:规模化定律的概念📚

现代机器学习中一个被广泛接受的观点是,在合理的范围内,随着模型规模、数据量和计算能力的增加,损失函数会以可预测的方式改善。此外,模型规模和训练样本数量之间存在一个计算最优平衡点;同时扩展两者优于仅扩展其中一项。在实践中,这些理念指导着训练预算、数据集规划和服务权衡[4]。

简单来说:越大越好,但前提是输入规模和计算比例也要相应调整——否则就好比给自行车装上拖拉机轮胎,看起来很厉害,但实际上毫无意义。


水平方向与垂直方向:两种缩放杠杆🔩

  • 垂直扩展:更大的服务器、更强大的GPU、更多的内存。简单易行,但有时成本较高。适用于单节点训练、低延迟推理,或模型难以有效分片的情况。

  • 水平扩展:增加 Pod 副本数。它与自动扩缩器。在 Kubernetes 中,Horizo​​ntalPodAutoscaler 会根据需求扩展 Pod,相当于应对流量高峰的基本控制机制 [1]。

轶事(综合):在一次备受瞩目的产品发布期间,仅仅启用服务器端批处理并让自动扩缩容器根据队列深度做出反应,就稳定了 p95 性能,而无需任何客户端更改。低调的成功也是成功的。


AI可扩展性的完整栈🥞

  1. 数据层:快速对象存储、向量索引和流式摄取,不会限制训练器的速度。

  2. 训练层:处理数据/模型并行性、检查点、重试的分布式框架和调度器。

  3. 服务层:优化的运行时、动态批处理分页注意力机制、缓存、令牌流。Triton 和 vLLM 经常是这方面的佼佼者 [2][3]。

  4. 编排:Kubernetes 通过 HPA 或自定义自动扩缩器实现弹性[1]。

  5. 可观测性:跟踪用户旅程和在生产环境中建模行为的跟踪、指标和日志;围绕您的 SLO 进行设计 [5]。

  6. 治理与成本:按请求计费、预算以及失控工作负载的终止开关。


对比表格:人工智能可扩展性的工具和模式🧰

故意做得有点不均匀——因为现实生活本来就是如此。

工具/图案 观众 价格差不多 为什么它有效 笔记
Kubernetes + HPA 平台团队 开源 + 基础设施 随着指标飙升,水平方向扩展节点。 自定义指标是宝贵的[1]
NVIDIA Triton 推理SRE 免费服务器;GPU 费用 动态批处理提升吞吐量 通过config.pbtxt [2]
vLLM(PagedAttention) LLM团队 开源 通过高效的KV缓存分页实现高吞吐量 非常适合长提示[3]
ONNX 运行时/TensorRT 性能极客 免费/供应商工具 内核级优化可降低延迟 导出路径可能很麻烦
RAG图案 应用团队 基础设施 + 指数 将知识卸载到检索;扩展索引 非常适合保鲜

深度解析1:扭转乾坤的发球技巧🚀

  • 动态批处理将服务器上的小型推理调用分组到更大的批次中,从而在不更改客户端的情况下大幅提高 GPU 利用率 [2]。

  • 分页注意力机制通过对 KV 缓存进行分页,将更多的对话保存在内存中,从而提高并发情况下的吞吐量 [3]。

  • 进行请求合并和缓存,可以避免重复工作。

  • 推测性解码和令牌流式传输可以降低感知延迟,即使实际时间几乎没有变化。


深度解析 2:模型级效率——量化、提炼、剪枝 🧪

  • 量化会降低参数精度(例如,8 位/4 位),以减少内存占用并加快推理速度;更改后务必重新评估任务质量。

  • 蒸馏技术将知识从大型教师传递给小型学生,而你的硬件恰好能够接受这种传递方式。

  • 结构化修剪会剪掉贡献最小的枝条/枝头。

说实话,这有点像缩小行李箱尺寸后,却坚持说所有鞋子都还能穿得下。虽然大多数情况下确实如此。


深度解析3:轻松实现数据和训练规模化🧵

  • 使用分布式训练来隐藏并行处理的复杂部分,以便更快地发布实验结果。

  • 记住这些扩展法则:仔细地在模型大小和代币之间分配预算;同时扩展两者可以提高计算效率[4]。

  • 课程设置和数据质量对结果的影响往往比人们承认的要大。有时,更好的数据胜过更多的数据——即使你已经订购了更大的数据集。


深度解析 4:RAG 作为知识规模化策略🧭

RAG 算法并非为了应对不断变化的事实而重新训练模型,而是在推理阶段增加了一个检索步骤。这样,您可以保持模型稳定,并随着语料库的增长扩展索引检索器。对于知识密集型应用而言,这种方法既优雅又通常比完全重新训练模型更经济。


可观测性本身就能带来收益🕵️♀️

你无法衡量你看不见的东西。两个关键点:

  • 容量规划和自动扩展指标

  • 跟踪单个请求从网关→检索→模型→后处理的整个过程。将测量结果与服务级别目标 (SLO) 关联起来,以便仪表板能够在不到一分钟的时间内回答问题 [5]。

当仪表盘能在不到一分钟的时间内回答问题时,人们就会使用它们。如果不能,他们就会假装在用。


可靠性保障措施:服务级别目标 (SLO)、错误预算、合理的部署 🧯

  • 为延迟、可用性和结果质量定义SLO 错误预算来平衡可靠性和发布速度 [5]。

  • 在流量分流后部署,进行金丝雀测试,并在全局切换前运行影子测试。未来的你会收到惊喜。


控制成本,避免不必要的麻烦💸

扩展不仅仅是技术问题,更是财务问题。将 GPU 时间和代币视为一流资源,并制定单位经济效益指标(每 1000 个代币、每个嵌入、每个向量查询的成本)。添加预算和警报机制;鼓励用户删除资源。


实现人工智能可扩展性的简易路线图🗺️

  1. 从 p95 延迟、可用性和任务准确性的SLO 开始

  2. 选择支持批量处理和连续批量处理的服务堆栈:Triton、vLLM 或同等产品[2][3]。

  3. 优化模型:在有帮助的地方进行量化,启用更快的内核,或针对特定任务进行提炼;通过实际评估验证质量。

  4. 弹性架构:Kubernetes HPA 具有正确的信号、独立的读/写路径和无状态推理副本[1]。

  5. 采用检索方式,这样可以扩展索引,而不是每周重新训练。

  6. 闭环成本控制:建立单位经济效益模型并进行每周审查。


常见故障模式及快速解决方法🧨

  • GPU 利用率仅为 30%,延迟却很高。

    • 启用动态批处理,谨慎提高批处理上限,并重新检查服务器并发性[2]。

  • 长时间提示会导致吞吐量下降。

    • 使用支持分页注意力的,并调整最大并发序列数[3]。

  • 自动缩放器襟翼

    • 使用窗口平滑指标;按队列深度或自定义每秒令牌数进行缩放,而不是纯粹的 CPU [1]。

  • 发射后成本暴涨

    • 添加请求级成本指标,在安全的情况下启用量化,缓存热门查询,并对最严重的违规者进行速率限制。


AI 可扩展性行动指南:快速检查清单 ✅

  • 服务级别目标 (SLO) 和错误预算是存在的,并且是可见的。

  • 指标:延迟、TPS、GPU内存、批处理大小、令牌/秒、缓存命中率

  • 从入口到模型再到后处理的跟踪

  • 服务配置:启用批处理、优化并发性、预热缓存

  • 模型:在有帮助的情况下,可以进行量化或提炼。

  • 基础设施:HPA 配置了正确的信号

  • 知识新鲜度的检索路径

  • 单位经济效益经常被审查


太久没读了,还有最后的一些感想🧩

AI 可扩展性并非单一功能或秘密开关,而是一种模式语言:利用自动扩缩器进行横向扩展,通过服务器端批处理提高资源利用率,提升模型级效率,通过检索卸载知识,以及实现可观测性,让部署变得轻松无忧。此外,还要加入服务级别目标 (SLO) 和成本控制,确保所有人目标一致。第一次不可能做到完美——没有人能做到——但只要有正确的反馈循环,你的系统就能稳步发展,而无需在凌晨两点提心吊胆😅


参考

[1] Kubernetes 文档 - 水平 Pod 自动扩缩容 - 阅读更多
[2] NVIDIA Triton - 动态批处理程序 - 阅读更多
[3] vLLM 文档 - 分页注意力 - 阅读更多
[4] Hoffmann 等人 (2022) - 训练计算最优的大型语言模型 - 阅读更多
[5] Google SRE 工作簿 - 实施 SLO - 阅读更多

在官方 AI 助手商店寻找最新的 AI

关于我们

返回博客