Kotonia
ログイン今すぐ始める

Kotonia Articles

本想买7GPU机器,却被1GPU的MoE模型打乱了计划

本来在为前沿编程LLM加上语音、图像、视频生成规划一台7GPU工作站,结果单卡MoE模型 Laguna S 2.1 NVFP4 跑出了 DeepSeek V4 Pro 级别的agent基准分数,也通过了我自己的仓库修复任务,把整个方案压缩到了1块GPU。

作者 6分钟阅读
#llm#vllm#gpu#moe#blackwell
其他语言日语英语

前言

原本打算采购一台能装7块GPU的机器。

想在本地跑一个前沿级别的编程 agent,机箱至少要能扩展到4块GPU。旁边还要同时跑图像生成、视频生成、TTS、口型同步。这样一算,消费级PC的扩展槽位根本不够,最后锁定到了带7个GPU插槽的工作站级机器。

然而,那种配置所需内存的零售价,比消费级贵得离谱。我联系了厂商,写这篇文章的时候,对方还没回复。

在等待的这段时间里,前提本身先崩了。

在一块 RTX PRO 6000 Blackwell Max-Q 上跑 poolside 的 Laguna S 2.1 NVFP4,官方基准显示它具备 DeepSeek V4 Pro 级别的编程 agent 性能,我手头的仓库修复任务它也完整跑通了。而且因为是 MoE,速度还很快。

本来在想“4块GPU怎么塞下一个LLM”,结果变成了另一个问题:“1块GPU就能跑完的LLM,该怎么和语音、批处理生成隔离开”。

这篇文章与其说是介绍一个新模型,不如说是记录模型的进步如何改变了硬件采购计划本身

验证日期为2026年7月23日。Laguna S 2.1 刚发布不久,验证过程中 checkpoint 本身也在更新。这里的数字未来可能会变。

为什么一开始觉得非7块GPU不可

Kotonia 不是只跑一个聊天用的LLM。

  • 用于角色对话和编程 agent 的LLM
  • 基于 Qwen3-TTS 的流式语音生成
  • 基于 Ditto 的实时数字人(talking head)
  • HiDream 系列的图像生成与编辑
  • LTX-2 系列的视频生成
  • 实验中模型和生产环境备用模型的存放位

目前的机器配置是 GPU 0 为 96GB 的 RTX PRO 6000 Blackwell Max-Q,GPU 1 为 24GB 的 RTX PRO 4000 Blackwell。即便在生产环境待机状态下,GPU 0 侧的图像/视频/本地LLM也占用约72.8GiB,GPU 1 侧的语音相关占用约19.2GiB。

关于96GB上要常驻什么、把什么交给API,我在之前的《96GB GPU 运行记录》里写过。那时候,设计核心也不只是VRAM容量,而是按角色划分负载。

如果想在此基础上再加一个前沿级LLM,就得默认模型要拆到多块GPU上。一旦为LLM预留至少4块GPU,再想把其他生成类负载也物理隔开,最后落到7个GPU插槽也不算是什么突兀的结论。

单一机箱确实也有好处:GPU间高速互联、共享存储、统一电源管理。如果未来要用 tensor parallel 跑更大的模型,我觉得这现在仍是正确选项。

只是,这个判断前提是“想要的LLM性能,1块GPU装不下”。

总参数117.6B,每个token实际激活的却只有8.5B

Laguna S 2.1 是一个 MoE 模型,总参数117.6B,每个token的激活参数是8.5B。NVFP4 checkpoint 本体约67GiB,96GB的GPU连KV cache都能一并单卡启动。

这次用的配置如下。

项目配置
GPURTX PRO 6000 Blackwell Max-Q 96GB / SM120
模型Laguna S 2.1 NVFP4
vLLM0.25.1
PyTorch2.11.0+cu130
FlashInfer0.6.13
context64K
最大并发数4
MoE backendFLASHINFER_CUTLASS
attention decodeflashinfer-native
KV cacheFP8 E4M3

我没有动现有生产环境的 vLLM 0.24.0,而是为 Laguna 单独准备了一个 venv,跑 0.25.1。以官方 vLLM recipe为基准,只是这块GPU上指定的是 sm_120a,而不是面向 DGX Spark 的 sm_121a

权重加载到GPU上大约15秒,但首次engine初始化花了957.49秒——其中约811秒是 Blackwell 内核的 profiling 和冷启动 JIT。一旦有了cache,用同样的64K、4并发配置重启,就缩短到了47.35秒。

也就是说,装完之后“怎么半天启动不了”并不是故障。但这和每次都丢弃容器、频繁更新环境的运维方式不太合得来。

官方基准真的能信吗

模型卡上截至2026年7月21日的主要 agent 类基准如下。

BenchmarkLaguna S 2.1DeepSeek V4 Pro Max
Terminal-Bench 2.170.264.0*
SWE-bench Multilingual78.576.2
SWE-Bench Pro59.455.4
DeepSWE40.49.0*
SWE Atlas46.227.2*
Toolathlon Verified49.755.9*

