目录
目录README.md

Specular: 面向大语言模型高效推理框架的系统级优化与实现

🏆 竞赛作品:大语言模型推理框架系统级端到端优化解决方案 创新性地提出单模型稀疏自推测解码技术,结合vAttention虚拟内存管理和智能显存卸载,专为边端侧场景优化的端到端推理加速框架。实现推理延迟加速2倍+,支持多模型部署,精度无损失。


项目简介

随着大语言模型(LLM)在各类智能应用中的广泛落地,推理效率与资源消耗已成为制约其边端部署和大规模应用的关键瓶颈。传统推测解码(Speculative Decoding)虽能提升推理速度,但普遍依赖于独立的小型草稿模型,带来系统复杂度、分布不一致和资源冗余等问题。

本项目Specular首创性地提出:直接利用大模型自身的稀疏推理变体作为Draft Model,结合自研的高效推理框架,通过单模型双模式切换,实现了推测解码的高效、简洁与无损一致性。此外,框架集成了vAttention虚拟内存管理技术和智能显存卸载机制,为大模型边端推理加速提供了全新范式。


技术方案

三大核心优化方向

本项目完全符合竞赛要求,围绕三大推荐优化方向进行深度创新:

1. 主要创新点:推测解码技术创新⚡

  • 传统方案局限: 依赖独立小型draft model,增加系统复杂度
  • 我们的突破: 单模型自推测解码,利用大模型自身稀疏变体生成候选token
  • 核心优势: 分布一致性好,可接受率高,系统架构简洁

2. 注意力计算加速技术

  • 传统方案局限: PagedAttention需要特殊内核,FlashAttention内存效率有限
  • 我们的突破: 集成vAttention进行虚拟内存管理,保持地址连续性,兼容现有高效内核
  • 核心优势: 无需修改内核,按需内存分配,细粒度控制

3. 内存管理技术革新

  • 传统方案局限: 显存受限环境下模型难以部署
  • 我们的突破: 智能显存卸载+动态分配,GPU-CPU协同优化
  • 核心优势: 降低显存要求,支持4GB+显存设备,智能负载均衡,资源利用率高

主要特性

  • 单模型自推测解码:无需维护独立草稿模型,直接在大模型内部切换”稀疏草稿模式”与”全参验证模式”,实现一体化推理加速
  • 输入自适应动态稀疏化:通过轻量级预测器,动态筛选每步推理中最关键的注意力头和MLP神经元,极大压缩计算量
  • 高可接受率与无损一致性:草稿模式与目标模型分布天然一致,推测解码可接受率显著提升,最终输出与原模型完全一致
  • vAttention虚拟内存管理:采用操作系统级虚拟内存机制,保持KV Cache虚拟地址连续性,无缝兼容FlashAttention等高效内核,显著降低显存开销
  • 智能显存卸载(Offload):在显存不足场景下,智能地将模型部分层卸载到CPU内存,实现大模型在有限硬件上的流畅推理
  • 极简系统架构:模块化设计,部署与维护极为便捷,适配主流大模型(LLaMA、Vicuna、OPT等)

推理框架对比

特性/方案 Specular(本项目) vLLM llama.cpp
核心定位 端侧高效推理与推测解码 服务端批量推理调度 轻量级推理
端侧性能 优秀,专为端侧优化 臃肿,服务端设计 优秀
显存管理 vAttention + 智能卸载 PagedAttention 基础内存管理
推测解码 单模型自推测 支持传统推测解码 不支持
稀疏化支持 动态自适应稀疏 不支持 不支持
GPU利用率 高效,FlashAttention兼容 中等,需特殊内核 不支持GPU
部署复杂度 极简,单机多卡灵活 复杂,需服务端架构 简单,但功能有限
扩展性 ,模块化设计 中等 弱,算法集成有限
内存效率 最优,虚拟内存+卸载 中等,分页开销 基础优化

我们构建了完全自主的推理框架,专为端侧场景优化:

相比vLLM:

  • 轻量化设计:vLLM过于臃肿,我们的框架专注端侧需求,核心代码更精简
  • 端侧优化:在消费级GPU和边缘设备上性能更优,启动更快,内存占用更低
  • 部署友好:无需复杂的服务端架构,支持单机单卡到多卡的灵活部署

相比llama.cpp:

  • 功能丰富:支持推测解码、动态稀疏化、vAttention等前沿技术
  • 更好扩展性:模块化设计,易于集成新算法和优化策略
  • GPU加速:充分利用GPU计算能力,而非仅限于CPU推理

快速部署指南

