当大模型推理遇到算力瓶颈,如何进行工程优化?
如果无法正常显示,请先停止浏览器的去广告插件。
1. 当大模型推理遇到算力瓶颈,
如何进行工程优化
零一万物资深算法专家
李谋
2.
3. Alternate Intro Slide
Your Title / A Subtitle Here
4. 目录
1) 大语言模型算力需求及当前增长趋势
2) 大模型结构特征,与传统模型的差异
3) 大模型推理加速挑战与难点
4) 零一万物模型推理服务优化技术
5) 大模型应用场景与业务落地探讨
5. 1 大语言模型算力需求
及增长趋势
6. 大模型发展趋势
模型越来越大
• GPT5的参数量将会达到10万亿级别
• 业界大模型将进入500亿参数的规模
多模态爆发
• 对数据量与算力会有更大规模需求的增长
• Meta最近的算力需求(35万片H100)反映
了多模态对算力几何级数增长的效应
A
B
C
D
垂类大模型兴起
• 自动驾驶、视频、电商、量化、游戏等垂
类客户开始进入企业模型的训练阶段
推理成本优化推动应用爆发
• 未来推理服务在24个月成本继续优化500
倍+的速度,会更进一步增加应用的爆发与
推理服务对算力的需求
7. 算力需求 指数级增长
机器学习时代,每2年翻倍
深度学习时代,每4-6个月翻倍
ChatGPT发布
大模型时代,每2-3个月翻倍
2030年相比2020年通用算力增
长10倍,专用算力增长500倍
8. 2 大模型结构特征
与传统模型差异
9. 大语言模型 vs 传统模型
•
•
•
•
开发环境-动态图
网络结构复杂
参数较少
所有输入计算流程一致
DAG有向无环
生产环境-静态图 + 图融合
10. 大语言模型 vs 传统模型
• 结构简单, Transformer Block串联
• 参数很多 千亿,万亿,十万亿规模
• 不同输入计算流程不一样
• 循环结构,自回归
11. 3 大模型推理加速挑战与难点
12. 大模型推理加速挑战与难点
计算量 算力 内存 参数量
使用成本 集群 能源 局部电力
13. 推理服务降本增效
推理
降本增效
提供服务吞吐
减少硬件成本
GPU
降价
降低延时
增大并发
优化显存
target : max(throughput) while latency <= T
减少GPU
数量
14. 4 零一万物在线推理服务优化技术
15. 总体架构
在线服务 负载分流 动态扩缩 DAG算子编排 服务发现 容错检查
InfraMind 用户理解 向量检索 RAG Prompt改写 人工干预
算子融合
模型并行
KV Cache
分页缓存
CUDA Graph
多实例
推理引擎
Prompt Cache
算子优化
硬件选型
Model
Continuous Batching
投机采样 LoRA Tokenizer
Attention MatMul Sparse Sampler
H卡 L卡 NPU Yi-VL-34B Yi-34B-200K
量化(FP8/INT8/INT4)
A卡
Yi-34B-Chat
AMD
Yi-6B-Chat-4bits
国产芯片
Yi-9B
16. forward
输入长度: 5 输入长度: 6
零 一 万 物 我 零 一 万 物 我 爱
iteration-2
iteration-1
key
weights
输入长度: 7
爱
iteration-3
key
value
weights
零 一 万 物 我 爱 你
value
你
key
weights
value
!
17. Key-Value Cache
key-value缓存
减少重复计算,空间换时间
18. forward with key-value cache
输入长度: 5
prefill
输入长度: 1
零 一 万 物 我
iteration-1
weights
kvcache
爱
kvcache
输入长度: 1
decode
iteration-2
爱
weights
kvcache
你
kvcache
decode
iteration-3
你
weights
kvcache
!
19. Iteration-Level Batching
Iteration-Level Batching
提升硬件利用率
减少请求延时
20. 显存≈并发量
kv_cache size for 1 sequence =
head_dim * num_kv_head * num_layers * seq_length * sizeof(half) * 2
对于Yi-34B-16K模型,每个正在处理的输入请求需要申请3.25GB的kv_cache显存。
kv_cache(3.25GB)
weights
(68GB)
kv_cache(3.25GB)
kv_cache (3.25GB)
num_running_request = 3
intermediate tensor
intermediate tensor
intermediate tensor
prompt-1
prompt-2
prompt-3
Total GPU Memory (80GB)
21. 分页kv_cache内存管理
• 连续的虚拟地址储存在不连续的物理地址,增加显存利用率
• 相同的prompt prefix共享kv cache
22. 算子融合
CUDA
Kernel
• 多个独立CUDA Kernel,Kernel间隙
• Kernel间张量通过Global Memory传输
matmul
• Attention计算过程中多次读取Global Memory
• 产生S^2维度的中间矩阵,长序列显存消耗大
mask
softmax
matmul
time
Global
Memory
23. Flash-Attention
• 本质上是算子融合
• 利用SRAM作为临时缓存,加速数据读取
• 延迟减少,显存减少
24. 低精度量化
• 更快的计算指令 (eg. for int8 IMMA, IDP4A ...)
• 更少的显存读取
• 更小的显存占用
• 更小的模型权重 (边缘端部署)
25. layernorm
RoPE
bfp16
weights
bfp16
input
qkv linear
bfp16
weights
bfp16
input
scale
scale
quant
attention matmul
out linear bfp16
output
quant
fp8
fp8
matmul
dequant
up linear bfp16
output
down linear
• FP16
• INT8
• FP8
layernorm
act
数据类型
• INT4
• INT2
量化方式
• Weight Only
• Weight + Activation
• KV Cache
• 全网络量化
26. 低精度量化
quantilize && optimize LLM using TensorRT-LLM
27. 张量并行
Y = X*A
列切分
• 每张GPU保存全量输入
• 每张GPU保存部分输出 (AllGather)
行切分
• 每张GPU保存部分输入
• 每张GPU保存部分输出 (AllReduce)
28. 张量并行
Transformer Block每一层
Attention --> MLP
先做列切分,再做行切分
每一层2次AllReduce
29. 多机张量并行
节点内 : NVLINK
节点间 : Infiniband / RoCE
张量并行适合节点内
跨节点TP扩展性下降明显
Context Parallism +
Tensor Parallism
30. Prompt
Cache (ref :
RadixAttention)
31. Prompt
Cache (ref :
RadixAttention)
LRU pool
k_cache_ptr k_cache_ptr k_cache_ptr k_cache_ptr k_cache_ptr
v_cache_ptr v_cache_ptr v_cache_ptr v_cache_ptr v_cache_ptr
...
你是谁?
你好,我
来自浙江
你好,
你好,早上好
RadixTree
你好,
早上好
你好,我
来自浙江杭
州
利用数据结构保存每个
前缀对应的kv_cache
你是谁
我来自
浙江
杭州
32. 5 大模型业务场景与落地应用探讨
33. 大模型业务场景与落地应用
• 基础大模型 L0
Users
Applications
API
Chat Model
• 行业大模型 L1
• 垂类大模型 L2
语言大
模型
SFT && RL
Base Model
图像大
模型
多模态
大模型
34. 大模型业务场景与落地应用
• 帮我用英文写封感谢信
• Syntax: ModuleNotFoundError: No module
named ‘numpy’
• 《三体》里叶文洁是如何认识伊文斯的?
• 比较一下两幅图的不同之处
• 帮我做一份以”和平”为主题的PPT
35. 总结
36. LLM推理加速
37. 大模型落地应用
• github
• huggingface
• modelscope
• wisemodel
38. Speculative Decoding
小模型预测,大模型验证,验证过程是并行计算。
最好情况 vs 最坏情况
39.
40.