Ayuan’s Proof of Being

Back

Qwen3.8 27B 本地实测#

这两天的事就一件:把 Qwen3.8-27B 跑到本地,要无审查、要能看图、要够快、还要稳,最后接到我自己的助理上天天用。结论先放出来:它现在基本可以当 DeepSeek V4 Flash 用了,就是我平时在云端用的那个主力模型。

硬件#

部件配置
CPUXeon E5-2690 v4(14 核 28 线程,单路)
GPU2× RTX 2080 Ti 22G(魔改 22G 版,NVLink 互联)
内存15Gi(整台机器真正的短板,另有 16G swap 顶内存)
系统Ubuntu 24.04.4,驱动 595.84,CUDA 12.8
引擎vLLM-2080Ti-Definitive(SM75 定制版,双卡 TP=2) / llama.cpp 自编译 + NCCL

机器是二手的,2080 Ti 属于 Turing 架构,社区里普遍的说法是「这卡只能跑小模型」。27B 不是跑不了,是路线得选对。

测法#

每项统一三个口径,同一台机器、同一温度 0 跑出来:

  • Prefill 速度:长提示的首 token 时间,换算成 tok/s。对应长文档、长上下文场景的响应快慢。
  • Decode 速度:固定提示生成 512 token,重复 3 次取中位。对应日常对话的体感速度。
  • 鹈鹕测试:给模型一句话「创建一个 HTML,内容是 SVG 绘制一个鹈鹕骑自行车的 2D 动画」,看它能不能把自行车和鹈鹕真的画对。这条测的是结构化生成的能力,低比特量化在这里会露馅。

跑的参数,两条路线:

# vLLM 路线(safetensors 权重)
量化:FP8 / NVFP4 / int4 分别测
MTP_K=3(推测解码,不开只有 31 tok/s)
上下文 256K,GPU_UTIL=0.90(0.96 必 OOM)
思考档 low(xhigh 在 agent 场景下是一轮好几分钟)

# llama.cpp 路线(GGUF 权重)
-sm tensor(双卡真张量并行,必须自编译 NCCL)
--spec-type draft-mtp --spec-draft-n-max 2(配对 MTP 草稿,深度 2 是甜点)
-c 393216 -np 2 --kv-unified(统一 KV 池双并发,单会话上限 256K)
-ctk q8_0 -ctv q8_0(KV 量化,满上下文下不是负优化)
text

结果#

模型路线DecodePrefill备注
官方 FP8vLLM + MTP367.06 tok/s~1690 tok/s(27k 提示 16s)最快一档,有审查
官方无审查 Q4_K_Mllama.cpp + 自带草稿57~77 tok/s889 tok/s(40k 提示 45s)当前在用,拒答 4/4 未拒
社区 Q6_K(nerkyor)llama.cpp + 草稿54.65 tok/s901 tok/s快,但实测硬拒答,弃
社区 Q6_K(Humanlike)llama.cpp 无草稿35.24 tok/s1070 tok/s目录不带草稿文件,速度腰斩
社区 NVFP4 W4A4vLLM67.33 tok/s~1290 tok/s最快,社区打包,坑多

两个值得单独记的数字:

物理天花板。双卡总带宽 1232 GB/s,Q6_K 的权重 21.5G,理论 decode 上限 57 tok/s,实测 54.65,达成 95.5%。摸到这道墙之后继续调参就是浪费时间,唯一的出路是降位宽。

27k 超长提示。vLLM 路线稳态 16 秒跑完 prefill(约 1690 tok/s);llama.cpp 路线 40,489 token 的提示 45 秒跑完,埋针找回测试通过。重启后的第一个长请求是冷启动(要 60 多秒,内核在 JIT 编译),所以服务重启后必须预热一遍,不然客户端收到的是空回复。

社区版踩的坑#

