GGUF能在Transformers里直接跑了,本地模型终于不用二选一

GGUF能在Transformers里直接跑了,本地模型终于不用二选一

💡 原文中文,约3400字,阅读约需8分钟。
📝

内容提要

Hugging Face宣布Transformers可直接加载并高效运行GGUF量化模型,官方示例使用Qwen3.5-4B的Q4_K_M文件,在Apple Silicon上复用ggml的Metal内核。这解决了本地模型推理与分析工具链割裂的问题,使同一份GGUF进入Python生态,便于评测和自定义解码。但llama.cpp仍是高效推理首选,首批仅覆盖MPS,基准对比需区分预填充与纯解码。

🔎

延伸解读

GGUF接入Transformers:解决的是工具链割裂,而非推理性能

过去本地模型开发常面临两难:llama.cpp跑GGUF省内存速度快,但做激活分析、评测或自定义解码需换回Transformers和原始权重。新接入让同一份GGUF直接进入Python生态,复用评测脚本、观察中间激活、修改前向过程。但官方明确llama.cpp仍是高效推理首选,此次解决的是兼容与复用,不是性能超越。

量化文件变小不等于运行一定高效:需区分加载与打包路径

GGUF文件变小只说明权重存储更紧凑,要跑得快还需能直接读取打包权重的矩阵乘内核。新路径通过kernels库调用ggml的Metal内核,若兼容内核取不到,加载器可能回退到解量化并用sdpa,内存占用明显上升。因此“成功加载”与“仍以打包量化路径高效运行”必须分别验证,不能仅凭文件大小判断效率。

基准对比需谨慎:预填充与纯解码不可直接比较

官方对比中,llama-bench用-p 0排除Prompt处理,只测128个Token的解码;Transformers示例则从12个Token输入开始,测量包含预填充。两者即使数值接近,也不是严格同条件竞赛。更公平的本地评测应分开记录TTFT(首Token时间)与解码速度,并注意温度、电源和预热次数对笔记本跑分的影响。

质量评测不能省:Q4_K_M在聊天上自然不代表所有任务稳定

Q4_K_M在常见聊天上表现自然,但代码补全、数学符号或结构化JSON可能不稳定。应固定一组真实提示,对不同量化逐条检查任务成功率;若更小模型需要更多重试,节省的内存可能被时间和人工成本吃回去。落地前建议锁定版本、记录回退、测峰值内存与首Token时间,并用自有数据集比较Q4、Q5和BF16质量。

Q&A

Hugging Face 这次让 Transformers 直接跑 GGUF 具体是什么意思?

Hugging Face 在 9 月 22 日宣布,最新 Transformers 可直接加载并高效运行 GGUF 量化模型。官方示例使用 unsloth/Qwen3.5-4B-GGUF 的 Q4_K_M 文件,在 Apple Silicon 上复用 ggml 的 Metal 内核,并优化 generate 中的 CPU—GPU 同步。

GGUF 文件里到底装了什么?为什么它能让模型变小?

GGUF 是一种把权重、Tokenizer 元数据和可选聊天模板放进同一文件的格式。Q4_K_M 大体以 4 位保存多数张量,同时给敏感张量更高精度,所以文件变小只说明存储和读取的权重更紧凑。

在 Transformers 里跑 GGUF 需要什么环境?怎么安装和运行?

当前官方要求 Apple Silicon、兼容的 PyTorch 版本,并暂时从 Transformers 主分支安装:pip install -U "git+https://github.com/huggingface/transformers.git" kernels。然后通过 AutoTokenizer 和 AutoModelForCausalLM 指定 gguf_file 加载,例如 MODEL = "unsloth/Qwen3.5-4B-GGUF",FILE = "Qwen3.5-4B-Q4_K_M.gguf"。

Transformers 跑 GGUF 和 llama.cpp 相比,性能上有什么需要注意的?

llama.cpp 仍是官方推荐的高效本地推理引擎。官方对比中,llama-bench 用 -p 0 排除了 Prompt 处理,只测 128 个 Token 的解码;而 Transformers 示例从 12 个 Token 的输入开始,测量里包含预填充。两根柱子即使接近,也不是严格同条件竞赛。

这次更新对本地模型开发者的实际好处是什么?

最直接的收益是同一份 GGUF 可以进入 Transformers 生态:复用评测脚本、观察中间激活、修改前向过程、添加 Logits Processor,或检查转换误差。对模型研究和本地工具开发,这减少了“推理一套、分析另一套”的资产复制。

用 Transformers 跑 GGUF 目前有哪些限制?

首批打包路径只覆盖 MPS,重点是 Qwen3.5 稠密与混合专家架构,并兼容部分 Qwen3.8 检查点;Padding 和批处理仍待改进。服务器端 CUDA、多并发和其他架构不能从这次发布自动推导。

评测 GGUF 量化模型时,为什么不能只看一个 tok/s 数字?

因为预填充和解码是两回事。llama-bench 用 -p 0 只测纯解码,而 Transformers 示例包含预填充。更公平的本地评测应分开记录 TTFT(首 Token 时间)与解码速度,并注意官方脚本每轮之间休息 90 秒,因为背靠背运行会因温度让速度下降 10% 以上。

Q4_K_M 量化在质量上有什么风险?

Q4_K_M 在常见聊天上自然,不代表代码补全、数学符号或结构化 JSON 保持同样稳定。应固定一组真实提示,对不同量化逐条检查任务成功率;如果更小模型需要更多重试,节省的内存可能被时间和人工成本吃回去。

🏷️

标签

➡️

继续阅读