先把测量契约定死,再谈工具叫什么
一句话总结
模型服务器中没有普遍的赢家。必须以相同的模型、硬件和工作负载进行测量,并同时比较所需的功能和运营成本。
为什么需要这个?
对于“应该使用什么服务器”的问题,一张基准表无法给出答案,因为同一工具根据工作负载的不同,有时是最佳选择,有时是不合适的。
首先要确定标准。是交互式还是排布式,输入·输出长度分布如何,提示中有没有很多共同的前缀,同步峰值是多少,是否需要支持结构化输出或特定量化,是否可以承担引擎构建和版本升级的费用。
怎么行动
要再现比较,首先要固定测量合同。
- 不仅记录模型名称,还记录准确的版本、托克纳泽、dtype·量化方式和服务器版本。
- GPU模型、数量、驱动程序和运行时版本、内存限制和容器镜像保持一致。
- 从实际流量中提取输入·输出令牌长度、共同前缀比例、同步性和到达间隔,然后播放。
- 热身后反复重复TTFT·ITL·终端间延迟p50/p95/p99、处理令牌数、错误率、GPU内存和占用率一起记录。
- 确认是否是相同的质量设置。如果只使用一个候选人更具攻击性的量化或更短的最大输出,这不是速度比较。
接下来来看一下功能和运营限制。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内存计算。