• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

security-hyacinth

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

3. OpenAI / DeepSeek 推理系统演进史

作者:HOS(安全风信子)
日期:2026-01-17
来源平台:GitHub
摘要: 本文深入回顾了OpenAI与DeepSeek两大AI巨头的推理架构演进历程,从早期简单API到如今分布式MoE系统,提取了关键技术教训。通过分析OpenAI的扩展性挑战和DeepSeek的高效KVCache管理,本文揭示了推理系统设计的核心原则。文章详细阐述了vLLM如何吸收这些经验,将PagedAttention技术应用于现代推理系统,并预测了2027年推理架构的演进趋势。这将帮助工程师设计2026级系统,对齐模型厂商JD中的"历史洞察与创新"能力要求。

目录:

  • 1. 背景动机与当前热点
  • 2. 核心更新亮点与新要素
  • 3. 技术深度拆解与实现分析
  • 4. 与主流方案深度对比
  • 5. 实际工程意义、潜在风险与局限性分析
  • 6. 未来趋势展望与个人前瞻性预测

1. 背景动机与当前热点

为什么要研究推理系统的演进史?

历史是最好的老师,尤其是在快速发展的AI领域。研究OpenAI和DeepSeek等领先公司的推理系统演进史,可以帮助我们:

  1. 理解技术发展规律:从早期简单架构到如今复杂的分布式系统,推理系统的发展遵循着一定的规律和逻辑。
  2. 学习成功经验:借鉴领先公司的成功经验,避免重复造轮子。
  3. 吸取失败教训:了解过去的技术瓶颈和解决方案,避免重蹈覆辙。
  4. 预测未来趋势:基于历史演进,预测未来推理系统的发展方向。

2026年,随着MoE模型和1M+上下文长度的普及,推理系统面临着前所未有的挑战。研究历史演进可以为设计新一代推理系统提供宝贵的参考。

2. 核心更新亮点与新要素

2.1 推理系统演进的三个阶段

阶段时间核心技术代表系统主要挑战
1.02018-2021静态批处理、简单APIOpenAI GPT-3 API吞吐量低、延迟高
2.02022-2024动态批处理、KVCache优化OpenAI ChatGPT、DeepSeek-R1显存碎片化、扩展性差
3.02025-2026分布式MoE、PagedAttentionOpenAI GPT-5、DeepSeek-V2通信开销大、资源调度复杂

2.2 两大巨头的技术路线对比

  1. OpenAI:从单模型单GPU到分布式MoE,注重扩展性和通用性
  2. DeepSeek:从高效KVCache管理到混合专家模型,注重性能和成本优化

3. 技术深度拆解与实现分析

3.1 OpenAI推理系统演进

3.1.1 GPT-3时代(2020-2022):简单API架构

GPT-3时代的推理系统采用了简单的API架构:

  • 核心组件:API网关、负载均衡器、推理服务器集群
  • 批处理策略:静态批处理
  • 显存管理:简单的固定分配
  • 扩展性:有限,主要通过增加GPU数量扩展

架构图:

客户端请求

API网关

负载均衡器

推理服务器1

推理服务器2

推理服务器N

GPT-3模型

这个架构的主要问题是:

  1. 静态批处理导致吞吐量低
  2. 显存碎片化严重
  3. 扩展性有限,无法支持大规模模型
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的核心实现,包括:

  1. 预分配连续显存
  2. 动态扩展机制
  3. 高效更新策略
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的实现有异曲同工之妙,包括:

  1. 块管理(分配、释放)
  2. 块映射(请求ID到块索引)
  3. 高效缓存更新

4. 与主流方案深度对比

4.1 推理系统核心指标对比

指标OpenAI GPT-5DeepSeek-V2vLLMTensorRT-LLM
最大上下文长度1M+1M+1M+65k
支持模型规模10T+7T+10T+7T+
吞吐量(1k请求)1000 tokens/s1200 tokens/s900 tokens/s700 tokens/s
平均延迟(1k上下文)50ms40ms60ms70ms
显存利用率90%95%92%85%
分布式支持优秀优秀良好有限
MoE支持原生原生良好有限

4.2 技术路线优缺点分析

系统优点缺点
OpenAI扩展性强、通用性好成本高、不透明
DeepSeek性能优、成本低生态相对较弱
vLLM开源透明、社区活跃企业级支持有限
TensorRT-LLM硬件优化好灵活性差

5. 实际工程意义、潜在风险与局限性分析

5.1 实际工程意义

  1. 架构设计参考:推理系统的演进史为设计新一代系统提供了宝贵的参考,尤其是在处理大规模模型和高并发请求时。

  2. 技术选型指导:了解不同技术路线的优缺点,可以帮助企业根据自身需求选择合适的推理方案。

  3. 性能优化方向:从历史演进中可以看出,KVCache管理、批处理策略和分布式通信是推理性能优化的核心方向。

  4. 成本优化策略:DeepSeek的经验表明,高效的KVCache管理和智能调度可以显著降低推理成本。

