
如果你追过我之前的文章,就知道 Qwen3.8-Flash-Next 一直是我的主力:快、聪明,什么活都接得住——代价是它得靠四张 GPU 才肯撒开腿。
我没料到的是,它那个低调的兄弟 Qwen3.8–27B,反倒成了更大的新闻。我从没想过,这个模型能在单张 RTX 显卡上跑这么快。
先说背景。Qwen3.8–27B 实力不俗,日常活儿几乎不出错,比我之前跑的 Qwen3.6 强出一大截。但它从来都不便宜:接近无损的 Q8 版本要吃掉约 28 GB 显存,一块消费级卡根本装不下。我此前几个月,是靠两张 RTX 3090 串起来,才把一个 27B 模型喂到体面的质量。
然后今天早上,我刷到一条帖子,说 Qwen3.8–27B 能在单张 RTX 3090 上跑——不是 5090,也不是 3090 Ti,就是 2020 年那张平平无奇的 24 GB 老卡——还带着完整的 262K 上下文,速度听着像编的。
我试了。结果惊人。及之而后知,履之而后艰,不下场亲自跑一遍,你永远猜不到它能快成什么样。
这是我在各自单卡、单模型下实测的结果:
显卡 | 解码速度 | 提示词预填充 |
RTX 3090 | 65–80 tok/s | 1,000–1,300 t/s |
RTX 3090 Ti | 70–100 tok/s | 1,200–1,700 t/s |
RTX 5090 | 150–180 tok/s | 3,000–4,000 t/s |
把第一行再读一遍:单张 RTX 3090 上 65 到 80 tokens 每秒。这比我读字还快,稳稳越过了"像真人对话"那条约 30 tok/s 的线——而且是一张 2020 年发布的卡,跑着一个稠密 27B 模型、开着完整上下文。
3090 Ti 直接摸到三位数:100。5090 到了 150–180,这放在三年前是数据中心级的吞吐。
比我以前跑过的任何方案都快得多。那到底怎么做到的?
第一步,编译专用分支。 有人给 llama.cpp 做了个分支 llamAmpere,专为压榨 Ampere 架构(以及更新的卡)而生:
git clone -b main https://github.com/JakeATX/llamAmpere.git
cd llamAmpere
cmake -S . -B build-sm86 -DCMAKE_BUILD_TYPE=Release -DGGML_CUDA=ON -DGGML_CUDA_FA=ON \
-DCMAKE_CUDA_ARCHITECTURES=86 -DGGML_NATIVE=ON
cmake --build build-sm86 -j8 --target llama-server留意一下:86 是 RTX 30 系的架构代号。你用的是更新的卡,就把这个数字换掉——Ada(40 系)是 89,Blackwell(50 系)是 120。分支本身在所有这几代上都能跑,只有这个编译开关要改。
第二步,下模型。 性能还依赖一份特制的量化,叫 ATX-4-XS,发布在 Hugging Face 上(约 14.5 GB)。两种拿法都行,先看 Hugging Face 命令行:
huggingface-cli download jakeatx/Qwen3.8-27B-ATX-IQ4_XS-M-GGUF \
--local-dir ~/models/qwen38-27b-atx或者老办法 wget,直接下进自建目录:
mkdir -p ~/models/qwen38-27b-atx
wget -O ~/models/qwen38-27b-atx/Qwen3.8-ATX-4-XS.gguf \
"https://huggingface.co/jakeatx/Qwen3.8-27B-ATX-IQ4_XS-M-GGUF/resolve/main/Qwen3.8-ATX-4-XS.gguf"路径按你自己的改,我这边是放在一块专门的模型盘上。
第三步,启动。 这是我实际用的命令:
CUDA_VISIBLE_DEVICES=0 GGML_Q8_TURBO3_MMA_FUSED=1 \
/path/to/llamAmpere/build-sm86/bin/llama-server \
-m /path/to/models/Qwen3.8-ATX-4-XS.gguf \
--alias Qwen3.8-27B-GGUF \
-c 262144 -b 4096 -ub 1024 -t 8 -tb 8 -ngl 99 -fa on -ctk q8_0 -ctv turbo3 \
--parallel 1 --jinja --fit off \
--cache-prompt --cache-ram 8192 --ctx-checkpoints 24 --checkpoint-min-step 10240 \
--spec-type draft-mtp --spec-draft-n-max 3 --spec-draft-p-min 0 \
--spec-draft-type-k q8_0 --spec-draft-type-v q8_0 \
--host 0.0.0.0 --port 8082 \
--spec-draft-vocab-map docs/mtp-vocab/atx_65536.txt有两个细节,绝大多数人会漏掉、然后白白掉速:那个 GGML_Q8_TURBO3_MMA_FUSED=1 环境变量(作者的笔记说它"值 13%,也是最多人忘记的那一行"),以及末尾那个词表映射文件——它就在你刚下下来的分支仓库里。
这里叠了四层思路。单拎出来都不是魔法,合起来却是一堂工程示范课。我按跟朋友喝咖啡那样,一层层讲。
一、重写内核。 llama.cpp 很强,但它的 CUDA 内核是奔着"在很多代 GPU 上都正确"写的。这个分支反其道而行:专门为一代架构重写热路径,一直挤到挤不动为止。两个值得说的例子:Qwen3.8–27B 不完全是标准 Transformer,它有 48 层是 Gated DeltaNet 的循环状态,而非注意力。分支改了这些内核,让每个 GPU warp 拥有四列状态而不是一列,硬件流水线喂得更顺,单这一项就在提示词和解码上各值 5–6%。剩下 16 层真注意力里,关键数据是压缩在显存里的,旧的解压路径只跑出约 10% 的可用带宽——像把消防水管捏成吸管。重写后用异步拷贝分段搬运、修正了读取,长上下文下解码最多快 11%。还有些不起眼但同样要紧的活:两处内存分配修好,省出 2.8 GB 显存。这 2.8 GB,恰好就是"262K 上下文塞得进我这块卡"和"塞不进"的区别。
二、更聪明的比特。 量化方案决定每个权重分到几位。最笨的做法是一视同仁,比如全给 4 位。问题是,并非所有张量对舍入误差都一样敏感。作者测出哪些张量一压就受伤(注意力投影、输出头),于是做出了 ATX-4-XS:主体用 IQ4_XS,在少数关键角色上选择性升到 Q5_0/Q6_K/Q8_0。增之一分则太长,减之一分则太短,哪些比特该留、哪些该砍,分寸拿捏得刚好。结果是 14.5 GB 的模型——比这个模型的标准 Q4_K_M 量化还小——每次路过显存读的字节更少,产出却接近日常可用的满血质量。为什么更小反而更快?因为单 token 生成是带宽瓶颈:每吐一个 token,都要把权重从显存里读一遍。每 token 字节更少,每秒 token 就更多。就这么简单。
三、KV 缓存用速记。 生成时模型要维护一份 KV 缓存——关于读过、说过的一切的笔记,好让新 token 回头查上下文。到了 262K tokens,这份缓存大得吓人:光用标准格式,权重还没加载,显存就先被它吃光。这套方案(继承自 TurboQuant+ 那一脉)的做法是:注意力的 key 用 q8_0(接近无损)存,value 则旋转压缩到大约 3 位,也就是"Turbo3"。这个不对称是故意的:key 像地址,错了会把一切都归错档;value 是内容,用速记写还扛得住。老实说一句:这不是全链路 Q8 的保真度。写代码、写作、日常智能体活儿,我没撞到质量墙;但你要的是 temperature 0 下逐比特复现,那就跟我以前一样,两张卡上跑 Q8。不吹牛。
四、投机解码加词表映射。 最大的招是带 MTP(多 token 预测)的投机解码:模型自带一个小起草头,先猜出接下来几个 token,主模型并行核对。分支把它跑到深度 3:往前猜三个,一次核实三个,猜对几个留几个。关键在核对方式。老的 llama.cpp 要求起草 token 与目标的首选完全一致才接受,又严又浪费。这套用的是正规的拒绝采样:以 min(1, p/q) 的概率接受每个起草 token(p 是主模型给该 token 的概率,q 是起草头给的)。说白了就是公平掷骰,最终分布与完整生成可证等价——输出更快,质量不变。那末尾那个词表映射文件 atx_65536.txt 是干嘛的?Qwen3.8–27B 的词表约 24.8 万 token,每起草一步,都要拿隐藏状态乘一张覆盖全部词表的巨大投影矩阵,单次约 2.86 亿次乘加。可真实生成的文本,几乎用不到这么大的词表——作者测出,最有用的 65536 个 token,覆盖了起草头实际提出的 99.59%。所以这张映射只缩小起草头的投影,主模型照旧从全词表里选:每起草一个 token,从约 2.86 亿次乘加,砍到约 7500 万次。这是起草头最贵那张矩阵上约 75% 的削减,而起草每个生成 token 都要跑好几次,于是它成了整个 v0.2 版本里最大的单项提速(公开数字从约 65 涨到约 75 tok/s)。没有这个映射文件,你每一次猜测都按全价买单。
四层叠起来——内核重写、更聪明的比特、显存速记、便宜的预判——一张 2020 年的 GPU,跑赢了三年前要花大价钱买的专用硬件。RTX 3090 没变强,是社区把"挤"这件事练得太狠了。聚沙成塔,每一层单看都不惊人,摞起来就把一张老卡抬上了台面。
退一步看:一个人,把前沿模型当工程助手,几天工夫就让一张五年前的消费级 GPU,把最先进的开源模型跑得比官方方案快三倍——然后把这些内核、量化和配方全部免费公开。
这就是 2026 年的本地 AI 生态。每过一个月,上个季度还得两张卡才跑得动的东西,一张卡就行了。而差不多就在同一周,又有公司发布报告,说 AI 已经变得多么危险。恕我直言:一家公司花几百万游说你去害怕它的产品,同时自家工程师拼命把它做出来卖,"危险"这个词的含义,就不再是你以为的那个了。
我桌上那张多年前买的 RTX 3090,早已回本、被遗忘、被当成过时货——此刻正以每秒 80 个 token 吐字,完全离线,不听谁的,也不给谁计费。它不需要谁的许可、谁的 API key、谁的风险清单。接下来十二个月会是什么样,我说不准。我只知道一件事:权重存在我的硬盘上。
原文链接:
https://xhinker.medium.com/100-tokens-second-on-one-rtx-3090-ti-qwen3-8-27b-full-262k-context-one-gpu-1451b1e25fb0
更新时间:2026-09-29
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight All Rights Reserved.
Powered By 61893.com 闽ICP备11008920号
闽公网安备35020302034844号