HF 上一共搜到 349 个 27B 的候选仓库,实测了十几个。社区打包的问题比想象的多:

  1. 名字带 Uncensored 不等于不拒答。某个高下载量的仓库名里就挂着 Uncensored,实测几乎全拒,只有情色写作放开。原因查清楚了:它的训练是从对齐过的教师模型蒸馏轨迹,拒答行为被一并学回来了。
  2. 量化包有暗坑。一份 NVFP4 包在 Marlin kernel 上崩,查到最后发现它的模块排除清单是 0 条,48 维的层被量化了才撞对齐;作者的另一份包排除了 148 条,同样的卡跑得通。同格式同卡,一份崩一份活。
  3. MTP 头不能跨模型借。借来的头能加载、能跑、速度还快,但输出是胡言乱语——比崩溃更阴险,因为不报错。
  4. 量化档位决定质量。同一个模型,Q4 画鹈鹕,车架是一坨实心三角;Q6 完整通过。Q4 抹掉的正是「把部件摆到正确空间位置」的能力,速度分看不出这个。

社区模型全称#

先把台账列清楚。这一轮实测的社区版,HuggingFace 仓库全称如下——本地目录名经常被截断,丢掉的关键字最多,认仓库全称才认得准:

仓库下载量是什么
JonathanColetti/Qwen3.8-27B-Uncensored-GGUF268 万主流无审查版,本文长期在用的那份,自带草稿与视觉模块
nerkyor/Qwen3.8-27B-EfficientThink-Uncensored-K3-Opus5-Grok4.6-GPT5.6Sol-SFT-SimPO-DFlash2-GGUF6.7 万名字是一串黑话,但每个词都有来头:中间那串名字是蒸馏轨迹的教师模型,SFT 是监督微调,SimPO 是偏好优化方法,DFlash2 表示附带第二代推测解码草稿
LessThanThreeAI/Qwen3.8-27B-Humanlike-Chat-GGUF1.9 万「人味」向:7006 条真人长对话 + LoRA 微调,定位聊天与角色扮演
dealignai/Qwen3.8-27B-UNCENSORED-GGUF3 万CRACK 去审查法,自报 MMLU 不降分,带视觉模块
munekazu/Huihui-Qwen3.8-27B-abliterated-FP84.5 千FP8 safetensors,vLLM 路线用
sakamakismile/Huihui-Qwen3.8-27B-abliterated-NVFP47.7 万NVFP4 safetensors,在我机器上崩掉的那份

名字里几个词值得解释。

Uncensored / abliterated 都是去审查,做法不同。abliteration 是直接做减法、把安全对齐层摘掉(abliteration 就是「摘除」的意思);CRACK 是 dealignai 家的同类变体。关键是去审查不是一锤子买卖:安全对齐是模型学会的一种行为,量化之后行为会漂移,下一节细说。

仓库名里挂教师模型。nerkyor 名字中间那串 K3、Opus5、Grok4.6、GPT5.6Sol,是它蒸馏轨迹的教师。名字叫 EfficientThink,卖点是「思考效率高」,实测恰恰是它想得最久、停不下来(思考链 14 万字符撞满 token 上限还没写完)。名字是营销,模型卡是承诺,自己的机器才是事实。

DFlash2 是第二代推测解码草稿,后缀带这个的,仓库里会附带草稿文件。别小看草稿:没有它速度就是裸推理水平,跟演示视频差 2~3 倍。

FP8 / NVFP4 系是 vLLM 路线的 safetensors 权重,命名逻辑和 GGUF 系一样:abliterated 是去审查,后缀是量化。

量化的两本账:智商与速度#

量化常被说成一件事,其实是两本账:速度那本账有公式,智商那本账没公式,只能实测。

速度侧:位宽的线性函数。

decode 是纯带宽操作——每出一个 token,要把整套权重从显存里完整读一遍。双 2080 Ti 合计带宽 1232 GB/s,张量并行 TP=2 时每卡只读一半,天花板公式很简单:

理论上限 tok/s = 1232 ÷ 权重 GB

量化权重理论上限实测
Q4_K_M16.8G7359.7(带草稿)
NVFP4(W4A4)18.8G65.567.33(vLLM + MTP)
Q6_K21.5G57.354.65(达成 95.5%)
Q8_027G45.6256K 跑不动,192K 可跑
FP829G42.667.06(vLLM + MTP)

摸到理论值 90% 之后继续调参就是浪费时间,唯一出路是降位宽。前面 Q6_K 的 54.65 ÷ 57.3 = 95.5% 就是这道墙。表里 NVFP4 和 FP8 之所以能越过「理论上限」,是因为叠了推测解码(MTP):上限公式算的是「读一遍权重出一个 token」,推测解码是一次读、批量出。FP8 不开 MTP 只有 31,67 是叠了 MTP_K=3 之后的数字。

