TT Lab
开始
学习 学习路径 课程

LLM 服务

先把测量契约定死,再谈工具叫什么

在 TT Lab 中继续学习

一句话总结

模型服务器中没有普遍的赢家。必须以相同的模型、硬件和工作负载进行测量,并同时比较所需的功能和运营成本。

为什么需要这个?

对于“应该使用什么服务器”的问题,一张基准表无法给出答案,因为同一工具根据工作负载的不同,有时是最佳选择,有时是不合适的。

首先要确定标准。是交互式还是排布式,输入·输出长度分布如何,提示中有没有很多共同的前缀,同步峰值是多少,是否需要支持结构化输出或特定量化,是否可以承担引擎构建和版本升级的费用。

怎么行动

要再现比较,首先要固定测量合同。

  1. 不仅记录模型名称,还记录准确的版本、托克纳泽、dtype·量化方式和服务器版本。
  2. GPU模型、数量、驱动程序和运行时版本、内存限制和容器镜像保持一致。
  3. 从实际流量中提取输入·输出令牌长度、共同前缀比例、同步性和到达间隔,然后播放。
  4. 热身后反复重复TTFT·ITL·终端间延迟p50/p95/p99、处理令牌数、错误率、GPU内存和占用率一起记录。
  5. 确认是否是相同的质量设置。如果只使用一个候选人更具攻击性的量化或更短的最大输出,这不是速度比较。

接下来来看一下功能和运营限制。vLLM的基于区块的KV缓存管理、SGLang的前缀重复使用功能、TensorRT-LLM的预构建引擎、TGI的支持模型·部署整合、Ollama的本地运行便利性,分别只是缩小候选人的线索,不能保证性能排名。即使功能名称相同,根据发布、模型和请求分布也会有不同的收益,所以决定实际使用的组合要根据文档和测量结果来决定。

在现场相遇的样子

比起选择,更重要的是能够重现结果。基准报告中会留下执行命令、镜像和模型修订版、工作负载数据生成方法、同步性、热启动、重复次数和原始结果。即使只是提高平均处理量,如果p99 TTFT或错误率超过产品SLO,也无法采用。

还有比选择服务器更重要的决定。是模型大小和量化。在不包含7B fp16权重的GPU上只更换服务器没有意义。如果用AWQ或GPTQ将权重量化为4位,理论上权重内存比fp16少约4分之一,但包括KV缓存、运行时工作空间、量化元数据在内的整个GPU内存并不少于4分之一。实际的节省幅度和质量损失需要用支持的模型和服务器组合来测量。

服务器实际做的事情

vLLM·TGI·TensorRT-LLM虽然名字不同,但制造性能的设备基本上是一样的。 知道那个的话,即使设置的名字不一样,也能知道在调节什么。

连续分批(continuous batching)。不等到请求结束,每个步骤 除了完成的,放新的东西。处理量比静态布局高几倍。这就是 是否打开是第一个确认事项。

PagedAttention. KV缓存按页面管理,不进行碎片化。以前是 提前固定到最大长度,浪费了实际使用的两到三倍。

前缀缓存。像系统提示一样,重复使用前部分相同的请求的KV。 因为不会影响精度,而且可以减少TTFT,所以是第一个打开的。

量化。将权重减少到4~8位,节省内存和带宽。质量损失 所以用评价集确认后进行。

如何分配内存?

GPU内存分为三个部分。

전체 24GB
 ├ 가중치         16.2GB   ← 모델 크기 × 비트수/8
 ├ KV 캐시         6.5GB   ← 나머지의 대부분. 동시 요청 수를 정한다
 └ 활성화·여유     1.3GB

gpu_memory_utilization增加的话,KV缓存会变大,同时处理量也会增加,但是太 上传的话,激活的余地不足,会收到OOM。0.90~0.93是实用范围。

KV缓存大小与同时请求次数和上下文长度乘积成正比。

KV 바이트 ≈ 2 × 레이어 × 헤드 × 헤드차원 × 문맥길이 × 배치 × 정밀도바이트

因此,如果将语境从16K增加到32K,可以同时处理的请求数量将减少一半。 “让语境保持开放”不是免费的。

怎么称重什么?

在选择工具之前,要固定衡量标准。否则,就没有可比性。

价值 定义 陷阱
TTFT 请求 → 第一个令牌 启用前缀缓存会变得非常好
TPOT 令牌之间的平均间隔 配置越大越差
处理量 每秒输出令牌(全部) 必须同时写下请求数量才有意义
p95延迟 前5% 仅看平均值就会错过

第三个很重要。“138 tok/s”取决于是同时4个请求的总和还是单个请求。 完全不同的数字。写基准时,同时性、输入长度、输出长度一起 写。如果没有这三个,就无法再现。

在下次确认中看到的东西

在测验中确认了符合工作负载条件的服务器选择标准后,在下一个模块中,直接用计算器计算出成为判断依据的GPU内存计算。