5.2 潜在风险与局限性

  1. 技术依赖风险:过度依赖单一技术路线可能导致系统缺乏灵活性,无法适应未来的技术变化。

  2. 扩展性瓶颈:随着模型规模的不断增长,分布式推理的通信开销可能成为新的瓶颈。

  3. 硬件依赖:当前推理系统高度依赖NVIDIA GPU,硬件多样化可能带来新的挑战。

  4. 安全性风险:复杂的分布式系统可能带来更多的安全漏洞和攻击面。

6. 未来趋势展望与个人前瞻性预测

6.1 推理系统的未来发展趋势

  1. 硬件-软件协同优化:芯片厂商与软件框架深度合作,开发专门针对大模型推理优化的硬件架构。

  2. 自适应推理:根据请求的特点,动态调整模型大小、精度和批处理策略。

  3. 边缘推理:将部分推理任务下沉到边缘设备,降低延迟和带宽成本。

  4. 推理即服务:云厂商提供更成熟的推理即服务平台,支持按需付费和自动扩展。

  5. 绿色推理:优化推理系统的能源效率,降低碳排放。

6.2 2027年推理系统预测

  1. 模型规模:主流模型将达到20T以上参数,全部采用MoE架构。

  2. 上下文长度:10M+上下文长度将成为标配,支持完整的书籍和代码库推理。

  3. 推理速度:单GPU推理速度将达到10k tokens/s以上,延迟降低到10ms以内。

  4. 成本:推理成本将降低90%以上,主要通过更高效的硬件和软件优化实现。

  5. 架构:分布式推理将成为标准,支持跨区域、跨云的推理服务。

7. 历史教训与未来启示

7.1 核心技术教训

  1. 显存管理是关键:从早期的简单分配到如今的PagedAttention,显存管理一直是推理系统的核心挑战。

  2. 批处理策略决定吞吐量:从静态批处理到动态批处理,再到Continuous Batching,批处理策略的优化带来了吞吐量的数量级提升。

  3. 分布式通信不可忽视:随着模型规模的增长,分布式通信开销成为新的瓶颈,需要专门的优化。

  4. 灵活性与性能需平衡:过于追求性能可能导致系统缺乏灵活性,无法适应不同的应用场景。

7.2 对vLLM的启示

  1. 坚持开源透明:vLLM的开源模式使其能够快速吸收社区的创新和反馈,保持技术领先。

  2. 注重生态建设:与其他框架和工具的兼容性对于推广至关重要。

  3. 持续优化核心技术:PagedAttention和Continuous Batching是vLLM的核心竞争力,需要持续优化。

  4. 拥抱硬件多样性:除了NVIDIA GPU,还应支持AMD、Intel等其他硬件平台。

8. vLLM如何应用历史经验

vLLM作为当前最热门的推理框架之一,充分吸收了OpenAI和DeepSeek的经验教训:

  1. PagedAttention技术:借鉴了操作系统虚拟内存管理思想,解决了显存碎片化问题。

  2. Continuous Batching:动态调整批处理大小,提高GPU利用率。

  3. 分布式支持:支持张量并行、流水线并行和MoE并行,适应不同规模的模型。

  4. 高效KVCache管理:优化的KVCache管理机制,支持1M+上下文长度。

  5. 开源透明:完全开源,社区活跃,能够快速迭代和改进。

参考链接

  • OpenAI GPT-5 技术报告
  • DeepSeek-V2 技术白皮书
  • vLLM GitHub 仓库
  • PagedAttention: Efficient Memory Management for Long Context LLM Inference
  • NVIDIA NCCL 文档

附录(Appendix):

推理系统演进时间线

OpenAI 2020 GPT-3 API 发布,采用静态批处理 2022 ChatGPT 发布,引入动态批处理和KVCache优化 2023 GPT-4 发布,支持多模态和更长上下文 2025 GPT-5 发布,采用分布式MoE架构 DeepSeek 2023 DeepSeek-R1 发布,高效KVCache管理 2024 DeepSeek-R2 发布,支持动态批处理 2025 DeepSeek-V2 发布,采用混合专家模型 开源社区 2023 vLLM 发布,引入PagedAttention 2024 TensorRT-LLM 优化,提升硬件利用率 2025 vLLM 支持分布式MoE 推理系统演进时间线

环境配置

  • Python 3.10+
  • PyTorch 2.2+
  • vLLM 0.5+
  • CUDA 12.0+
  • NVIDIA GPU(A100/H100推荐)

关键词: vLLM, 推理系统, 演进史, OpenAI, DeepSeek, PagedAttention, 混合专家模型, 分布式推理, 显存管理
在这里插入图片描述

posted on 2026-01-18 08:34  安全风信子  阅读(48)  评论(0)    收藏  举报  来源

刷新页面返回顶部
 
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3