Skip to content

初始大模型推理

约 938 字大约 3 分钟

2026-08-27

为什么需要 Infra

指标

  • 准确性(避免幻觉、不合理的回答)

  • TTFT, Time to first token

  • ITL, Inter token latency

  • Request latency, 端到端总时长

  • Throughput, 每秒生成的 token 数量

硬件需求

  • 显存

    • 模型权重

    • KV Cache

优化

  • 模型侧

    • 模型大小和成本(量化、稀疏化)
  • 推理侧

    • 吞吐量和效率(批处理、前缀缓存、PagedAttention)

Tradeoff

不可能三角:

  • 性能,延迟至关重要,高吞吐量意味着更多的计算资源

  • 准确性,模型越大花销越高

  • 成本

推理和内存基础

LLM 交互架构

自顶向下 ↓

  • Model

  • Inference Server

  • Hardware

LLM 生成方式

逐 token 追加(自回归):

x1x2…xt  →  x1x2…xtxt+1 x_1 x_2 \dots x_t \;\rightarrow\; x_1 x_2 \dots x_t x_{t+1}

P(x1:T)=∏t=1TP(xt∣x<t) P(x_{1:T}) = \prod_{t=1}^{T} P(x_t \mid x_{<t})

QKV

  • QQ - 我需要什么

  • KK - 我有什么

  • VV - 我的实际

Q×K=关联性 Q \times K = \text{关联性}

Attention⁡(Q,K,V)=softmax⁡(QK⊤dk)×V \operatorname{Attention}(Q, K, V) = \operatorname{softmax}\left(\frac{Q K^\top}{\sqrt{d_k}}\right) \times V

KV Cache

每个 token 内存占用:

Memory per token=2×num_layers×num_KV×head_dim×dtype_bytes \text{Memory per token} = 2 \times \text{num\_layers} \times \text{num\_KV} \times \text{head\_dim} \times \text{dtype\_bytes}

GPU 显存结构

金字塔型(自上而下容量递增、速度递减):

  • GPU SRAM(就在 tensor core 旁边)

    • 权重和 KV Cache 的小 chunk

    • 中间结果

  • HBM(GPU/VRAM)

    • 模型权重、KV Cache
  • CPU DRAM

优化基础

挑战

  • Infra

    • GPU 开销

    • 分布式计算、部署

  • 用户体验

    • 延迟

    • 吞吐量

    • 上下文大小

  • 能源

模型压缩

  • 量化:BF16 → FP8、INT8、INT4

    • BF = brain floating-point:BF16 的动态范围比 FP16 更宽,更适合 LLM

    • 作用于权重和激活值

  • 稀疏化:比如每四个值有两个置零

量化在哪

模型由 Transformer 块组成,每个 Transformer 块有几个线性层。量化有针对线性层,包括自注意力和前馈网络。

Input activation 指的是在每一个线性层都会被其权重乘的张量。

量化就作用在权重和激活值上。

  • 量化权重 → 数据传输低延迟

    • 减少 HBM 到 SRAM 的数据量
  • 量化权重 → tensor core 更高吞吐

    • 更快的计算

权重、激活值量化可以灵活选择。

量化技术

  • 朴素量化

  • Calibrated techniques

    • GPTQ, AWQ, SmoothQuant(搞清楚哪些值重要并尽量保留)

量化算法

  • Round-to-nearest - Weights & Activations

    • 基准测试优秀,但并非最适合生产
  • AWQ, GPTQ - Weights only

    • AWQ - 观察激活幅度,确定激活值权重

    • GPTQ - 补偿被优化的权重,减少输出精确度的损失,需要更多计算成本

  • Sparse-GPT - Sparsity

  • SmoothQuant, SpinQuant & QuIP - Transforms and smoothing

推理基础

目标:最大化吞吐量 ∧\land 最小化延迟

批处理

  • 解决 tensor core 空等问题

  • 静态批处理:对固定输入长度的模型简单

  • 连续批处理:LLM 每个输入完成时间相差极大,需动态添加批次

KV Cache 管理

  • 至关重要,以解决内存墙

  • 难题:动态大小和未知长度

  • 需解决内部碎片和外部碎片,以及闲置内存

PagedAttention

将 KV Cache 切分成许多小块,即页(pages)。

前缀缓存

当多个请求共享前缀,就共享 KV Cache 的块。缓存命中率提高,吞吐量也随之提高。

测试评估

与业务息息相关。

比如电商聊天机器人,响应速度是关键(TTFT、ITL);RAG 则相反,对准确性要求高。

使用 guidellm 进行压测。

测试场景

  • 预部署:对于硬件能力需要预估

  • 成本和容量:对于硬件数量的预估

  • 回归和 AB 实验:对于每次变更(比如量化)做比较

  • 硬件评估:尝试达到极限

影响因素

  • 模型架构、大小

  • 量化

  • 推理引擎

  • 硬件

  • 批处理和并发策略