* 表示并非模型提供方自己给出的数字,而是第三方评测结果。Laguna 这边还公开了执行轨迹(trajectory)

单看这些数字确实很惊人,但如果理解成“Laguna 在任何意义上都和 V4 Pro 一样聪明”就危险了。这些数字主要说明的是读代码、用工具、多步骤修复仓库的能力。

所以我在本地把短答题、严格格式、长文检索、tool call、代码生成、CLI agent 修复真实仓库这几项分开测了。

我自己的轻量基准

对比对象是之前一直用作本地LLM的 ThinkCap。两者都通过 vLLM 起成 OpenAI 兼容 API,喂同样的 prompt。

速度

任务ThinkCapLaguna S 2.1
code-chat111.0 tok/s / TTFB 87ms97.5 tok/s / TTFB 26ms
character-chat65.1 tok/s / TTFB 91ms99.8 tok/s / TTFB 31ms
studio-enhance104.1 tok/s / TTFB 87ms98.1 tok/s / TTFB 30ms
concurrent x4185.5 tok/s aggregate267.9 tok/s aggregate
concurrent x4 median TTFB3356ms50ms

单发 code-chat 的话,ThinkCap 反而略快一点。但在角色对话和4并发场景下,Laguna 明显拉开了差距。尤其是4并发的 aggregate 267.9 tok/s 和 median TTFB 50ms,完全不是一个总参数117.6B的模型该有的表现。

MoE 需要把整个模型都放进VRAM,但每个token并不需要计算全部参数。VRAM 很重,但计算很轻。配上96GB的GPU,这个特性原原本本地体现了出来。

能力

评测ThinkCapLaguna S 2.1
轻量任务5/66/6
扩展能力基准(严格评分)19/2812/28
长文needle2/22/2
tool use3/33/3
代码生成2/33/3
kotonia-cli 仓库修复(含隐藏测试)11/1212/12

乍一看,扩展能力基准的12/28相当难看。仔细看内容,其实是两类失分。

一类是格式违规:明明答案本身是对的,题目要求“只输出整数”,它却附带了解释。开了 reasoning 的4道题在语义上全对,但严格精确匹配下变成了0/4。另一类是真正答错——代码追踪、组合计数、状态管理之类。

因此,光凭格式违规就判定整个模型弱不对,只按语义正确算满分也不对。这个结果说明的是,Laguna 并不是一个擅长短指令跟随的全能模型,而是一个能力偏向代码生成、tool use、长链路 agent 任务的模型

在 kotonia-cli 上拿到了满分

我最看重的是把一个有各种坑的小型 Python 仓库交给 kotonia-cli,让它修复多个文件。

这个任务埋了这些坑:

  • SKU 的去空格和大小写归一化
  • 多行归一化后变成同一个SKU时的库存合并
  • 整个预订流程的原子性
  • 销售汇总的排序和并列判定
  • 折扣边界值的闭区间判断
  • 用 round-half-up 而不是银行家舍入

agent 能看到的测试有6项。加上事后追加的隐藏测试,合计12项。

ThinkCap 拿到11/12。它没能提前把归一化后变成同一SKU的多笔预订合并,在库存不足时的原子性上丢了一分。

Laguna 用了10次迭代、91秒拿到12/12。它甚至用上了 DecimalROUND_HALF_UP,连隐藏测试里重复SKU的那道也通过了。

一个小任务当然不能一概而论。但一个在短答基准上笨拙的模型,在CLI agent任务上明显赢了。看到这个结果,我判断官方的编程agent基准,至少在“这个模型擅长什么”这一点上,是相当可信的。

36K context 和长 prefill

从1200条记录里找出指定ID的needle任务,输入36,079 tokens下成功了,整个请求耗时3.17秒。

单看数字已经够快了。但如果要和实时语音同居,重要的不是平均速度,而是 prefill 瞬间的负载。

像角色对话这种短历史,Laguna 大约30ms的TTFB基本可以忽略。但读入新仓库、追加超大文件、conversation 在 compaction 之后重建,这些场景都会产生长 prefill。

在 prefix cache 生效的 agent 连续轮次里,并不是每次都要重新计算全部历史。但 cache miss 不会消失。编程需求增多时,它有可能让 Qwen3-TTS 的流式输出瞬间卡顿。

这次没用 DFlash

Laguna 还带了一个约2.1GiB的 DFlash draft model。在15个 speculative tokens、64K、4并发下做了对比,结果如下。

任务baseDFlash差值
code-chat97.5 tok/s124.1 tok/s+27%
character-chat99.8 tok/s55.0 tok/s-45%
studio-enhance98.1 tok/s93.9 tok/s-4%
concurrent x4267.9 tok/s236.7 tok/s-12%

DFlash 在单发 code-chat 上确实有效,但在短回复和并发场景下,draft 的开销反而占了上风。VRAM 也涨到约91.4GiB,几乎没有余量再同居其他服务。

至少对 Kotonia 目前的负载来说,DFlash 默认关闭才是正确答案。speculative decoding 不是“新功能所以更快”,得连同输出长度、并发数、draft 接受率、同居服务一起测。

