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,转载请注明出处。

相关推荐
AlbertZein42 分钟前
Step 5 Preview 实测:和 DeepSeek V4 Pro、GLM5.3 同做一个 3D 游戏
人工智能·ai编程
10年前端老司机42 分钟前
面试被问 RAG 说不清楚?故事 + 代码带你吃透检索增强生成
人工智能·langchain·llm
知几蜗牛42 分钟前
医疗文档审核从几天缩到几小时,最该追问的不是模型多快
人工智能
知几蜗牛42 分钟前
Agent会话不是沙箱:微软这次把两个最容易混的隔离轴拆开了
人工智能
墨林陌42 分钟前
AI 热点日报(2026-09-23):SpaceXAI发布Grok 4.7,特朗普联大宣布AI改名「超级智能」
人工智能
吴佳浩42 分钟前
Multi-Agent 通信协议与编排中枢:状态机、DAG 与事件总线
人工智能·agent·ai编程
米小虾43 分钟前
把上下文编译进权重:拆解剑桥「无限参数 LLM」,以及它尚未回答的四个问题
人工智能·llm
冬奇Lab43 分钟前
LLM 自动化测试系列(02):统一技术底座——视觉定位 / DOM 语义化 / Computer Use
人工智能
冬奇Lab43 分钟前
一天一个开源项目(第225篇):NanoJev —— 一个 0.6B 的并行决策模型,让 LLM 直接输出概率分布而不是生成 Token
人工智能·开源