外观
LLM 推理性能评估指标与优化方法
内容整理自学习笔记,仅供面试备考参考;不构成录用、培训或考试承诺。
1. 介绍一下 LLMs 的文本生成过程?
LLMs 的文本生成过程分为两个阶段:
| 阶段 | 说明 |
|---|---|
| 预填充(Prefill) | 以并行方式处理输入提示中的所有词元 |
| 解码(Decoding) | 以自回归方式逐个生成词元,每个生成的词元都会被添加到输入中并重新喂入模型 |
当 LLM 输出了特殊的停止词元或满足用户定义的条件(如生成最大数量的词元)时,生成过程停止。
2. 如何准确衡量模型的推理速度?
评估模型推理速度的核心原则:
模型能够尽可能快地为尽可能多的用户生成文本
四大关键指标
| 指标 | 简称 | 说明 |
|---|---|---|
| 首个词元生成时间 | TTFT | 用户输入查询后,模型生成第一个输出所需的时间。实时交互中低时延很重要,离线工作负载则不太重要 |
| 单个输出词元的生成时间 | TPOT | 为每个查询用户生成一个输出词元所需的时间。如 TPOT=100ms/词元表示每用户每秒处理 10 个词元 |
| 时延 | Latency | 模型为用户生成完整响应所需的总时间 |
| 吞吐量 | Throughput | 推理服务器在所有用户和请求中每秒可生成的输出词元数 |
时延计算公式
时延 = TTFT + TPOT × 待生成的词元数权衡提示:与依次运行查询相比,如果同时处理 16 个用户查询,吞吐量会更高,但每个用户生成输出词元的时间会更长。
3. 如果对整体推理时延有具体目标,有哪些有效的启发式方法来评估模型?
3.1 优化目标
以最短的时间生成首个词元、达到最高吞吐量以及在最短的时间内生成输出词元。
3.2 启发式方法
| 方法 | 说明 |
|---|---|
| 输出长度决定整体响应时延 | 对于平均时延,通常将预期/最大的输出词元长度与模型的每个输出词元的整体平均时间相乘 |
| 输入长度对性能影响不大 | 在 MPT 模型中,添加 512 个输入词元增加的时延少于生成 8 个额外输出词元的时延 |
| 输入长度对硬件要求至关重要 | 支持长输入的需求可能使模型难以部署,如建议使用 A100-80GB 部署最大上下文长度 2048 的 MPT-7B |
| 整体时延与模型大小呈次线性关系 | 在相同硬件上,较大的模型速度较慢,但速度比不一定与参数数量比相匹配 |
3.3 模型大小与时延的关系
| 模型对比 | 时延倍数关系 |
|---|---|
| MPT-30B vs MPT-7B | 约 2.5 倍 |
| LLaMA2-70B vs LLaMA2-13B | 约 2 倍 |
虽然较大的模型时延更高,但时延增长是次线性的,即模型翻倍时延时不会翻倍。
4. LLMs 推理存在哪些挑战?
4.1 核心挑战
| 挑战 | 说明 |
|---|---|
| 内存瓶颈 | 自回归解码过程中,KV 缓存占用大量 GPU 内存 |
| 动态变化的序列长度 | 序列长度变化大且不可预测,有效管理 KV 缓存是重大挑战 |
| 显存碎片化 | 现有系统由于碎片和过度预留浪费了 60%-80% 的内存 |
| 吞吐量与延迟的权衡 | 提高吞吐量通常会增加单个用户的延迟 |
4.2 性能评估总结
关键公式:
时延 = TTFT + TPOT × 待生成的词元数
优化方向:
1. 降低 TTFT(预填充阶段优化)
2. 降低 TPOT(解码阶段优化)
3. 提高吞吐量(批处理优化)
4. 优化内存管理(KV 缓存管理)总结:LLM 推理性能优化需要在时延、吞吐量和资源利用率之间找到平衡点,根据实际应用场景(实时交互 vs 离线批处理)选择合适的优化策略。