系统要求

  • 操作系统: Linux (Ubuntu 22.04+)
  • Python: 3.10
  • CUDA: 12.1

环境部署

# 安装flash-attn
wget https://github.com/Dao-AILab/flash-attention/releases/download/v2.5.9.post1/flash_attn-2.5.9.post1+cu118torch1.12cxx11abiFALSE-cp310-cp310-linux_x86_64.whl
pip install ./flash_attn-2.5.9.post1+cu118torch1.12cxx11abiFALSE-cp310-cp310-linux_x86_64.whl

cd fused_dense_lib
pip install .
cd ../

# 安装vattention
cd vattention
wget https://download.pytorch.org/libtorch/cu121/libtorch-shared-with-deps-2.3.0%2Bcu121.zip
unzip libtorch-shared-with-deps-2.3.0+cu121.zip

cd sarathi-lean/
python setup.py install
cd ../

cd vattention/
LIBTORCH_PATH=<path to libtorch dir> python setup.py install
cd ../

# 安装剩余依赖
pip install -r requirements.txt

快速开始

# 使用Vicuna、Llama模型
python vicuna_speculative.py --use-offload --use-vattention
# 使用OPT模型
python opt_speculative.py --use-offload --use-vattention

技术架构

🏗系统架构图

┌─────────────────────────────────────────────────────────────┐
│                    Specular 推理引擎                        │
├─────────────────────────────────────────────────────────────┤
│  输入处理  │  稀疏预测器  │  推测解码控制  │  输出后处理     │
├─────────────────────────────────────────────────────────────┤
│                      模型执行层                             │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────┐      │
│  │ 稀疏草稿模式 │  │ 全参验证模式 │  │   智能卸载调度   │      │
│  └─────────────┘  └─────────────┘  └─────────────────┘      │
├─────────────────────────────────────────────────────────────┤
│                    vAttention 内存管理                      │
│  ┌──────────────┐  ┌──────────────┐  ┌─────────────────┐    │
│  │ 虚拟内存分配  │  │ KV Cache管理  │  │  GPU-CPU调度   │    │
│  └──────────────┘  └──────────────┘  └─────────────────┘    │
├─────────────────────────────────────────────────────────────┤
│                      硬件抽象层                             │
│         GPU计算核心    │    CPU辅助计算    │    内存管理     │
└─────────────────────────────────────────────────────────────┘

工作流程

  1. 输入分析:分析输入特征,预测最优稀疏化策略
  2. 草稿生成:稀疏模式快速生成多个候选token
  3. 并行验证:全参模式并行验证候选token
  4. 动态调度:vAttention管理KV Cache,智能卸载平衡GPU-CPU负载
  5. 结果输出:返回验证通过的高质量结果

实验评估

硬件配置

测试环境:
  GPU: NVIDIA RTX 4090 (24GB VRAM)
  CPU: Intel i9-14900K (24 cores)
  RAM: 64GB DDR5-5600
  Storage: 2TB NVMe SSD

软件环境:
  OS: Ubuntu 22.04 LTS
  CUDA: 12.1
  PyTorch: 2.3.0
  Python: 3.10

测试大语言模型

OPT-6.7B, Llama-2-7b-chat, Vicuna-7b

测试数据集

数据集 简述
MT-bench 包含 80 个多轮对话问题以评估对话技能
HumanEva 包含 164 个用于代码生成的 Python 问题
GSM8K 包含大约 8.5K 数学问题
Alpaca 帮助评估指令执行能力

实验结果

使用我们方块和不使用我们方法的推理加速比:

模型/实验基准 MT-bench HumanEva GSM8K Alpaca 平均
Vicuna-7b 2.16x 2.47x 2.26x 2.13x 2.26x
LLaMA2-7b-chat 2.05x 2.30x 2.15x 1.97x 2.12x
OPT-6.7b 2.40x 2.84x 2.65x 2.33x 2.56x

🌟 项目亮点与价值

学术价值

  • 提出了大模型推理加速的新范式
  • 在顶级会议投稿中,理论创新与工程实现并重
  • 为推测解码和稀疏计算领域提供新思路

工程价值

  • 解决了边端侧大模型部署的关键痛点
  • 提供了开箱即用的完整解决方案
  • 具备良好的可扩展性和潜力

致谢

感谢竞赛组委会提供的优秀平台,感谢所有开源社区的贡献者。我们致力于通过技术创新推动大模型推理效率的发展,为AI技术的普及和应用贡献力量。

关于
614.3 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

©Copyright 2023 CCF 开源发展委员会
Powered by Trustie& IntelliDE 京ICP备13000930号