行业动态 › 正文
2026-10-27本地部署 · 实测方法同一张 24 GB 显卡、同一套 93.7 GB 权重:把功耗墙从 200 W 放到 291 W、把性能档从自动换成锁高频,解码速度全都落在 62–66 tok/s,差别在重复测量的噪声里。原因不是电不够,而是解码时这张卡只吃 118–125 W——它在等数据,不是在等功率。本文把功耗墙实验、九组参数对照和三个会让测量结果翻倍的陷阱一并列出。
没有口径的 tok/s 没有意义。下面所有数字都来自同一台机器、同一份权重、同一套启动参数,只改被测试的那一项。
--max-context 262144、--kv k8v4、--kv-resident 32768、--vram-reserve-mib 1500、--resident-budget-gib 90、--pool-workers 7、--pcie-frac 0.35,MTP 草稿 4 个、最小接受概率 0.70。amdgpu 的 hwmon 与 pp_dpm_* 采样。先交代一个前提:93.7 GB 的权重装不进 24 GB 显存。引擎的做法是把一部分专家常驻显存、一部分常驻内存,剩下的按需通过 PCIe 逐层搬运——所以「显存一路吃满、命中率 90% 以上」是这个配置的正常状态,不是异常。
这台机器平时还有另一种吃 GPU 的负载,因此做了「省电档」和「性能档」两套配置。要回答的问题很直接:省电档留下的功耗墙,会不会把大模型的输出速度压住?同一张卡上 power1_cap 的驱动上限就是 power1_cap_max = 291 W,再往上需要打开 OverDrive 改内核参数,本次没有动。三档对照,每档测两次:
| 设定 | 第 1 次 tok/s | 第 2 次 tok/s |
|---|---|---|
| 291 W 功耗墙 + 性能档自动 | 63.1 | 65.5 |
| 200 W 功耗墙 + 性能档自动 | 62.4 | 66.2 |
| 291 W 功耗墙 + 性能档锁高频 | 66.3 | 65.1 |
三档的差距是 0.5%–5%,而同一配置重复测量本身就能差 8%(后文的对照组即是)。所以结论不是「200 W 略慢」,而是这三档在统计上分不出胜负:200 W 的墙根本没有被碰到。顺带一提,性能档锁高频也没有收益,反而让空闲功耗和温度白涨——日常保持自动档即可。
一次 49 秒的连续生成,每 0.3 秒采一次样,结果如下:
gpu_busy 持续 100%,结温 72–73 °C、风扇 615 rpm。四个读数放在一起就说明问题了:满频、满占用、却只吃四成电。AMD 的 gpu_busy 统计的是「有没有活」,不是「算术单元跑得有多满」。在这种「专家在内存、按需过 PCIe」的部署里,解码一个 token 要等的是显存带宽与 PCIe 带宽,GPU 大部分时间在等数据,动态功耗自然上不去。
对照组是预填充(也就是读提示、算子密集的那一段):一条 34,820 token 的提示,功耗 90 分位 148 W、瞬时最高冲到 338 W——比标称的 291 W 还高一截,说明这张卡真要电的时候要得到。换句话说,「功耗低」是结果,不是限制。
既然瓶颈在显存与数据搬运,那就把三个直接决定「谁进显存」的参数挨个改一遍:KV 驻留窗口(--kv-resident)、留给桌面与显示输出的显存(--vram-reserve-mib)、常驻内存预算(--resident-budget-gib)。每组都重启引擎重新加载,先发两条请求预热,再测 41k 与 131k 提示下的解码速度。
| 配置 | 41k 提示 tok/s | 131k 提示 tok/s | 专家命中 % |
|---|---|---|---|
| 默认 · 第 1 次32,768 / 1,500 / 90 | 73.6 | 73.3 | 94.9 |
| 默认 · 重复测量 | 68.7 | 71.0 | 94.3 |
| KV 窗口减半16,384 / 1,500 / 90 | 74.7 | 68.5 | 95.0 |
| KV 窗口翻倍65,536 / 1,500 / 90 | 49.1 | 53.3 | 73.0 |
| 显存保留降到 1 GB32,768 / 1,000 / 90 | 59.6 | 70.4 | 90.4 |
| 显存保留提到 2.5 GB32,768 / 2,500 / 90 | 70.6 | 68.6 | 90.4 |
| 常驻预算提到 110 GiB32,768 / 1,500 / 110 | 66.4 | 68.6 | 89.5 |
读这张表只要抓住两个对照:
所以这张卡上的默认三件套 32,768 / 1,500 / 90 不是「先这么放」,而是实测最优。参数优化不是免费的按钮,在这类「显存装不下模型」的部署里,任何一个参数多吃一口显存,都会从专家槽里扣回来。
热态下的完整曲线(默认配置,两次测量的区间):
| 提示长度 | 预填充 tok/s | 解码 tok/s |
|---|---|---|
| 约 8,400 token | 1,075 | 72.9–79.2 |
| 约 41,700 token | 1,225 | 68.7–73.6 |
| 约 133,300 token | 1,506 | 71.0–73.3 |
两点值得注意。一是长上下文没有出现想象中的「断崖」:从 8k 到 131k,解码只差 5% 左右,预填充反而随长度略升(分块与并行吃得更满)。二是预填充慢一个数量级、解码快但也不等于交互速度——读一条 13 万 token 的材料要 88 秒,之后每写一个字 70 tok/s,这是两个必须分开报的数。
这一节是本篇最该被同行拿去用的部分:同一套配置,测量方式不同可以差出 20 倍。
/proc/<pid>/fdinfo 里的 drm-engine-* 计数,就能看出是哪个进程在占 GPU 引擎。power1_cap 与 power1_cap_max,两个值相等就是「已经放到最大」,再纠结也不会有收益。判断一台机器「是不是被限了」,顺序是:先看功耗墙有没有到顶,再看频率是不是满档,最后才看数据往哪走。
power1_cap 与 power1_cap_max 是否相等;不相等才有得放。数据来源:本站实测,2026-10-27,Radeon RX 7900 XTX 24 GB + i7-14700F + 125.6 GiB 内存,UOS 25 / Linux 6.6,Strata 0.1.48(HIP,gfx1100;开源仓库 v0.2.3),Qwen3.8-Flash-Next UD-IQ4_XS 93.7 GB,上下文 262,144,--kv k8v4。功耗、频率、温度取自 amdgpu 驱动 hwmon 的 power1_average 与 pp_dpm_sclk/mclk,0.2–0.3 秒采样;速度取引擎日志自报的解码速率。所有参数扫描均重启引擎重新加载、预热后测量,原始记录与复测脚本留存可复跑。本文仅转述公开信息与自测数据,不评判任何企业与产品,不构成投资建议。
我们按「卡有多少显存、模型多大、上下文要多长、平时还有哪些任务抢 GPU」四件事帮你把瓶颈定位清楚,再决定是调参数、加内存,还是根本不用换硬件。
[一张表看懂本地大模型为什么跑不快:功耗墙放到 291W 也只吃 123W,瓶颈在显存与上下文](https://jiwu.org.cn/news-2026-10-27-gpu-power-cap-bottleneck.html)(机悟 JAVIS,2026-10-27)选一条最费人的流程,看看现有设备能跑什么、要补什么、怎么验——提交后 1 个工作日内联系您;也可以直接加下方企业微信,对接更快。
工作人员将在 1 个工作日内与您联系。急事请直接扫码加企业微信,备注「单位 + 需求」。
加企业微信更快对接