阿里巴巴 国际 AI Infra 实习 (1)
Q: FlashAttention的原理?Online Softmax是什么?FlashAttention V1/V2/V3和FlashDecoding的区别?
原理:通过tiling将Q/K/V分块加载到SRAM计算,避免在HBM上存储N*N注意力矩阵。
Online Softmax:分块计算softmax的关键技术。每处理一个KV块时更新running max和running sum,最终等价于全局softmax结果。公式:m_new = max(m_old, m_block), l_new = l_old * exp(m_old - m_new) + l_block * exp(m_block - m_new)。
版本演进:
- V1:外层遍历KV,内层遍历Q,需要跨block归约。
- V2:外层遍历Q(每个Q block独立完成计算),提高并行度;减少非matmul FLOPs。
- V3:利用Hopper架构(TMA、Warp Specialization、FP8)。
- FlashDecoding:针对decode阶段(batch小seq长),将KV序列维度split到多block并行,最后combine归约。
Q: 推理优化的方法有哪些?
- KV Cache(避免重复计算)。
- 量化(W8A8/W4A16降低计算和访存)。
- Flash Attention/Decoding(IO优化)。
- Speculative Decoding(小模型草稿+大模型验证)。
- Continuous Batching(动态组batch)。
- PagedAttention(KV Cache内存管理)。
- 算子融合(减少kernel launch和中间存储)。
- CUDA Graph(减少CPU开销)。
- Prefix Caching(前缀KV复用)。
Q: vLLM/SGLang的原理?
vLLM:核心是PagedAttention,将KV Cache按page管理(类似OS虚拟内存),解决KV Cache碎片问题。配合Continuous Batching实现高效调度。
SGLang:在vLLM基础上引入RadixAttention,用Radix Tree管理KV Cache前缀。相同前缀的请求自动共享KV Cache,减少重复计算。还提供高级编程接口(fork/join)支持复杂推理模式。
Q: 什么是Dynamic Batching?
Dynamic Batching是推理服务中动态组batch的策略:不同请求到达时间不同、序列长度不同,系统在满足延迟约束的前提下,将多个请求组成一个batch一起计算以提高GPU利用率。与Continuous Batching结合:已完成的请求及时退出、新请求随时加入,无需等待batch内所有请求完成。
Q: 手撕:CUDA写一个reduce(用block实现),优化版用warp shuffle?
(编程题)
Q: 加载数据到shared memory比直接从HBM取为什么更快?
HBM(全局内存)延迟约400-800个时钟周期,带宽约2TB/s但被所有SM共享。Shared Memory位于SM片上,延迟仅约20-30个时钟周期(快约20倍),且每个SM有独立的带宽不互相竞争。关键场景:当同一数据被多个线程重复访问时,加载一次到shared memory后多次读取的总延迟远低于多次访问HBM。
Q: 什么是Shared Memory的Bank Conflict?
共享内存被划分为32个bank(4字节宽),同一Warp内多个线程同时访问同一bank的不同地址时产生冲突,访问被串行化(N-way conflict需N次访问)。解决:padding使列访问错开bank、重新设计访问模式、利用broadcast(同一地址多线程访问不冲突)。