一张24GB显卡跑三个AI服务:实测只用了17.8GB

实测单张24GB RTX 3090同时跑三个AI服务:持续17.8GB、峰值23.4GB、零溢出,揭示常驻服务实际占用是权重的1.2–2.5倍。
这篇文章用一周真实采集的显存曲线与逐租户归因数据,回答了「家用GPU到底能装下什么」这个问题。一张24GB RTX 3090同时运行Whisper ASR(large-v3)、TTS语音模型和nomic-embed-text嵌入模型,持续占用17.8GB(72%),7天内峰值23.4GB,全程无溢出。最关键的发现是纸面权重与实测显存之间的巨大鸿沟:仅0.3GB权重的嵌入模型实际吃掉4.6GB,Whisper的权重是实测均值的2.5倍,这些运行时开销来自CUDA上下文、框架缓冲区和KV缓存,规格表从不披露。文章最终给出了可操作的选型原则:按持续工作集而非峰值选卡,加50%余量,大聊天模型单独一张卡隔离,真正的失效模式是新增租户而非瞬时峰值。
显存需求的真相:规格表之外
关于「我需要多少显存」,网上的建议几乎都是一个套路:甩给你一张规格表。「FP8 下的 27B 模型需要 28GB」「Q4 下的 70B 需要 42GB」「去买张 48GB 的卡」。
这些答案只对单一模型有效。没人告诉你,当你把真实的技术栈——一个转录服务、一个嵌入模型、一个小聊天模型——塞进同一张卡时会发生什么。你能找到的答案基本靠猜,因为几乎没有人真正测量过多租户共享的 GPU。
这篇文章来自一位家庭 AI 实验者的实测报告。过去一周,他的 RTX 3090(24GB)同时运行着三个 AI 服务,并拉取了完整的显存历史曲线与逐租户归因数据。这是显卡实际占用的真实情况,也是家用 GPU 选型的真实依据。