与其买7GPU机箱,不如再买一台PC

单独跑 Laguna,把 gpu_memory_utilization 设成0.9,理所当然会占掉96GB的大部分。这种状态下,想把现有约19GB的语音栈整个塞进去同居是不现实的。

但如果关掉 DFlash,压低 context 和并发数,把 Laguna 的 GPU memory utilization 调到0.78~0.80左右,情况就不一样了。粗略估算,可以把 Laguna 压到76~78GB左右,放下 Ditto 约3GB和主力TTS约7GB,还能留出7~10GB左右的余量。

这还只是一个尚未实测的假设,不过第二块 RTX PRO 6000 已经下单了。到货之后的候选配置是这样的。

角色常驻内容
实时GPULaguna + Ditto + 主力 Qwen3-TTS
批处理GPU图像生成 + 视频生成
现有24GB GPU备用TTS、退避目标、轻量服务
外部API轻量Vision、长prefill的临时退避、frontier review

图像理解本来就不是 Laguna 的主战场,用一个轻量 Vision API 当 sidecar 就够了。Kotonia 这边其实已经有了一套机制:在停掉本地图像/视频生成做GPU实验期间,Studio 会显示维护提示,只把安全的部分切换到API上。

如果能这样彻底分离,管理一台巨大的7GPU机箱,反而不如再准备一台消费级PC来得干净。

  • CUDA、vLLM、FlashInfer 的依赖可以按机器分开
  • 图像/视频的批处理负载能和实时语音物理隔离
  • 实验失败或重启的影响半径更小
  • 只开需要的那台机器就行
  • 因为模型单卡就能装下,不需要跨机箱的GPU间互联

当然,这也有代价:网络故障、模型cache重复、需要监控的对象变多。如果未来又出现一个单卡装不下、需要 tensor parallel 的模型,7GPU机箱的价值也会重新回来。

不过现在的问题已经不是把GPU高速连接起来了,而是别让延迟需求不同的负载互相打架

真正可怕的不是VRAM,而是语音的p99

模型在GPU上同时不OOM,和这些服务真的能同居,是两码事。

LLM、TTS、Ditto 共享 SM、显存带宽、cache 和 scheduler。哪怕平均利用率看起来不高,一旦长 prefill 和 TTS 生成撞上,流式语音的chunk间隔就会乱掉。即便 Qwen3-TTS 的平均实时率小于1,只要有部分chunk延迟,用户听到的就是“卡顿”。

接下来该测的,不是单纯的 tokens/s 或者平均 RTF。

  • TTS 的 time to first audio
  • 语音chunk间隔的 p95 / p99
  • 可播放音频时长和到达时刻之间的差值
  • 播放缓冲区underrun次数
  • Ditto 的最低fps和帧延迟
  • Laguna decode期间 vs 长prefill期间的差异

条件也要按 TTS单独、TTS + Ditto、TTS + Laguna decode、TTS + Laguna long prefill、全部同时的顺序逐步叠加。

300~500ms左右的 audio lookahead buffer 能吸收一些小抖动,但对话延迟也会因此变大。语音流式进行中,也可以考虑只把短的角色对话走本地,比如超过8K tokens的新编程 prefill 转发到外部API——这种 admission control 也是一个候选方案。

这部分等第二块 RTX PRO 6000 到货之后再实测。

结论:不要让模型替你提前决定该买哪台机器

这次的 Laguna S 2.1,至少在编程和 tool use 用途上相当强。

  • 约67GiB的NVFP4权重,单卡96GB就能装下
  • character-chat 约100 tok/s,4并发达到267.9 tok/s aggregate
  • 通过了36K tokens的长文needle测试
  • kotonia-cli 的仓库修复含隐藏测试拿到12/12
  • 另一方面,严格的短指令跟随只有12/28,不是一个全能模型
  • DFlash 在这次的负载下综合更慢,VRAM也更重

官方 agent 基准的数字,至少在“这个模型擅长代码和工具使用”这个意义上相当可信。但不能把它延伸到通用智能或者所有对话质量上。

而这次最大的收获,其实不是模型的分数。

我本以为要拿到 V4 Pro 级别的 agent 性能,至少需要4块GPU。基于这个前提去找7GPU机器,被工作站级配置的价格卡住了。结果因为 MoE 的进步,问题被压缩进了1块GPU。

一旦到了这一步,要优化的对象就不再是GPU密度,而是故障隔离、语音的尾延迟、和批处理之间的边界。一台大机器,或许还不如两台分离开的小机器。

厂商先回复报价,还是第二块GPU先到货、我先测完同居基准,现在还不知道哪个先来。

不过,能在下单7GPU机器之前,前提就先自己消失了,大概算是运气好。

下一步是让 Laguna、Qwen3-TTS、Ditto 同时跑起来,测一测长 prefill 到底能把语音的 p99 拖垮到什么程度。

Kotonia 将语音 AI、AI 聊天、图像生成和团队协作整合到一个 AI 工作区中。

试用 Kotonia