智商侧:位宽的阶梯函数,而且断点不在你以为的地方。

先说最反直觉的结论:在通用智力基准上,Q4 和 Q8 几乎分不出来。两份独立证据。

nerkyor 的现代基准(GPQA 198 题 / MMLU 500 题 / LiveCodeBench 100 题,未通过的样本全部留在分母里):

量化GPQAMMLULCB
Q8_0164(82.8%)447(89.4%)74
Q6_K171(86.4%)440(88.0%)78
Q4-LynnStyle166(83.8%)443(88.6%)74
Q3-LynnStyle172(86.9%)435(87.0%)78

Q4 比 Q8 分高,Q3 双料最强——排序基本落在噪声里。JonathanColetti 的 PPL 表同调:f16 是 7.156,Q8_0 是 7.176,Q4_K_M 是 7.181,误差棒约 0.25,Q4 和 Q8 的差距在误差范围内。

鹈鹕测试:Q4 的车架是一坨实心三角,Q6 的车架是正经的双三角。低比特抹掉的是「把部件摆到正确空间位置」的能力,速度分、基准分都不测这一项。

第二个断点在拒答轴上。去审查是一种行为,行为在低比特下最先漂移——同一句敏感话题,Q8 肯答,Q4 开始说教。这一项对无审查模型最致命:不是答不上,是拿说教的语气答。本轮实测 nerkyor 的拒答分布是「只有R18写作放开,其他几乎全拒」,名字挂着 Uncensored,实测是偏科型无审查。

第三,微调和量化会叠加。LessThanThreeAI 的 Humanlike 是 LoRA 微调,作者在 FINDINGS.md 里公开了对照:未适配底模的有效最终回答 6/6,挂上 LoRA 掉到 3/6,开思考模式时 48 轮里 30~35 轮只输出推理、不产出最终答案。作者的处置是显式关掉思考——这份模型只能当聊天和角色扮演用,不能当 agent。微调模型是活的,量化是防腐:保住了什么、丢掉了什么,没法预测,只能测。

FP8 和 NVFP4 在 Turing 上的特殊章。

2080 Ti 是 sm_75,FP8 和 NVFP4 的硬件张量核都要更新的架构,但「跑不了」说得太糙:

  • FP8:硬件加速没有,但「FP8 存权重、反量化成 FP16 计算」这条路(Marlin kernel)能走通。所以能测出 67.06——8 位的精度存着,16 位的速度算着,速度受带宽限、质量受权重限,这个组合不亏。
  • NVFP4:闸门有两道。第一道算力闸门看 get_min_capability():W4A4 是 75(过),W4A16 / W8A16 是 89(直接拒载),同一个 NVFP4 目录里的子变体差 14 档。第二道更隐蔽:Qwen 的线性注意力层里有 48 维的子层,FP4 kernel 要求 64 对齐,48 维的层一旦被量化就报 size_n = 48 is not divisible by tile_n_size = 64。打包方有没有把这批层排除、排除的粒度写到哪一级(写到父模块 = 排不掉子模块、照样崩;写到子模块 = 真排除了),决定生死。我机器上两份包对照:sakamakismile 那份 222 条排除全在父模块级,崩;作者原版 148 条、144 条是子模块级,跑通,67.33 tok/s。条数多少不算数,粒度才算数。
  • NVFP4 的真正价值是显存:18.8G 权重,和 FP8 同速度档(67.33 vs 67.06),显存省出约 10G。256K 上下文宽裕得多。16G 内存的机器上,这 10G 是生死线。

实用选档:默认 Q8_0(近无损),显存明显不够才考虑降档,先降 Q6 再降 Q4,别一步到 Q4。KV cache 量化看上下文:32K 上下文下 q8 KV 是负优化(反量化开销大于省下的带宽),256K 上下文下 q8 反而比 f16 快(53.51 vs 52.50)——短上下文的结论不能当通则搬。

一句话总结:速度是位宽的线性函数,智商是位宽的阶梯函数。选量化别看基准表,看你实际用法里最不能忍什么——是结构化生成画崩,还是拒答行为回潮。

共驻生图:ComfyUI + Anima base v1.0#

文字模型站住之后,生图还缺。Qwen3.8-27B 是视觉语言模型,只看图、不生图;生图是另一条产品线,Qwen-Image-2.0 的权重没公开(API only)。本地生图得另找模型,最后定了 Anima base v1.0。

