news 2026/9/23 6:13:43

AI Infra

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AI Infra

1. vLLM 为什么快?

核心:PagedAttention + 连续批处理 + 高效调度。

① PagedAttention

传统 KV Cache 要预分配连续显存,碎片多、浪费大。
vLLM 把 KV Cache 分成固定大小的 block,像操作系统分页一样管理,按需分配,减少碎片

② 连续批处理

传统 batch 要等最长序列跑完才能下一批。
vLLM 允许请求动态进出,GPU 不空转,吞吐大幅提升。

③ 高效调度

  • 请求排队、优先级

  • 显存预占、回收

  • 多请求共享 KV block

一句话:PagedAttention 省显存,连续批处理提吞吐。


2. PagedAttention 原理?

类比操作系统的虚拟内存分页。

传统 KV Cache 的问题

  • 每个请求预分配最大长度显存

  • 实际用不到,浪费

  • 碎片多,无法复用

PagedAttention 做法

  • 把 KV Cache 切成固定大小的block(比如 16 个 token 一块)

  • 每个请求维护一个block table,逻辑块 → 物理块

  • 物理块可以不连续,按需分配

  • 多个请求可以共享物理块(比如相同 prompt)

好处

  • 显存利用率高

  • 支持更大 batch

  • 吞吐提升

一句话:把 KV Cache 分页管理,像 OS 管内存一样。


3. 显存怎么估算?

推理显存 = 模型权重 + KV Cache + 激活 + 框架开销。

① 模型权重

text

权重显存 = 参数量 × 精度字节数
  • FP16:2 字节

  • INT8:1 字节

  • INT4:0.5 字节

例:7B 模型 FP16 = 7e9 × 2 = 14 GB

② KV Cache

text

KV = 2 × layers × heads × head_dim × seq_len × batch × 精度

简化:

text

KV ≈ 2 × layers × hidden × seq_len × batch × 2 字节

例:7B(32 层,hidden 4096),seq 2048,batch 1:

text

2 × 32 × 4096 × 2048 × 2 ≈ 1.07 GB

③ 激活

推理时激活很小,训练时大。

④ 框架开销

CUDA context、临时 buffer,约 1~2 GB。

一句话:权重 + KV + 激活 + 开销。


4. ZeRO 三个阶段?

ZeRO = 把训练状态分片,减少每卡显存。

训练状态有三块:

  • 优化器状态(最大)

  • 梯度

  • 参数

ZeRO-1

只分片优化器状态
显存降 4 倍(Adam 有 2 个动量 + 1 个方差 + fp32 主权重)。

ZeRO-2

分片优化器状态 + 梯度
显存降 8 倍。

ZeRO-3

分片优化器状态 + 梯度 + 参数
显存降与卡数成正比。

代价:通信量增加。

一句话:ZeRO-1 分优化器,ZeRO-2 加梯度,ZeRO-3 加参数。


5. DDP 和 FSDP 区别?

DDPFSDP
全称DistributedDataParallelFullyShardedDataParallel
参数每卡一份完整分片
梯度每卡一份完整分片
优化器每卡一份完整分片
显存
通信AllReduce 梯度AllGather + ReduceScatter
适合小模型大模型
本质数据并行ZeRO-3 实现

一句话:DDP 每卡全量,FSDP 分片,省显存但通信多。


6. 量化怎么做?精度损失?

常见方式

方式说明
PTQ训练后量化,简单
QAT训练时量化,精度好
GPTQ逐层量化,用校准数据
AWQ激活感知,保护重要权重
GGUFllama.cpp 用,CPU 友好
FP8新硬件支持

精度损失

精度损失
FP16 → INT8很小,通常 <1%
FP16 → INT4有,2~5%
FP16 → FP8很小

关键:校准数据要覆盖真实分布。

一句话:PTQ 简单,QAT 精度好,INT8 损失小,INT4 损失大。


7. 怎么提高吞吐?

吞吐 = 单位时间处理的 token 数。

方法

  1. 连续批处理:请求动态进出

  2. 增大 batch:提高 GPU 利用率

  3. PagedAttention:省显存,支持更大 batch

  4. 量化:省显存,提高并发

  5. 张量并行:多卡分担

  6. Prefill / Decode 分离:不同阶段不同优化

  7. 投机解码:小模型草稿,大模型验证

  8. KV Cache 复用:相同 prompt 共享

一句话:连续批处理 + 大 batch + 量化 + 并行。


8. 怎么降低延迟?

延迟 = 首 token 时间 + 每 token 时间。

首 token 延迟(TTFT)

  • Prefill 优化

  • 减少 prompt 长度

  • 并行 prefill

