AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


为什么vLLM做不到?解密Ollama越级部署黑科技:以DeepSeek-R1-8B为例

发布日期:2025-03-08 11:11:56 浏览次数: 1589 来源:5ycode
推荐语

探索vLLM与Ollama在大型模型部署上的技术差异,揭示背后的显存优化黑科技。

核心内容:
1. vLLM与Ollama在70B模型部署中的性能对比
2. DeepSeek-R1-8B显存需求分析与Ollama的显存优化技术
3. vLLM的显存管理策略及其对性能的影响

杨芳贤
53A创始人/腾讯云(TVP)最具价值专家

 

最近在折腾双4090GPU,近200g内存服务器vllm部署70b的实验。使用ragflow知识库。

按照我之前使用ollama的理解,我觉的部署70b应该没啥问题,然后一个个的坑。

先说下

  • • 部署30b,还是很流畅的,但是推理能力确实比较弱
  • • 部署70b,通过不断地优化参数,最大tokens,4096 tokens没问题(还部署了一个bge-m3)
  • • 但是在ragflow中使用的时候,由于超出最大tokens,经常报oom,因此给ragflow的官方提交了一个issue。官方很快就修复了,这块还是很赞的。

越折腾疑问越多,然后我就了解下了一些知识点,有了这篇水文。

我们以RTX3060 12G显存为例拆解下。

DeepSeek-R1-8B的显存解剖

原始显存需求

  • • 权重(直接成本):8B参数 × 2字节(FP16)= 16 GB
  • • KV Cache(上下文缓存)
    • • 动态增长:2 × 层数 × 头数 × 头维度 × 序列长度 × 批次大小 × 精度
    • • (以2048 tokens为例): 2(K/V) × 32层 × 32头 × 128头维度 × 2048序列长度 × 2字节 = 1.07 GB
  • • 总需求:16 + 1.07 ≈ 17.07 GB(远超RTX 3060的12GB上限)

Ollama的“瘦身魔法

  • • 4-bit GPTQ量化:权重显存降至8B × 0.5字节 = 4 GB
  • • 动态卸载策略:将部分权重临时转存至CPU内存,显存占用降至6.2 GB(实测数据)
  • • 代价:CPU-GPU数据传输使Token生成速度从45 tokens/s降至28 tokens/s

最疯狂的是,我一个前同事用ollama,在macbook air 8g内存上部署了70b的模型。

vLLM的“显存洁癖"

  • • 设计原则:vllm追求极致吞吐量,拒绝任何可能影响性能的动态卸载
  • • 显存硬门槛:要求权重+KV Cache完全驻留GPU,导致DeepSeek-R1-8B在12GB显卡上无法启动

Ollama越级部署的三大核心技术

混合精度量化(灵活度碾压vLLM)

  • • 层级敏感量化:对底层MLP层使用4-bit,顶层Attention保留6-bit(减少精度损失)
  • • 实测对比(DeepSeek-R1-8B生成任务):
量化方案
显存占用
PPL(困惑度)
Ollama混合精度
6.2 GB
7.1
vLLM官方INT8量化
10.5 GB
6.9

内存-CPU分级存储(vLLM的禁区)

  • • 策略:将FP16的Attention权重保留在显存,MLP权重动态加载至内存
  • • 技术代价
    • • 每次前向传播增加5-8ms的PCIe传输延迟
    • • 但显存需求直降40%(从10.5GB→6.2GB)

自适应序列切片

  • • 长文本处理:当输入超过512 tokens时,自动拆分为多段并行处理
  • • 显存优化效果:2048 tokens输入时,峰值显存降低32%

vLLM为何“宁死不做越级部署”?

设计目标的根本冲突

  • • vLLM的核心使命:服务化场景下的高吞吐、低延迟(如百人同时访问的API)
  • • 拒绝动态卸载的原因
    • • CPU-GPU数据传输会严重拖慢并发请求的处理速度
    • • 显存碎片化可能破坏连续内存分配机制(vLLM依赖的PagedAttention技术)

量化支持的局限性

  • • 仅支持静态INT8:无法像Ollama混合使用4/6-bit,导致显存压缩率不足
  • • 校准数据固化:vLLM要求离线量化,而Ollama支持运行时动态调整