实验配置:真实的家用 AI 栈
测试平台是一张功耗墙设在 390W 的 NVIDIA RTX 3090,拥有 24GB(24,576MB)显存。三个常驻租户全部以 Docker 容器方式运行:
- Whisper ASR 网络服务(WhisperX,large-v3)——用于语音备忘、会议、播客片段转录的端点
- 一个小型 TTS 语音模型——为同一套助手栈提供语音合成
- nomic-embed-text(Ollama)——为 RAG 流水线提供嵌入向量
整台机器上还跑着 55 个容器、92 个 systemd 单元、一颗 56 线程的至强处理器和 64GB 内存,但 GPU 只服务于上面这三个租户。
作者特意强调,这个组合正是一个典型家用 AI 栈的形态:一个偏大的常驻模型(ASR)、一个中等常驻模型(TTS)、一个微型常驻模型(嵌入)。没有聊天模型——27B 的聊天模型跑在另一台配双 3090 的机器上,那是另一个话题。
WhisperX 是 OpenAI Whisper 的增强版本,在原始语音转文字能力之上叠加了两个额外模块:VAD(Voice Activity Detection,声音活动检测)用于在转录前切除静音片段以提升效率,以及强制对齐模型(基于 wav2vec2)用于生成词级别的精确时间戳。这两个附加模型都常驻 GPU,是 Whisper large-v3 权重(3.1GB)和实测均值(7.7GB)之间差距的重要来源之一。nomic-embed-text 是 Nomic AI 开源的文本嵌入模型,参数量约 1.37 亿,专为 RAG(Retrieval-Augmented Generation,检索增强生成)场景设计,能将文本块编码为 768 维向量,支持长达 8192 token 的上下文窗口,在同量级模型中检索性能较突出,通过 Ollama 可以一行命令拉取运行。
关键数字:17.8GB 常驻,23.4GB 峰值
核心结论一句话概括:三个模型常驻时,显卡占用 17.8GB(72%),一周内峰值达到 23.4GB,全程没有一个字节溢出到系统内存。
| 租户 | 7天平均显存 | 7天峰值显存 |
|---|---|---|
| Whisper ASR (large-v3) | ~7.7 GB | ~10.3 GB |
| TTS 语音模型 | ~4.7 GB | ~4.8 GB |
| nomic-embed-text | ~4.5 GB | ~4.6 GB |
| 总计(实测,7天) | ~17.0 GB | ~22.8 GB |
写稿时的实时状态是 24,576MB 中用了 17,775MB,恰好 72%。三个租户加起来 17.5GB,再加上显卡本身的 CUDA 上下文开销。
真正值得玩味的是 23.4GB 这个峰值。它出现在 Whisper 服务同时收到一批长音频文件、而 TTS 模型正在渲染一段长回复的时刻——两个大租户同时飙升,嵌入模型稳守 4.6GB,显卡逼近天花板只剩 1.2GB 余量。但它扛住了:没有溢出、没有 OOM、没有崩溃,因为这个峰值只持续了几秒,而非持续负载。
纸面显存与实测显存的鸿沟
一个模型的「纸面显存」是权重大小。而实测显存是权重 + 工作集 + 框架开销。逐租户来看这个差距,结论相当颠覆直觉。
Whisper large-v3:FP16 权重约 3.1GB,实测平均 7.7GB,是权重的 2.5 倍。差额来自编码器的音频特征缓冲区(长文件和排队文件占用更多)、WhisperX 并行运行的 VAD 与对齐模型,以及 CUDA 上下文。10.3GB 的峰值是一批长文件同时在飞。
TTS 语音模型:权重约 4.5GB,实测 4.7–4.8GB。这是卡上最「诚实」的租户,因为 TTS 在请求间是无状态的——没有长上下文,没有队列缓冲。
nomic-embed-text:一个 1.37 亿参数的嵌入模型,纸面权重约 0.3GB,实测却是 4.5–4.7GB。这部分开销来自 Ollama 运行时、CUDA 上下文,以及它为嵌入批次预分配的 KV 空间。一个「只需要 300MB」的模型,作为常驻服务时实际吃掉 4.6GB——这正是从来没人报出来的数字。
规律很清晰:常驻服务的实测显存是其权重大小的 1.2–2.5 倍,状态越多的模型倍数越大。 如果你在为显卡选型,请按实测数字预算,而不是权重。
KV 缓存与工作集是理解这个倍数差距的关键。推理框架在 GPU 上为每个活跃请求分配 Key-Value 缓存,用于存储注意力机制中间结果;对于 Whisper 这类处理变长音频的模型,队列中多个文件同时进行特征提取时,这部分缓存会随音频时长线性增长。CUDA 上下文本身也要占去数百 MB,每个独立进程(如 Ollama 的运行时守护进程)都会初始化自己的上下文,这就是为什么 nomic-embed-text 仅 0.3GB 的权重会膨胀到 4.6GB——Ollama 的完整运行时、CUDA 上下文初始化、以及为批量嵌入请求预留的输入/输出缓冲区,三者叠加才是真实开销。框架开销因推理引擎不同差异显著:vLLM、Ollama、WhisperX 各有自己的内存分配策略,有些会在启动时激进预占显存以降低推理延迟,这一行为在规格表里从来不会被标注出来。
谁在真正占用显卡
7 天的归因数据揭示了一个有趣的区别:Whisper 租户是占用显卡时间最多的消费者,尽管 TTS 模型才是峰值的主要贡献者。
| 调用方 | 7天占用显卡秒数 |
|---|---|
| 自建助手核心(经 whisper 代理) | 4,970 |
| Whisper 代理(共享端点) | 920 |
| Langfuse worker(可观测性栈,转录附带音频) | 910 |
| Langfuse MinIO(对象存储,摄入时转录) | 860 |
| Whisper warmup(保活任务) | 360 |
| GitHub runner(转录测试固件的 CI 任务) | 360 |
这张卡是一个共享服务,而非单一应用。一周内有六个不同的调用方命中 Whisper 端点,而 TTS 和嵌入租户各自只有一个调用方(助手栈)。这种归因能把「GPU 很忙」变成「这些人在让它忙」——这是一个你只能瞄一眼的仪表盘,和一个你能据此行动的仪表盘之间的差别。
这张归因表背后依赖的是 GPU 可观测性工具链。nvidia-smi 提供的是全卡级别的瞬时读数,无法区分是哪个进程或请求在消耗显存;要实现逐租户归因,通常需要在每个服务层埋点——记录每次推理调用的开始时间戳、结束时间戳和调用方标识,再结合 nvidia-smi dmon 或 NVML(NVIDIA Management Library)的采样数据做时间段关联。Langfuse 是文中提到的可观测性栈,它是一个开源的 LLM 运维平台,可以追踪每次推理请求的延迟、输入/输出 token 数和调用链路,这正是表中能区分出「Langfuse worker」与「Langfuse MinIO」两个调用源的原因。这种细粒度归因在大多数家用 AI 部署中是缺失的,而它是判断「是模型太大还是调用太频繁」的必要依据。
反方观点:72% 是不是太满了
一个公允的反驳是:显存占用 72%、峰值仅剩 1.2GB 余量的卡,在某天来一个更大的文件时就会翻车。余量就是保险,而 12% 的保险太薄了。
作者承认这点,但用实测数据回应:这周真实使用中,那个峰值只是一个 3 秒的事件,而显卡吸收了它。持续状态是约 17GB,留出 7.5GB 余量,相当于显卡的 31%。23.4GB 的峰值是「真实发生过的最坏情况」,而不是「可以想象出来的最坏情况」。
余量论的诚实版本是:按你真正会跑的最大持续工作集来选型,再加 50% 余量,而不是按你能想象的最大峰值。 如果你的栈持续工作集是 17GB,那么 24GB 卡是持续负载的 1.4 倍,够用。但如果你往同一张卡上再加一个 7B 聊天模型(持续约 8GB),持续工作集就变成 25GB,24GB 卡就报废了。真正的失效模式不是峰值,而是新增一个租户。
如果现在重新选卡
作者给出了基于实测的选型建议:
- 枢纽卡(ASR + TTS + 嵌入):24GB。 持续工作集 17GB,峰值 23.4GB。16GB 的卡不够——光 TTS 模型就会挤占 Whisper 服务;32GB 虽然宽裕,但对一个本就装得下的负载来说更贵也更热。
- 聊天卡:按聊天模型大小选。 FP8 下的 27B 需要两张 24GB 卡(或一张 48GB)。它不与枢纽卡共享。
- 铁律:每类负载一张卡。 常驻服务放一张,大聊天模型放另一张。每类负载的实测工作集加 50% 余量,就是该买的大小。
24GB 的 3090 仍是二手市场上每 GB 性价比最高的卡,这也是它在家用栈里无处不在的原因。但「每 GB 最便宜」是给聊天机器的论据;对枢纽机而言,论据是「装得下常驻服务的实测工作集,并留出一个新租户的空间」——对这套栈来说,答案就是 24GB,不是 16,也不是 48。
结论:仪表读数胜过规格表
三个 AI 服务跑在一张 24GB GPU 上:17.8GB 持续、23.4GB 峰值、7 天零溢出。常驻服务的实测显存是其权重的 1.2–2.5 倍,峰值只持续几秒而非持续负载。按持续工作集加 50% 余量选卡,把大聊天模型单独放一张卡。
规格表告诉你一个模型需要什么,而仪表读数告诉你你的整套栈需要什么。对于每一个纠结于「买多大显存」的本地 LLM 玩家来说,这或许是比任何估算公式都更可靠的参考。
相关推荐

3分钟看懂DeepSeek:从量化私募到开源AI领跑者的崛起之路
3分钟看懂DeepSeek发展史:从幻方量化的算力积累,到V2的MLA推理降本、V3的557.6万美元训练账单、R1开源引爆全球,再到V4与70亿美元A轮融资,梳理深度求索的关键节点与技术路线。

本地文学创作模型PK:Qwen3.8 27B微调版胜出,DeepSeek v4.1表现平淡
B站UP主横向测评七款本地文学创作模型:海明威、HumanLike Chat基于Qwen3.8 27B微调表现最佳,DeepSeek v4.1叙事平淡,东方朔角色混乱垫底。附三道测试题评分与使用建议。

梁文锋的三次豪赌:DeepSeek为何将82%毛利开源?
DeepSeek为何把82%毛利的推理框架DeepInfer开源,又启动千亿融资?从技术路线、国产芯片到组织纯粹性,解析梁文锋的三次豪赌与开源战略背后的商业与理想逻辑。