指南首页/研究方向
EN
研究方向

效率与系统

同一个模型,为什么换一个 batch size 就快了,显存明明没满却跑不动,吞吐提高了但用户等得更久?模型落到程序和硬件上,这些问题就会出现。

一个模型的公式没有变,运行速度也可能差很多。数据搬运、算子实现、显存分配、请求调度和多卡通信,都会影响硬件能否持续工作。模型规模、上下文长度与精度,又让这些系统问题和模型设计联系起来。

研究主题
  • 训练存储与通信:参数、梯度、优化器状态和多卡并行。
  • 算子与硬件:计算、访存、精度和执行调度。
  • 推理服务:响应时间、吞吐、缓存、并发与成本。
模型怎样节省计算与存储
  1. 01权重量化
  2. 02KV 缓存
  3. 03连续批处理
  4. 04流水并行

发展路线与代表工作

  1. 2020

    ZeRO:分担训练时重复保存的状态

    从多卡数据并行中的冗余入手,分片存储优化器状态、梯度和参数。

  2. 2022

    FlashAttention:改变计算的搬运方式

    保持精确注意力的数学目标,用分块计算减少 GPU 不同内存层级间的读写。

  3. 2023

    SmoothQuant:让低精度计算更可用

    处理难量化的激活异常值,为权重与激活的 INT8 推理创造条件。

  4. 2023

    PagedAttention:管理动态增长的 KV cache

    将缓存按块组织,减少服务中的碎片和重复,容纳更多并发请求。

关键概念

吞吐与延迟
吞吐是在一段时间内完成多少工作;延迟是一个请求等待多久。增大 batch 可能改善前者,却让排队更久。
Prefill / Decode
Prefill 处理输入上下文,Decode 逐步生成输出;两阶段的计算与访存特点不同。
KV cache
保存已处理 token 在各层注意力中的 key 和 value,避免生成时重复计算;它随上下文和并发请求占用显存。
量化
用较低精度表示权重或激活,减少存储与某些计算成本。能否加速还取决于硬件和实际算子的支持。

计算、访存与执行开销

GPU 的计算速度很快,但一次运算还涉及数据在不同层级内存之间的搬运,以及算子的启动和调度。计算密集、访存密集与执行开销占主导的任务,需要不同的优化方式。Making Deep Learning go Brrrr具体讨论这些瓶颈。

FlashAttention 通过分块计算减少显存读写,量化降低数值表示的存储与计算开销,算子融合减少中间结果和调度。实际收益与张量形状、数据精度和硬件实现有关。PyTorch Performance Tuning Guide介绍常见的性能优化方法。

延迟、吞吐、显存与质量

交互服务关心首字延迟和尾延迟,离线批处理更关心吞吐,部署还受到显存与成本约束。更大的 batch 可能提高硬件利用率,也可能增加单个请求的等待时间;更长的上下文会增加计算和缓存,降低精度则可能影响模型质量。

系统研究因此需要同时描述负载与优化目标。相同硬件和请求条件下的比较,才能说明一种设计省下了哪部分时间或内存。

分布式训练与推理

训练大模型需要分配参数、梯度、优化器状态和计算;多张卡之间的通信又会带来同步与等待。推理服务还需要管理 KV cache、批处理和请求调度。ZeRO、PagedAttention 等方法分别处理其中的存储与执行问题。

How To Scale Your Model将模型计算、内存、通信与并行方式联系起来;Machine Learning Systems讨论机器学习系统的组成与设计。MIT 6.5940(2024)覆盖模型压缩、量化与高效计算。

系统案例与研究资料

系统与模型架构笔记包含具体设计分析,更多课程和项目见效率与系统资料,相关团队包括 MIT HAN Lab 等。AI 工具也可用于代码阅读与性能分析脚本的编写。

代表论文

2020 · SC 2020

ZeRO: Memory Optimizations Toward Training Trillion Parameter Models

ZeRO: Memory Optimizations Toward Training Trillion Parameter Models · Rajbhandari et al. (2020), Fig. 1
论文原图 · Rajbhandari et al. (2020), Fig. 1 · 论文原文

它在解决什么

多卡训练中,每张卡都保存相同状态,会浪费多少显存?

核心想法

按阶段分片优化器状态、梯度和参数,需要时再通信取回,让多张卡分担存储。

为什么选这篇

它能帮助你读懂训练显存的组成,而不只盯着模型参数量。

第一遍读哪里

先看三阶段各自分片的对象,再比较内存和通信分析。

读完还要问

减少冗余存储会改变通信模式;网络带宽与卡数会影响收益。

2022 · NeurIPS 2022

FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness

FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness · Dao et al. · Fig. 1
论文原图 · Dao et al. · Fig. 1 · 论文原文

它在解决什么

注意力很慢时,瓶颈是否在搬数据,而不只在乘法次数?

核心想法

把计算分块放进更快的片上内存,避免把完整注意力矩阵反复写入显存。

为什么选这篇

它说明相同数学计算可以有很不一样的执行效率。

第一遍读哪里

先看 GPU 内存层级和分块示意,再读 IO 分析与运行时间。

读完还要问

精确版本没有消除稠密注意力的二次计算量;加速幅度取决于形状、硬件和实现。

2023 · ICML 2023

SmoothQuant: Accurate and Efficient Post-Training Quantization for Large Language Models

SmoothQuant: Accurate and Efficient Post-Training Quantization for Large Language Models · Xiao et al. (2023), Fig. 2
论文原图 · Xiao et al. (2023), Fig. 2 · 论文原文

它在解决什么

激活中少量特别大的数,为什么会让 INT8 量化困难?

核心想法

在权重与激活之间重新分配尺度,先做等价变换,再量化为低精度数值。

为什么选这篇

它把异常值、数值误差与硬件执行连在一个具体例子中。

第一遍读哪里

先看激活异常值和尺度迁移的示意,再看精度与速度的对比。

读完还要问

等价的是量化前的尺度变换,量化后仍有误差;需要代表性的校准数据及合适的 INT8 算子。

2023 · SOSP 2023

Efficient Memory Management for Large Language Model Serving with PagedAttention

Efficient Memory Management for Large Language Model Serving with PagedAttention · Kwon et al. (2023), Fig. 6
论文原图 · Kwon et al. (2023), Fig. 6 · 论文原文

它在解决什么

不同长度的请求不断进入和结束,怎样少浪费 KV cache 显存?

核心想法

把缓存切成块,用映射表组织不连续的物理存储,并支持必要的缓存共享。

为什么选这篇

它把操作系统中的分页思路带到模型服务,解释了并发能力从哪里来。

第一遍读哪里

先看缓存碎片问题和块映射,再看固定延迟条件下的吞吐比较。

读完还要问

它优化缓存管理;更多并发的收益仍要结合延迟目标和请求长度衡量。