Zubnet AI学习Wiki › 优化
训练

优化

别名:模型优化、推理优化

一系列用于使AI模型更快、更小、更便宜或更准确的技术。这包括训练优化(混合精度、梯度检查点、数据并行)— 推理优化(量化、剪枝、知识蒸馏、推测解码)— 以及服务优化(批处理、缓存、负载均衡)。优化使得你可以在笔记本电脑上运行140亿参数的模型。

为什么重要

原始能力如果无法负担运行成本,就毫无意义。优化是研究演示与生产产品之间的关键差异—这也是为什么开放权重模型能够与API提供商竞争,为什么移动AI得以存在,以及为什么推理成本持续下降的原因。

深度解析

AI优化实际上是三个不同的学科,它们恰好共享同一个名称。训练优化旨在使学习过程更快、更便宜。推理优化旨在使训练好的模型响应更快、使用更少的硬件资源。服务优化旨在高效处理大量并发用户。大多数人会混淆这些,因为技术有时有重叠,但目标和约束条件是不同的。像梯度检查点这样的训练优化技术会用计算时间换取内存——你在反向传播过程中重新计算激活值,而不是存储它们。这在多日训练过程中GPU内存受限时是有意义的。但在推理过程中,由于没有反向传播,这种做法就没有意义了。了解你正在优化的阶段,以及用什么资源换取什么资源,是做出良好决策的基础。

量化:最大的性能提升

如果你只能学习一种优化技术,量化就是最佳选择。其理念很简单:模型通常以高精度浮点数(通常是bfloat16,每个参数使用16位)进行训练,但它们可以在精度显著降低的情况下运行而不会造成严重质量损失。一个140亿参数的bfloat16模型需要约28GB的VRAM。将其量化为4位(llama.cpp中的Q4_K_M表示法),它就可容纳在9GB以下——突然间,它就能在一块消费级GPU上运行。质量折损确实存在,但比你预期的要小。现代量化方法如GPTQ、AWQ和GGUF会使用真实数据进行校准,从而确保最重要的权重保持较高精度。在盲测中,大多数用户无法区分全精度模型和其4位量化版本在日常任务中的差异。差距主要体现在边缘案例——复杂的推理链条、小众事实知识、多语言任务——但对于大多数生产使用场景,量化是免费的性能提升。

推理速度:批处理、缓存与推测解码

除了量化,推理速度的提升主要来自于如何管理请求,而不是如何缩小模型。连续批处理(vLLM和TensorRT-LLM采用的方法)使服务器能够同时处理多个请求,利用GPU空闲周期,否则这些周期会在一个请求等待下一个token时被浪费。KV缓存优化(如PagedAttention)可防止键值缓存的内存开销随序列长度线性增长,这对于长上下文应用至关重要。推测解码使用一个小型、快速的“草稿”模型生成多个候选token,然后由大型模型在一个前向传递中验证它们——如果草稿模型猜对了(对于可预测的文本,它通常能猜对),你只需一次大型模型调用的代价就能获得多个token。这些技术可以叠加。一个经过良好调优的服务栈,结合连续批处理、量化和推测解码,可以以比原始实现高五到十倍的吞吐量运行相同模型。

实际中的成本方程

对于大多数团队来说,优化最终都是关于每个查询的成本。在A100集群上运行一个700亿参数模型需要花费大量资金——按云服务价格计算,每小时每块GPU成本约为8至15美元。优化决定了该集群每秒能处理50个请求还是500个请求。蒸馏是另一个杠杆:你训练一个更小的“学生”模型,让它模仿在特定任务上大型“教师”模型的输出。一个蒸馏后的80亿参数模型,如果在你的特定使用场景中能匹配700亿参数模型90%的质量,其运行成本只是后者的几分之一。许多团队遵循的实际工作流程是:通过API使用最大可用模型进行原型设计,测量你实际需要的质量水平,然后反向推导——量化、蒸馏或切换到更小的模型,直到找到质量可接受且成本可持续的平衡点。跳过这个过程,直接在生产中使用最大模型的团队几乎总是超支。

相关概念

← 所有术语
← OpenAI 过拟合 →
ESC