40美元租来的大内存服务器:两块3090,8路并发几乎线性扩展
我租了些服务器时间,想分享一些用大内存 + 中端 GPU 跑基准测试的经验:AMD EPYC 和 ROME 主板真心值得。Qwen 3.8 Flash Next Unsloth Q8 在并发数为 1 时跑出 94 tok/s,并发数为 8 时跑到 456 tok/s。
原始数据在评论区,如果你喜欢看那种东西的话。
太长不看
这套配置在 124k 上下文窗口下,单流性能到至少 8 个并发流几乎呈线性扩展。我没有测更高并发。
摘要
直到今天,我一直把 Strata 当玩具看。现在不这么认为了。
在 vast.ai 上租了几个实例做基准测试。整个测试大概花了 40 美元。
测试机配置:2x AMD EPYC 7642,配 ROME2D32GM-2T 主板,分别带 251GB 和 504GB DDR4 内存,GPU 是 2x 3090(有一台实际有 4 张,但只用 2 张)。
运行时和模型
使用 Strata(最高支持 unsloth Q8 量化)和 Maya(GLM 5.3F 和 DSV4.1F),测了不同尺寸的模型。
结果
Maya 连 C=1 以上都不要考虑。Strata?从 100+ tok/s 掉到略高于 50 tok/s(Q8 量化)。
最让我震惊、促使我发帖的是:在 Qwen 3.8 的 Q8 量化下,这套配置的并发流性能几乎线性扩展到至少 8 路。
工作站和服务器配置是值得的:你不需要拼命抢 VRAM;几张不错的 GPU 就能跑得很开心。瓶颈变成了 DRAM(虽然买起来还是肉疼,但比 VRAM 好多了)和 CPU(其实还好)。
GLM 和 DSV:它们可能更需要更多 VRAM。但是,话又说回来,一张 3090 要 1500 美元以上,比六七年前的售价还高?这有点侮辱人了。
无聊到死的原始数据请看评论区。
免责声明:这完全不是广告。就像买车一样,如果可能的话,我想在买之前先试驾。Vast.ai 在这方面非常棒。如果你发现任何一台让你哪怕有一点点好奇的机器配置,你都可以租一段时间(稍微多付点存储费),下载你想测试的运行时和模型,然后跑基准。
评论区亮点
u/This_Maintenance_834:延迟会降低单 token 生成速度,系统内存会增加延迟。但如果你的 GPU 有富余算力,你可以塞更多任务来利用空闲算力。所以高并发下总 token 生成速度会很高。系统可以慢得要死,但只要你能塞更多任务填满闲置算力,总吞吐就会上去。关键全看 GPU 的算力容量,内存在高并发下根本不重要。
u/sleight42:给喜欢看表格的人整理的无聊原始数据:
运行时
| 运行时 | 版本 | 模型 |
|---|---|---|
| Strata terminal | 0.1.55 | Qwen3.8-Flash-Next IQ3_S(qwen3.8-flash-next-iq3_s) |
| Project Maya | v1.1.45,maya 引擎 | GLM-5.3-Flash Maya-S24 / Maya-L |
| Project Maya | v1.1.45,maya-ds4 引擎 | DeepSeek-V4.1-Flash-1017 Maya-XS (IQ1_S) / Maya-S (IQ2_XXS) |
1. QFN IQ3_S,Strata 0.1.55,2x3090(b7642)
4000 token 提示词,生成 256 token,不思考模式:
| C | 每流 tok/s | 聚合 tok/s(总和) | 实测聚合 tok/s | 每流 TTFT(秒) | 墙钟时间(秒) |
|---|---|---|---|---|---|
| 1 | 121.94 | 122 | 122 | 3.49 | 9.08 |
| 2 | 120.31, 132.16 | 252 | 108 | 2.34, 3.33 | 4.00 |
| 4 | 121.60, 124.04, 121.69, 123.85 | 491 | 112 | 3.20, 5.07, 2.16, 4.14 | 5.92 |
| 6 | 120.13, 115.04, 119.70, 119.18, 120.32, 120.01 | 714 | 114 | 4.61, 13.48, 2.21, 9.04, 11.27, 6.82 | 15.71 |
| 8 | 203.84, 166.43, 206.26, 206.30, 164.32, 206.29, 205.60, 206.42(草稿辅助) | 1565(草稿虚高;无意义) | 183(草稿辅助) | 12.15, 3.90, 6.85, 8.17, 2.18, 10.82, 5.52, 9.49 | 13.41 |
单流(引擎调优:--spec 4 --kv int8 --kv-resident 32768 --ple-io ram,上下文 131072):
| 运行 | 解码 tok/s(客户端 / 引擎) | 预填充 tok/s(引擎) | TTFT(秒) | 备注 |
|---|---|---|---|---|
| 短,思考模式 | 133.49 / 139.80 | — | 0.909 | |
| 短,不思考 | 123.70 / 118.20 | — | 0.418 | |
| 解码 @24K | 114.26 / 122.90 | — | 6.841 | |
| 预填充 4K | 114.78 / — | 1501.4 |
u/overand:Strata 支持高于 INT8 的 KV cache 吗?如果不支持,我会继续用它,但也会继续叫它“有点玩具”。
u/SaiTarunRonanki:扩展到 8 流近似线性这点很有意思。这符合解码受内存带宽限制的特征,所以额外的流基本上复用相同的权重读取。
两颗 EPYC 7642 各带 8 通道 DDR4,我猜 NUMA 放置方式在这里影响很大。你是把运行时钉在一个 socket 上,还是在两个 socket 间交错?
我也很好奇 c=8 之后会在哪里崩掉,因为提示词处理很可能在 124k 窗口填满之前就开始蚕食收益了。