进阶端侧 / 本地 2 分钟阅读发布于 · 更新于

DeepSeek-R1 Distill 14B:EXL2 vs GGUF 对比

RTX 4090 实测对比 — 何时选 turboderp EXL2 而非 bartowski GGUF。

面向的技术栈

RTX 4090 24GB · ExLlamaV2(EXL2 4.65bpw)或 llama.cpp(GGUF Q4_K_M)· DeepSeek-R1-Distill-Qwen-14B

最近一次修改后未重新实机运行 —— 命令请当作起点,而不是已验证的配方。

DeepSeek-R1EXL2GGUFExLlamaV2

开始之前

一张至少有 10 GB 空闲显存的 NVIDIA 显卡 —— 两种构建在 24GB 的 RTX 4090 上都能从容装下且余量充足,16GB 的卡同样能装下任意一种格式。这里要选的不是「装不装得下」,而是「速度还是适用面」,接下来会用实测而不是断言来说明。写这篇之后还多了一个因素:ExLlamaV2 已经归档(开发转到了 ExLlamaV3),以前能加载 EXL2 的服务端现在加载的是 EXL3,所以这场对比里 EXL2 这一边只适合本机对话,不适合放在 API 后面。

bash
nvidia-smi --query-gpu=memory.total --format=csv

两种构建各自的实际开销

EXL2 4.65bpw 权重 8.1 GB,4K 上下文合计 9.8 GB。GGUF Q4_K_M 权重 8.5 GB,合计 10.1 GB —— 尽管名义位宽相同,两者仍有小差异,因为两种格式底层的量化方式不同。在 16GB 及以上的卡上,两种都很从容。

bash
# EXL2 via ExLlamaV2
hf download turboderp/DeepSeek-R1-Distill-Qwen-14B-exl2 \
  --revision 4.65bpw --local-dir ./models/r1-14b-exl2

# GGUF via llama.cpp / Ollama
ollama pull deepseek-r1:14b

确认它真的跑在 GPU 上

ExLlamaV2 没有 CPU 回退,装不下时会直接报错,这本身就是一种确认方式。走 GGUF/Ollama 这条路的话,请明确检查放置位置 —— Ollama 会把装不下的部分静默放到 CPU 上,而一个悄悄跑在 CPU 上的推理模型看起来像是在「思考」,而不像是坏了。

bash
ollama ps
# PROCESSOR should read 100% GPU

nvidia-smi --query-gpu=memory.used,utilization.gpu --format=csv -l 1

数字大概该是什么样

本索引有一条 EXL2 的实测记录:RTX 4090 上 128 tok/s,接近 8.1 GB 权重在 1,008 GB/s 带宽的卡上推算出的上限(约 124 tok/s —— 实测略高于取整后的上限,这是估算本身的正常波动,不是错误)。本站没有在这个体量上对这个模型做过 GGUF 的实测,所以本文不会重复旧版本里「约 95 tok/s」的说法 —— 没有人在这里跑过那个数字。GGUF 文件权重略大(8.5 GB 对 8.1 GB),理论上限会略低几个百分点,而不是当初说的约 35% 那么大的差距。

出问题时

ExLlamaV2 抛出 import 错误而不是正常加载:wheel 和 CUDA 版本不匹配 —— 用 `pip install .` 从源码编译,精确匹配你的环境。走 Ollama 的 GGUF 报告有 CPU 占比:先检查有没有别的东西占着显存,再怀疑模型太大,因为两种构建在 16GB 上都很从容。一个「推理」模型看起来永远想不完:这是 DeepSeek-R1 蒸馏版本本身的行为 —— 它确实会在给出答案前输出一大段思维链,两种格式都一样,不是出了问题。

常见问题

这个模型上 EXL2 真的比 GGUF 快吗?

按本索引自己的实测,EXL2 更快(RTX 4090 上 128 tok/s)—— 但本站没有对这个模型做过 GGUF 的实测可以直接对照。两个文件体积接近(8.1 GB 对 8.5 GB),所以带宽推算出的上限也接近;两者出现巨大差距才是意外,而不是预期。

这个模型能装进 16GB 的卡吗?

可以,无论哪种格式都很从容。4K 上下文下 GGUF Q4_K_M 是 10.1 GB,EXL2 4.65bpw 是 9.8 GB —— 都明显低于 16GB 的预算,还留有余量支持比这里用的 4K 更长的上下文。

DeepSeek-R1 为什么回答要等这么久?

它是一个推理蒸馏模型:在给出最终答案之前,它会生成一段明确的思维链,那是真实生成的内容,不是卡住了。这个行为在 EXL2 和 GGUF 两种构建上是一样的 —— 这是模型本身的特性,与格式或运行时无关。

这篇指南用到了什么

格式
GGUFEXL2

接下来

看看 🟢 RTX 4090 还能跑哪些模型反向查询 —— 24GB、4096 上下文,按质量排序

本文涉及的模型

它真的跑起来了吗?

复制命令并不等于它能用,所以站内只在这里问一次。除了你的这个回答之外,不收集任何东西。

相关指南

部署指南仅供学习参考。每个模型均有独立许可协议 — 下载或部署前请阅读 Hugging Face 官方模型卡。