Anima 是什么。 全称 circlestone-labs/Anima,base 变体叫 Anima Base v1.0:2B 参数,CircleStone Labs 和 Comfy Org 合作,底座是 NVIDIA Cosmos-Predict2-2B,定位动漫与插画、不做写实。三个变体:Base 是未精调的底子(LoRA 训练用),Aesthetic 是精调后更稳的版本,Turbo 是蒸馏版、8~12 步快出。许可上模型非商用,输出的图可以商用。

官方三件套:

文件体积作用
anima-base-v1.0.safetensors4.18G主模型(DiT)
qwen_3_06b_base.safetensors1.2GQwen3-0.6B 文本编码器
qwen_image_vae.safetensors243MQwen-Image VAE

全套 bf16 约 7~8G。2080 Ti 没有 BF16 硬件支持,走小显存路线:Abiray/Anima-base-v1.0-GGUF 的量化版(这人用 FP32 转换防 BF16 噪声,敏感层保留 F32),ComfyUI-GGUF 插件加载,文本编码器和 VAE 仍用原版。

量化体积备注
Q8_02.24G近无损,在用
Q5_K_M1.56G作者标「甜点」
Q4_K_M1.38G低显存
Q3_K_M1.02G极限压缩

实测 Q8_0 GGUF:装载 2.2G,1024×1024 出图约 40 秒,全部落在 3G 显存预算内。文本编码器放 CPU——编码是一次性开销,慢 1~2 秒,换主模型独占整卡,值得。

Aesthetic v1.1 也试过,最后还是用的 base v1.0:base 的质感和色彩更接近我要的,aesthetic 那版有点太「精致」。Turbo 变体没专门测,40 秒出图的速度我够用,不需要再快。

共驻账本。LLM 服务双卡各占 20G 上下,每卡余 4~5G。Anima 级(3G)塞进一张卡,实测共驻:出图 39.78 秒的同时聊天 2 秒,互不影响。出图期间出图那张卡从 17G 涨到 20G,另一张纹丝不动。

SDXL 级(9~10G)和 z_image_turbo 级(约 15G)就塞不进余量了。办法是时间片轮换:出图前一键暂停 LLM 服务,画完 40 秒内自动拉起,全程不用人管。这台机器 16G 内存是短板,看护脚本里带了内存守卫:可用内存告急时先卸载生图模型保命,LLM 服务在核层级受保护。

Turing 跑生图的三个硬伤是固定的:无 BF16(z_image_turbo_bf16 得转成 FP16 才能用)、无 FP8、FlashAttention-2 要 sm_80。所以大生图模型一律走 FP16 或 GGUF 路线,Anima 这种 2B 小模型恰好是这台机器最合适的尺寸。

结论#

  1. 别听社区的跑分。这一轮实测下来,官方版和官方无审查版就是最稳定最好的。官方 FP8 的 67.06 tok/s 和社区的 NVFP4 并列第一,但官方版一次没崩过;官方无审查版是目前长期在用的那台——不拒答、不崩、扛得住 4 万 token 的埋针测试。社区版里有快的,但每一份都有暗坑,跑分高不代表能用。
  2. Qwen3.8-27B 的实际体验跟官方宣称的测试结果吻合,基本可以当 DeepSeek V4 Flash 用。助理每天的多轮工具调用、长文整理、创作,这两天全跑在这台机器上,体感和云端主力没有可感知的差距。
  3. 27k 超长提示的 prefill 表现优异。16 秒处理完,叠上前缀缓存,后续轮次掉到 2 秒级。长文档场景基本没有「想了半天」的感觉。
  4. 性能稳定。两天重度使用,没有出现小参数量模型那种同一句话循环输出或者卡死的情况。机器上还配了双看护(服务挂了 1 分钟内自动拉起、内存告急自动卸载保命),就算真被系统杀掉也恢复得快。

最后给一句话:手里要是有双 2080 Ti 的旧机器,别急着嫌弃。引擎和权重选对了,27B + 256K 上下文是够日常用的。

Qwen3.8 27B 本地实测
https://ayuan.ink/blog/qwen38-27b-local-test
Author Ayuan
Published at September 16, 2026
Comment seems to stuck. Try to refresh?✨