硬件兼容性差异

  • • Ollama的“妥协艺术”
    • • 为兼容消费级显卡(如RTX 3060),允许牺牲速度换取显存
    • • 甚至支持通过系统内存模拟显存(性能下降但能运行)
  • • vLLM的“精英主义”
    • • 仅优化Tesla系列显卡(如A100/H100),依赖高带宽显存
    • • 在消费卡上性能反而不如Ollama(RTX 4090实测低15%吞吐量)

实战测试——RTX 3060上的生死对决

测试环境

  • • 显卡:NVIDIA RTX 3060 12GB
  • • 测试任务:DeepSeek-R1-8B生成512 tokens回答

结果对比

框架显存占用生成速度可用性
vLLM
报错退出
-
完全不可用
Ollama
6.2/12 GB
22 tokens/s
流畅运行
原版Hugging Face
17.1/12 GB
报错退出
不可用

关键结论

  • • Ollama的生存逻辑:通过量化+动态卸载,将显存需求压缩至硬件的60%以下
  • • vLLM的哲学缺陷:为追求工业级性能,放弃对资源受限场景的适配

开发者选型指南

选Ollama的场景

  • • 个人开发者/小团队:硬件有限(≤24GB显存)
  • • 需要快速验证模型效果,对延迟容忍度高
  • • 长文本生成需求(利用切片策略降低峰值显存)

选vLLM的场景

  • • 企业级API服务:需要支持高并发(≥100 QPS)
  • • 拥有A100/H800等专业显卡,追求极致吞吐量
  • • 需兼容现有Kubernetes集群调度系统

终极避坑建议

  • • 警惕“虚假越级”:部分工具声称支持低显存运行,实则大幅裁剪模型参数(如DeepSeek-8B被阉割成6B)
  • • 验证量化完整性:使用llm-int8工具检查Attention层是否真的保留高精度
  • • 压测保平安:对Ollama需测试长时生成的显存泄漏问题(部分版本存在累积占用bug)

结语:没有神话,只有取舍

Ollama的“越级”本质是技术民主化——让更多人用上大模型,哪怕牺牲速度;vLLM的“高冷”则是商业现实的抉择。未来二者的融合或许会出现(如vLLM引入动态卸载),但在此之前,开发者仍需认清需求,选择最适合的战场。

相关术语

内存(RAM)与显存(VRAM)

  • • 系统内存(RAM):由CPU直接管理的主内存,通常称为“内存”,物理上通过主板插槽连接,供所有系统进程共享。
  • • 显存(VRAM):GPU专用内存,通过PCIe总线与CPU通信,专为高吞吐并行计算设计。
  • • 关键区别
    • • CPU不直接拥有内存,而是通过内存控制器访问RAM;
    • • GPU显存是独立硬件,与CPU内存物理分离。

Ollama显存优化的本质:CPU-GPU异构内存交换

当Ollama声称“将部分权重转存至CPU内存”时,其技术本质是:
将GPU显存中暂时不用的权重数据,通过PCIe总线转移到系统内存(RAM),并在需要时动态加载回显存
这一过程涉及以下核心技术:

(1)内存分级策略(Memory Tiering)

  • • 热数据:当前计算所需的权重(如正在执行的Attention层)保留在显存。
  • • 冷数据:后续步骤才需要的权重(如下一层的MLP参数)暂存至系统内存。
  • • 交换粒度:通常以层(Layer)为单位,例如将DeepSeek-R1-8B的32层分成多个组按需加载。

(2)预取与缓存(Prefetching & Caching)

  • • 预加载机制:在计算当前层时,异步将下一层权重从系统内存提前传输至显存。
  • • 缓存策略:对频繁使用的权重(如Embedding层)在显存中永久保留副本。

(3)硬件加速传输

  • • Pinned Memory:使用torch.cuda.Stream配合锁页内存(Pinned Memory),减少CPU-GPU数据传输延迟。
  • • Direct Memory Access(DMA):绕过CPU直接由GPU控制器管理传输,实测带宽可达PCIe 4.0 x16的32GB/s。 

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询