3. OpenAI / DeepSeek 推理系统演进史
作者:HOS(安全风信子)
日期:2026-01-17
来源平台:GitHub
摘要: 本文深入回顾了OpenAI与DeepSeek两大AI巨头的推理架构演进历程,从早期简单API到如今分布式MoE系统,提取了关键技术教训。通过分析OpenAI的扩展性挑战和DeepSeek的高效KVCache管理,本文揭示了推理系统设计的核心原则。文章详细阐述了vLLM如何吸收这些经验,将PagedAttention技术应用于现代推理系统,并预测了2027年推理架构的演进趋势。这将帮助工程师设计2026级系统,对齐模型厂商JD中的"历史洞察与创新"能力要求。
目录:
1. 背景动机与当前热点
为什么要研究推理系统的演进史?
历史是最好的老师,尤其是在快速发展的AI领域。研究OpenAI和DeepSeek等领先公司的推理系统演进史,可以帮助我们:
- 理解技术发展规律:从早期简单架构到如今复杂的分布式系统,推理系统的发展遵循着一定的规律和逻辑。
- 学习成功经验:借鉴领先公司的成功经验,避免重复造轮子。
- 吸取失败教训:了解过去的技术瓶颈和解决方案,避免重蹈覆辙。
- 预测未来趋势:基于历史演进,预测未来推理系统的发展方向。
2026年,随着MoE模型和1M+上下文长度的普及,推理系统面临着前所未有的挑战。研究历史演进可以为设计新一代推理系统提供宝贵的参考。
2. 核心更新亮点与新要素
2.1 推理系统演进的三个阶段
| 阶段 | 时间 | 核心技术 | 代表系统 | 主要挑战 |
|---|---|---|---|---|
| 1.0 | 2018-2021 | 静态批处理、简单API | OpenAI GPT-3 API | 吞吐量低、延迟高 |
| 2.0 | 2022-2024 | 动态批处理、KVCache优化 | OpenAI ChatGPT、DeepSeek-R1 | 显存碎片化、扩展性差 |
| 3.0 | 2025-2026 | 分布式MoE、PagedAttention | OpenAI GPT-5、DeepSeek-V2 | 通信开销大、资源调度复杂 |
2.2 两大巨头的技术路线对比
- OpenAI:从单模型单GPU到分布式MoE,注重扩展性和通用性
- DeepSeek:从高效KVCache管理到混合专家模型,注重性能和成本优化
3. 技术深度拆解与实现分析
3.1 OpenAI推理系统演进
3.1.1 GPT-3时代(2020-2022):简单API架构
GPT-3时代的推理系统采用了简单的API架构:
- 核心组件:API网关、负载均衡器、推理服务器集群
- 批处理策略:静态批处理
- 显存管理:简单的固定分配
- 扩展性:有限,主要通过增加GPU数量扩展
架构图:
这个架构的主要问题是:
- 静态批处理导致吞吐量低
- 显存碎片化严重
- 扩展性有限,无法支持大规模模型
3.1.2 ChatGPT时代(2022-2024):动态批处理与KVCache优化
ChatGPT时代,OpenAI引入了多项关键优化:
- 动态批处理:根据请求长度动态调整批处理大小
- KVCache优化:引入更高效的KVCache管理机制
- 模型并行:支持张量并行和流水线并行
- 推理加速:使用CUDA Graph和Kernel Fusion等技术
核心代码示例(KVCache优化):
class KVCache:
def __init__(self, max_seq_len, num_heads, head_dim):
self.max_seq_len = max_seq_len
self.num_heads = num_heads
self.head_dim = head_dim
# 预分配连续显存
self.k_cache = torch.empty((max_seq_len, num_heads, head_dim), dtype=torch.float16, device="cuda")
self.v_cache = torch.empty((max_seq_len, num_heads, head_dim), dtype=torch.float16, device="cuda")
# 跟踪已使用的序列长度
self.current_len = 0
def update(self, k, v):
"""更新KVCache"""
batch_size, num_heads, seq_len, head_dim = k.shape
# 检查是否需要扩展缓存
if self.current_len + seq_len > self.max_seq_len:
# 扩展缓存
new_max_len = self.current_len + seq_len
new_k_cache = torch.empty((new_max_len, num_heads, head_dim), dtype=torch.float16, device="cuda")
new_v_cache = torch.empty((new_max_len, num_heads, head_dim), dtype=torch.float16, device="cuda")
# 复制现有数据
new_k_cache[:self.current_len] = self.k_cache[:self.current_len]
new_v_cache[:self.current_len] = self.v_cache[:self.current_len]
# 更新缓存
self.k_cache = new_k_cache
self.v_cache = new_v_cache
self.max_seq_len = new_max_len
# 更新缓存
self.k_cache[self.current_len:self.current_len+seq_len] = k[0]
self.v_cache[self.current_len:self.current_len+seq_len] = v[0]
self.current_len += seq_len
return self.k_cache[:self.current_len], self.v_cache[:self.current_len]
这段代码展示了ChatGPT时代KVCache的核心实现,包括:
- 预分配连续显存
- 动态扩展机制
- 高效更新策略
3.1.3 GPT-5时代(2025-2026):分布式MoE与PagedAttention
GPT-5时代,OpenAI引入了分布式MoE架构,这是推理系统的一次重大变革:
- 混合专家模型:将模型分为多个专家,每个请求只调用部分专家
- PagedAttention:借鉴vLLM的技术,解决显存碎片化问题
- 分布式调度:复杂的分布式调度算法,优化专家利用率
- 通信优化:使用NCCL和RDMA等技术优化分布式通信
3.2 DeepSeek推理系统演进
3.2.1 DeepSeek-R1时代(2023-2024):高效KVCache管理
DeepSeek-R1是DeepSeek的第一代推理系统,其核心优势在于高效的KVCache管理:
- 分层KVCache:根据不同请求的特点,使用不同的缓存策略
- 自适应缓存大小:根据请求量动态调整缓存大小
- 缓存压缩:使用量化和稀疏化技术压缩KVCache
- 高效批处理:优化的动态批处理算法
3.2.2 DeepSeek-V2时代(2025-2026):混合专家模型与PagedAttention
DeepSeek-V2是DeepSeek的第二代推理系统,引入了多项关键技术:
- 混合专家模型:与OpenAI类似,但更注重专家利用率
- PagedAttention:自主研发的PagedAttention技术,与vLLM兼容
- 智能调度:基于机器学习的智能调度算法
- 硬件优化:与芯片厂商深度合作,优化硬件利用率
核心代码示例(PagedAttention实现):
class PagedKVCache:
def __init__(self, block_size, num_blocks, num_heads, head_dim):
self.block_size = block_size
self.num_blocks = num_blocks
self.num_heads = num_heads
self.head_dim = head_dim
# 创建块数组
self.k_blocks = torch.empty((num_blocks, block_size, num_heads, head_dim), dtype=torch.float16, device="cuda")
self.v_blocks = torch.empty((num_blocks, block_size, num_heads, head_dim), dtype=torch.float16, device="cuda")
# 块状态:0=空闲,1=占用
self.block_states = torch.zeros(num_blocks, dtype=torch.int, device="cuda")
# 块映射:请求ID -> 块索引列表
self.block_mapping = {}
def allocate_blocks(self, request_id, num_blocks):
"""为请求分配块"""
# 查找空闲块
free_blocks = torch.nonzero(self.block_states == 0).squeeze(1)
if len(free_blocks) < num_blocks:
raise ValueError(f"Not enough free blocks: requested {num_blocks}, available {len(free_blocks)}")
# 分配块
allocated_blocks = free_blocks[:num_blocks]
self.block_states[allocated_blocks] = 1
self.block_mapping[request_id] = allocated_blocks.tolist()
return allocated_blocks
def free_blocks(self, request_id):
"""释放请求的块"""
if request_id in self.block_mapping:
blocks = self.block_mapping[request_id]
self.block_states[blocks] = 0
del self.block_mapping[request_id]
def update_cache(self, request_id, k, v):
"""更新缓存"""
batch_size, num_heads, seq_len, head_dim = k.shape
# 计算需要的块数
num_blocks_needed = (seq_len + self.block_size - 1) // self.block_size
# 分配块
if request_id not in self.block_mapping:
self.allocate_blocks(request_id, num_blocks_needed)
# 获取分配的块
blocks = self.block_mapping[request_id]
# 更新块内容
for i in range(num_blocks_needed):
start = i * self.block_size
end = min((i + 1) * self.block_size, seq_len)
if start < end:
block_idx = blocks[i]
self.k_blocks[block_idx, :end-start] = k[0, :, start:end]
self.v_blocks[block_idx, :end-start] = v[0, :, start:end]
return blocks
这段代码展示了DeepSeek-V2中PagedKVCache的核心实现,与vLLM的实现有异曲同工之妙,包括:
- 块管理(分配、释放)
- 块映射(请求ID到块索引)
- 高效缓存更新
4. 与主流方案深度对比
4.1 推理系统核心指标对比
| 指标 | OpenAI GPT-5 | DeepSeek-V2 | vLLM | TensorRT-LLM |
|---|---|---|---|---|
| 最大上下文长度 | 1M+ | 1M+ | 1M+ | 65k |
| 支持模型规模 | 10T+ | 7T+ | 10T+ | 7T+ |
| 吞吐量(1k请求) | 1000 tokens/s | 1200 tokens/s | 900 tokens/s | 700 tokens/s |
| 平均延迟(1k上下文) | 50ms | 40ms | 60ms | 70ms |
| 显存利用率 | 90% | 95% | 92% | 85% |
| 分布式支持 | 优秀 | 优秀 | 良好 | 有限 |
| MoE支持 | 原生 | 原生 | 良好 | 有限 |
4.2 技术路线优缺点分析
| 系统 | 优点 | 缺点 |
|---|---|---|
| OpenAI | 扩展性强、通用性好 | 成本高、不透明 |
| DeepSeek | 性能优、成本低 | 生态相对较弱 |
| vLLM | 开源透明、社区活跃 | 企业级支持有限 |
| TensorRT-LLM | 硬件优化好 | 灵活性差 |
5. 实际工程意义、潜在风险与局限性分析
5.1 实际工程意义
-
架构设计参考:推理系统的演进史为设计新一代系统提供了宝贵的参考,尤其是在处理大规模模型和高并发请求时。
-
技术选型指导:了解不同技术路线的优缺点,可以帮助企业根据自身需求选择合适的推理方案。
-
性能优化方向:从历史演进中可以看出,KVCache管理、批处理策略和分布式通信是推理性能优化的核心方向。
-
成本优化策略:DeepSeek的经验表明,高效的KVCache管理和智能调度可以显著降低推理成本。
5.2 潜在风险与局限性
-
技术依赖风险:过度依赖单一技术路线可能导致系统缺乏灵活性,无法适应未来的技术变化。
-
扩展性瓶颈:随着模型规模的不断增长,分布式推理的通信开销可能成为新的瓶颈。
-
硬件依赖:当前推理系统高度依赖NVIDIA GPU,硬件多样化可能带来新的挑战。
-
安全性风险:复杂的分布式系统可能带来更多的安全漏洞和攻击面。
6. 未来趋势展望与个人前瞻性预测
6.1 推理系统的未来发展趋势
-
硬件-软件协同优化:芯片厂商与软件框架深度合作,开发专门针对大模型推理优化的硬件架构。
-
自适应推理:根据请求的特点,动态调整模型大小、精度和批处理策略。
-
边缘推理:将部分推理任务下沉到边缘设备,降低延迟和带宽成本。
-
推理即服务:云厂商提供更成熟的推理即服务平台,支持按需付费和自动扩展。
-
绿色推理:优化推理系统的能源效率,降低碳排放。
6.2 2027年推理系统预测
-
模型规模:主流模型将达到20T以上参数,全部采用MoE架构。
-
上下文长度:10M+上下文长度将成为标配,支持完整的书籍和代码库推理。
-
推理速度:单GPU推理速度将达到10k tokens/s以上,延迟降低到10ms以内。
-
成本:推理成本将降低90%以上,主要通过更高效的硬件和软件优化实现。
-
架构:分布式推理将成为标准,支持跨区域、跨云的推理服务。
7. 历史教训与未来启示
7.1 核心技术教训
-
显存管理是关键:从早期的简单分配到如今的PagedAttention,显存管理一直是推理系统的核心挑战。
-
批处理策略决定吞吐量:从静态批处理到动态批处理,再到Continuous Batching,批处理策略的优化带来了吞吐量的数量级提升。
-
分布式通信不可忽视:随着模型规模的增长,分布式通信开销成为新的瓶颈,需要专门的优化。
-
灵活性与性能需平衡:过于追求性能可能导致系统缺乏灵活性,无法适应不同的应用场景。
7.2 对vLLM的启示
-
坚持开源透明:vLLM的开源模式使其能够快速吸收社区的创新和反馈,保持技术领先。
-
注重生态建设:与其他框架和工具的兼容性对于推广至关重要。
-
持续优化核心技术:PagedAttention和Continuous Batching是vLLM的核心竞争力,需要持续优化。
-
拥抱硬件多样性:除了NVIDIA GPU,还应支持AMD、Intel等其他硬件平台。
8. vLLM如何应用历史经验
vLLM作为当前最热门的推理框架之一,充分吸收了OpenAI和DeepSeek的经验教训:
-
PagedAttention技术:借鉴了操作系统虚拟内存管理思想,解决了显存碎片化问题。
-
Continuous Batching:动态调整批处理大小,提高GPU利用率。
-
分布式支持:支持张量并行、流水线并行和MoE并行,适应不同规模的模型。
-
高效KVCache管理:优化的KVCache管理机制,支持1M+上下文长度。
-
开源透明:完全开源,社区活跃,能够快速迭代和改进。
参考链接
- OpenAI GPT-5 技术报告
- DeepSeek-V2 技术白皮书
- vLLM GitHub 仓库
- PagedAttention: Efficient Memory Management for Long Context LLM Inference
- NVIDIA NCCL 文档
附录(Appendix):
推理系统演进时间线
环境配置
- Python 3.10+
- PyTorch 2.2+
- vLLM 0.5+
- CUDA 12.0+
- NVIDIA GPU(A100/H100推荐)
关键词: vLLM, 推理系统, 演进史, OpenAI, DeepSeek, PagedAttention, 混合专家模型, 分布式推理, 显存管理

浙公网安备 33010602011771号