AI Pulse

显存装不下也要跑:四张游戏卡撑起144G大模型

一位用户分享了自己在本地跑大模型的配置。硬件是四张RTX 3060 12GB游戏显卡,总显存48GB。模型是约144GB的DeepSeek-V4 Flash量化版,上下文窗口保持在360k到376k。

具体配置:Intel Core i9-10920X(12核24线程),128GB DDR4-3200四通道内存。显卡是四张RTX 3060 12GB,存储为NVMe固态硬盘。推理引擎是llama.cpp的b10181构建。模型文件来自unsloth/DeepSeek-V4-Flash-0731-GGUF。量化类型UD-Q4_K_XL,KV缓存用Q8_0量化。

显存只有48GB,模型却有144GB

四张卡合计48GB,装不下约144GB的模型权重。做法是让模型主体常驻系统内存,显卡只承接一部分计算。作者用-ncmoe 34,把blocks 0到33的专家层留在系统RAM里。其余九个专家层分别挂到GPU1到GPU3,每张卡三层。

张量怎么放,是整套配置的关键。作者把-ts设为100,1,1,1。这个极端分割几乎不碰那些显式指定的专家权重。注意力层、KV缓存这类非专家张量,基本全堆到GPU0上。这样GPU1到GPU3就腾出了地方,用来放大型专家层。

模型主体常驻系统内存,四通道内存带宽对速度影响很大。作者试过用分析方法推算张量布局,结果很差——张量放置是离散的,不直观。他最后的选择是把每个候选配置都实测一遍。

实测:提示处理快,生成慢

用约2万token的提示词实测,配置上下文368,640 tokens。提示处理速度99.4 tok/s,文本生成10.1 tok/s。模型加载约198秒。三个档位的数字很接近:

- 376,832:提示处理99.5 tok/s,生成10.4 tok/s,最紧的显卡剩611 MiB
- 368,640:99.4/10.1 tok/s,剩671 MiB
- 360,448:99.4/10.1 tok/s,剩735 MiB

以368,640这档为例:GPU0剩671 MiB,GPU1剩842 MiB。GPU2和GPU3各剩1395 MiB。

微批大小是最能拉开差距的参数。把-ub从1024升到2048,提示处理从约63.4 tok/s升到约99.4 tok/s。生成速度几乎没变,一直在10.1到10.5 tok/s之间。

在完整393,216 token上下文下,-ub 2048也能跑。但GPU0负载下只剩493 MiB空闲。把上下文降到368,640,余量回到671 MiB,提示处理速度不降。保守一点的-ub 1024可以推到524,288上下文。最紧的显卡也还有约1032 MiB余量,但提示处理掉到约63.4 tok/s。

这个速度能干什么

作者说这比他预期好很多。四张12GB消费级显卡,跑144GB的混合专家模型。提示处理约100 tok/s,生成约10 tok/s。约2万token的提示词喂进去,提示处理阶段大约200秒。生成回复的速度约每分钟600个token。

读得快、写得慢。摘要、长文档分析这类不赶时间的任务正好用得上;实时对话就别指望了。评论里有人说得更直接:每秒10个token不可用。

限制和替代选择

作者强调,整个368k上下文窗口还没有端到端填满过。上面的数字只是配置容量,一次完整的368k token生成测试还没有做过。

细节上,并发槽位要设为1,多个槽位会成倍增加KV缓存需求。内存映射是关掉的(-lm none)。Q8_0 KV是默认选择,换成F16 KV时,393,216上下文下只剩587 MiB可用。调参时把-ncmoe从34改成33,会导致CUDA分配失败。余量相当紧张。

评论里有人提到,Exl3引擎大约一周前刚加入对DeepSeek V4的支持。初步测试显示,它可能是安培架构硬件上跑这个模型最快的途径。Exl3还新增了RAM卸载功能,不过这位评论者自己没测过。

帖子末尾,作者自己也注明了一句:这份配置分享由ChatGPT生成。

阅读原文
📚 相关主题 大语言模型本地部署

订阅 AI Pulse

每天 08:00 · 12:30 · 18:30 · 23:50 更新