完整题目
大模型中的注意力优化与训练状态分片分别解决什么瓶颈?请列举 FlashAttention、MQA/GQA、稀疏或线性注意力等计算优化方法,并解释 DeepSpeed ZeRO 为什么属于训练显存优化而不是注意力算法;比较它们在训练、prefill 和 decode 阶段的作用边界。
注意力瓶颈与优化路线
标准稠密 self-attention 的分数计算和矩阵规模随序列长度二次增长。优化需按目标分层:
- 精确 kernel:FlashAttention/SDPA 用 tiling、online softmax 和融合减少 HBM I/O 与辅助存储,仍计算 exact dense attention。
- 减少 KV heads:MQA/GQA 降低解码 KV Cache 和带宽,可能改变质量/并行权衡。
- 限制连接:滑动窗口、块稀疏或全局+局部模式减少实际计算,但改变可见性,需要任务验证。
- 近似/线性 attention:改变 attention 计算形式,以近似误差换复杂度收益。
- 系统层:KV 量化、分页缓存、连续批处理、张量并行和算子融合优化服务效率。
FlashAttention 与 ZeRO 必须分开
FlashAttention 是 exact、IO-aware 的 attention kernel;它不把稠密 FLOPs 变成线性,HBM I/O 的界依 head dimension 与片上存储。ZeRO 则在数据并行训练中分片 optimizer states、gradients 和 parameters,降低每卡训练状态显存;它不改变注意力计算。ZeRO 的节省比例取决于 data-parallel world size、精度和 stage,不能固定写成 4x/8x。
训练选型同时看峰值显存和 tokens/s;推理还要拆分 prefill、decode、首 token 延迟、KV 容量与吞吐。在目标硬件和 shape 上基准测试,才能判断 kernel、稀疏结构或分片策略是否真正有效。
继续追问 · 3 个问题
- ZeRO和Pipeline Parallelism怎么配合,各自的瓶颈在哪
- Flash Attention的序列长度限制和变长序列处理方案
- 如果显存还是不够,除了ZeRO还有哪些手段(Offload、Activation Checkpointing等)