每 token 延迟(TPOT)

  • 减少 KV Cache 读取

  • 量化

  • 算子融合

  • 投机解码

  • 减少 batch(batch 大延迟高)

一句话:Prefill 优化降首 token,Decode 优化降每 token。


9. NCCL 通信原理?

NCCL = NVIDIA Collective Communications Library,多卡通信库。

核心操作

操作作用
AllReduce所有卡求和,结果广播
AllGather收集所有卡数据
ReduceScatter求和后分片
Broadcast广播
AllToAll全交换,MoE 用

通信方式

  • Ring:环形,适合大消息

  • Tree:树形,适合小消息

  • NVLink:卡间高速

  • RDMA:跨机

关键

  • 拓扑感知

  • 通信与计算重叠

  • 梯度压缩

一句话:NCCL 是多卡通信库,核心是 AllReduce,靠 Ring/Tree 和 NVLink/RDMA。


10. 怎么排查 OOM?

OOM = Out Of Memory。

排查步骤

  1. 看是哪块显存爆了

    • 权重

    • KV Cache

    • 激活

    • 临时 buffer

  2. 看是训练还是推理

    • 训练:激活大

    • 推理:KV 大

  3. 常用手段

    • 减小 batch

    • 减小序列长度

    • 梯度累积

    • 梯度检查点

    • 混合精度

    • ZeRO / FSDP

    • 量化

    • offload

  4. 工具

    • torch.cuda.memory_summary()

    • nvidia-smi

    • PyTorch Profiler

  5. 常见原因

    • 显存碎片

    • 泄漏(没释放)

    • batch 太大

    • 序列太长

一句话:先定位哪块爆,再减 batch/序列,上 ZeRO、量化、offload。


快速复习表

关键词
vLLM 快PagedAttention + 连续批处理
PagedAttentionKV 分页,按需分配
显存估算权重 + KV + 激活 + 开销
ZeRO1 优化器,2 加梯度,3 加参数
DDP vs FSDP全量 vs 分片
量化PTQ/QAT,INT8 损失小,INT4 大
吞吐连续批处理 + 大 batch + 量化
延迟Prefill + Decode 分开优化
NCCLAllReduce,Ring/Tree,NVLink
OOM定位 + 减 batch + ZeRO/量化
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/23 6:13:00

Python新手入门指南:第一次作业实战解析

1. Python第一次作业&#xff1a;新手入门指南与实战解析 第一次接触Python编程作业时&#xff0c;很多同学会感到既兴奋又迷茫。作为一门入门友好但功能强大的语言&#xff0c;Python的首次作业往往承载着搭建开发环境、理解基础语法和培养编程思维三重使命。我在指导过上百名…

作者头像 李华
网站建设 2026/9/23 6:10:44

Node.js与PostgreSQL企业级应用部署指南

1. 项目概述与部署准备"录用通知-自助系统"是一款基于Node.js和PostgreSQL开发的企业级应用&#xff0c;主要用于自动化生成和管理员工录用通知书。系统采用前后端分离架构&#xff0c;前端使用现代JavaScript框架&#xff08;如React或Vue&#xff09;&#xff0c;后…

作者头像 李华
网站建设 2026/9/23 6:09:37

Abaqus水力裂缝与天然裂缝相交的Cohesive行为模拟实战

做压裂模拟的人应该都遇到过这种场景&#xff1a;水力裂缝扩展几十步都好好的&#xff0c;一到天然裂缝附近&#xff0c;要么裂缝停在界面上一动不动&#xff0c;要么沿着天然裂缝疯狂拐弯&#xff0c;更气人的是模型有时直接不收敛。这个问题落到Abaqus里&#xff0c;核心就是…

作者头像 李华
网站建设 2026/9/23 6:07:48

域名系统解析:从根域名到子域名的实战指南

1. 互联网地址系统的基石&#xff1a;域名体系解析每次在浏览器地址栏输入"www.example.com"时&#xff0c;我们都在使用一套精密的全球寻址系统。这个看似简单的字符串背后&#xff0c;隐藏着互联网最基础也最精妙的设计之一——多级域名体系。就像现实世界的邮政地…

作者头像 李华
网站建设 2026/9/23 6:05:44

UNIAPP实现移动端后台持续录音的技术方案

1. 项目背景与核心价值去年接手一个语音社交APP项目时&#xff0c;我们遇到了一个棘手的技术难题&#xff1a;当用户切换到其他应用或锁屏后&#xff0c;录音功能就会自动中断。这个问题直接影响了用户的使用体验&#xff0c;特别是在需要长时间录音的场景下。经过多方调研和测…

作者头像 李华