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

本地模型开发过去常有一道割裂:用llama.cpp跑GGUF,省内存、速度快;回到Transformers做激活分析、评测或自定义解码,又要换权重和工具链。Hugging Face的新接入把同一份GGUF带进熟悉的Python接口,但它解决的是兼容与复用,不是宣布Transformers全面取代专用推理引擎。

发生了什么

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

官方给出的4B模型文件大小很直观:BF16为8.42GB,Q6_K为3.53GB,Q5_K_M为3.14GB,Q4_K_M为2.74GB。官方建议通常从Q4_K_M起步,再按可用内存与任务质量尝试更高精度;这不是"4位一定够用"的保证。

技术原理:格式、权重与运行时是三层

GGUF是一种把权重、Tokenizer元数据和可选聊天模板放进同一文件的格式。Q4_K_M大体以4位保存多数张量,同时给敏感张量更高精度。文件变小只说明存储和读取的权重更紧凑;要跑得快,还要有能直接读取打包权重的矩阵乘内核,以及不频繁等待GPU的生成循环。

新路径通过kernels库调用ggml的量化、归一化、注意力和Gated Delta Network等Metal内核。若兼容内核取不到,加载器可能回退到解量化并用sdpa,内存占用就会明显上升。因此"成功加载"与"仍以打包量化路径高效运行"必须分别验证。

flowchart LR A[Hub上的GGUF文件] --> B[读取权重和Tokenizer元数据] B --> C{存在兼容打包内核?} C -- 是 --> D[保持量化权重] D --> E[ggml Metal算子] E --> F[Transformers generate] C -- 否 --> G[回退解量化或SDPA] G --> F F --> H[评测 自定义解码 或OpenAI兼容服务] H --> I[记录峰值内存 tok/s与任务质量]

最小实践:先验证路径,再谈性能

当前官方要求Apple Silicon、兼容的PyTorch版本,并暂时从Transformers主分支安装:

bash 复制代码
pip install -U "git+https://github.com/huggingface/transformers.git" kernels
python 复制代码
import time
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

MODEL = "unsloth/Qwen3.5-4B-GGUF"
FILE = "Qwen3.5-4B-Q4_K_M.gguf"

tokenizer = AutoTokenizer.from_pretrained(MODEL, gguf_file=FILE)
model = AutoModelForCausalLM.from_pretrained(MODEL, gguf_file=FILE)
inputs = tokenizer(
    "用三句话解释为什么量化会节省内存。",
    return_tensors="pt",
).to(model.device)

with torch.inference_mode():
    model.generate(**inputs, max_new_tokens=8, min_new_tokens=8, do_sample=False)
    torch.mps.synchronize()
    started = time.perf_counter()
    output = model.generate(
        **inputs, max_new_tokens=128, min_new_tokens=128, do_sample=False
    )
    torch.mps.synchronize()

seconds = time.perf_counter() - started
print(f"decode+prefill: {128 / seconds:.1f} tok/s")
print(tokenizer.decode(output[0], skip_special_tokens=True))

代码先预热,再同步MPS并计时;它保留了官方接口,但这个数包含预填充,不能直接与llama-bench -p 0 -n 128的纯解码指标比较。示例未在本次任务中实际运行:需要下载约2.74GB模型并匹配Apple Silicon、PyTorch与预览内核版本。本次仅完成Python静态语法检查,不虚构吞吐结果。

若要提供本地OpenAI兼容端点,官方当前命令为transformers serve "unsloth/Qwen3.5-4B-GGUF:Qwen3.5-4B-Q4_K_M.gguf"。模型参数用"仓库:文件名"明确选定量化文件。

对开发者的实际影响

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

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

基准为什么不能只抄一个tok/s

官方对比已经写出一个常被忽略的差异:llama-bench用-p 0排除了Prompt处理,只测128个Token的解码;Transformers示例则从12个Token的输入开始,测量里包含预填充。两根柱子即使接近,也不是严格同条件竞赛。机器还是M2 Max、32GB统一内存、macOS 26.6,并固定PyTorch 2.12.1和kernels 0.17.0。换成普通M系列、不同散热状态或更长上下文,结论都可能变化。

一个更公平的本地评测应分开记录TTFT(Time to First Token,首Token时间)与解码速度。短问答更在意启动和首Token;长生成才更受持续解码速度影响。官方脚本每轮之间休息90秒,因为背靠背运行会因温度让速度下降10%以上。这提醒我们:笔记本跑分不记录电源、温度和预热次数,数字看起来精确,比较却未必有效。

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

还要把模型下载时间与磁盘空间纳入首次体验,避免只报告热缓存下的速度。

我的判断与行动清单

这次变化的价值是工具链收敛,而不是跑分冠军换人。 GGUF负责可携带的量化资产,ggml内核负责重计算,Transformers负责可编程模型接口。三层组合让本地模型更容易进入研究与评测流程。

落地前做四件事:锁定Git提交与内核版本;记录是否发生回退;同时测峰值内存、首Token时间和稳定解码速度;用自己的代码、中文问答或结构化输出集比较Q4、Q5和BF16质量。只看文件大小或一段顺滑输出,都不足以决定生产选型。

适合它的,是单用户本地实验、量化质量评估和自定义Python推理;不适合直接据此承诺跨平台、批量服务或与llama.cpp完全等价的吞吐。

你更希望用GGUF解决"模型装得下",还是"模型能被现有Python评测链直接使用"?

关注「蜗牛聊AI」,一起看懂技术变化背后的真正机会。


本文首发于 java4u.cn,转载请注明出处。

相关推荐
QinHsiu3 分钟前
5种方案、3个工程问题、1个务实路线图:AI Agent上下文管理的“战国时代”
人工智能
y = xⁿ4 分钟前
拆解cloud code记忆系统
java·人工智能·python·github
Dawson Zhu7 分钟前
【AI Infra小白入门④】AI Infra学习路线图:从入门到精通的完整指南(附核心思维方法)
人工智能·语言模型·架构·aigc·agi
QinHsiu7 分钟前
99%的AI短剧创作者月入不足10元:工具已经白菜价,但赚钱的依然是那1%
人工智能
愤怒火龙果8 分钟前
AI攻防 LLM中间件
人工智能·网络安全·中间件
艾莉丝努力练剑9 分钟前
【AI大模型接入SDK】ChatServer接口设计规范
网络·c++·人工智能·学习·大模型·设计规范
摇滚侠10 分钟前
《大模型应用开发实践:基于 Spring AI+DeepSeek 实现》第 12 章 Spring AI 开发入门 阅读笔记 2
人工智能·笔记·spring
武汉星际互动11 分钟前
技术拐点已至:AI Agent给政务大厅带来什么变革?
大数据·人工智能·政务
科技研学社11 分钟前
服装AI视觉质检落地实战:从人工验布到自动缺陷检测的多品牌方案对比
人工智能
QinHsiu12 分钟前
4B干翻9B底座:首个Agent-Native模型NeoHorse-1,把“做事的过程”压进了参数里
人工智能