AI导航

Hugging Face 让 transformers 直接加载 GGUF:本机推理提速,接近 llama.cpp

AI资讯
5 min read
0 次阅读

2026 年 9 月 22 日,Hugging Face 在官方博客宣布,transformers 开始支持直接运行 GGUF 量化模型。用户可以从 Hub 上挑选一个 GGUF 检查点,通过 from_pretrained 传入 gguf_file 参数直接加载,在自己的机器上生成文本,全程沿用熟悉的 transformers API。

这件事的意义在于打通了两套生态。GGUF 是 llama.cpp 团队主导的量化格式,Unsloth、LM Studio Community、bartowski 等发布的现成 GGUF 检查点在 Hub 上累计被下载数百万次,是本地推理事实上的标准格式。过去要在 transformers 里用这些权重,得先反量化再加载,性能和便利性都打折扣。这次更新把 ggml 的底层内核直接复用进来,让 transformers 也能高效地跑 GGUF。

过去加载 GGUF 有多绕

在此之前,transformers 对 GGUF 的支持停留在“能导、不好用”的阶段:加载时先把量化权重反量化成全精度再跑,内存占用大、速度也上不去。想在 Mac 上高效跑量化模型,llama.cpp、Ollama、LM Studio 才是正解,transformers 更多是训练和评测的工具。这次更新的目标很直白:让同一套 GGUF 检查点在 transformers 里跑出接近 llama.cpp 的速度。

现在的用法

前提是 Apple Silicon Mac、较新的 PyTorch,以及从 git 主分支安装的最新 transformers 和配套的 kernels 库。加载只需要两行:

tokenizer = AutoTokenizer.from_pretrained(model_id, gguf_file=filename)
model = AutoModelForCausalLM.from_pretrained(model_id, gguf_file=filename)

除此之外的所有步骤——分词、generate、流式输出——都和原来一模一样。官方还提供了 transformers serve 命令,一行就能把 GGUF 模型包装成 OpenAI 兼容的本地 API,Jan、Pi 这类客户端可以直接连上来用。

实测:确实接近 llama.cpp,但要看清口径

Hugging Face 在 MacBook Pro M2 Max(32GB 统一内存)上做了对比:llama.cpp 一侧用 llama-bench 测 128 个 token 的解码吞吐,transformers 一侧用 generate 生成同样的 128 个 token。在小 dense 模型、大 dense 模型、MoE 模型三个检查点上,transformers 的吞吐都逼近了 llama.cpp。

但口径差异要说明白:llama.cpp 的数字是纯解码吞吐(不含 prompt 处理),transformers 的数字包含了 prefill。严格来说不是同一把尺子量的,官方自己也承认“不意味着测试条件完全相同”。结论可以信大方向——差距已经很小,但别把“接近”理解成“打平”或“反超”。

做到这一点的关键有两处。一是复用 ggml 的 Metal 内核(通过 kernels 库分发),量化权重不再展开,直接以压缩形态做矩阵运算;二是对 generate 循环做了优化,去掉不必要的注意力掩码检查、异步处理停止条件,让 CPU 调度和 GPU 执行更好地重叠。后者对所有 transformers 模型都有收益,不只限于 GGUF。

边界:这些场景还覆盖不到

官方把限制写得很清楚。第一,高性能的打包推理路径目前只支持 Apple Silicon 的 MPS,其他设备只能走反量化加载的老路,内存占用更大、速度更慢。第二,填充和批处理还没优化好,带 padding 的 batch 性能会打折扣。第三,架构覆盖有限,首批只支持 Qwen3.5 的 dense 和 MoE 架构,以及兼容的 Qwen3.8 检查点,其他架构要逐步扩展。

换句话说,这次更新瞄准的是“在一台 Mac 上做单人交互式对话”的场景。生产级的批量推理、多架构支持,还在路上。

对本地部署用户意味着什么

最大的变化是工作流统一了:同一套 GGUF 检查点,既可以在 transformers 里做实验、看中间激活、改前向传播、跑评测,也可以直接 serve 起来给客户端用。量化转换的验证也更方便——原始权重和 GGUF 转换版可以在同一个框架里对比,排查量化误差。官方还提到,ggml 内核这条路未来可以延伸到 llama.cpp 不支持的新架构,乃至视觉、音频模型。

但也别急着把 llama.cpp 换掉。Hugging Face 自己在博客里写明了:llama.cpp 依然是“优先保证高效本地推理”时的推荐引擎,它的专用运行时、内存管理和硬件覆盖广度,仍然是 transformers 短期内追不上的。要的是稳、快、省心,llama.cpp 阵营的工具依然是首选;要在 Python 里折腾模型本身,transformers 现在终于跟上了。

常见问题

Q:我现在的 llama.cpp / Ollama 工作流需要换吗?

A:不需要。这次更新解决的是“在 transformers 里也能高效跑 GGUF”的问题,不是替代 llama.cpp。日常对话、稳定 serving 继续用原来的工具;在 Python 里做实验、评测、微调时,新功能会更顺手。

Q:Windows 或 Linux 机器能用吗?

A:GGUF 文件格式的加载支持是跨平台的,但高性能的打包推理路径目前只支持 Apple Silicon 的 MPS。在其他设备上会回退到反量化加载,内存占用更大、速度更慢。

Q:支持哪些模型架构?

A:首批覆盖 Qwen3.5 的 dense 和 MoE 架构,以及兼容的 Qwen3.8 检查点。官方表示扩展到其他架构“相对直接”,会逐步增加;想用的模型不在列表里,可以去 GitHub 提 issue 帮助排优先级。

推荐工具

NVIDIA Chat with RTX AI聊天 Chat with RTX 是 NVIDIA 面向 RTX 电脑的本地 AI 聊天工具,可围绕本地文档和视频资料做问答,适合重视隐私、离线检索并具备硬件条件的用户更适合资料不便上传云 HuggingChat AI聊天 HuggingChat 是 Hugging Face 的开源模型聊天应用,支持 Omni 自动选模型,也可手动选社区开放模型对话。它适合体验开源模型、技术探索和问答,结果可能不稳定,重要内容需复核。 纳米AI搜索 AI搜索 纳米AI 是 360 旗下 AI 搜索和智能体入口,支持文字、语音、拍照提问、多模型协作与内容创作,适合中文用户做日常搜索、学习问答、移动查询、热点追踪、生活决策、知识整理和轻量创作。 Qwen Chat(通义千问) AI聊天 Qwen Chat 是Qwen 大模型聊天助手,支持Qwen 模型聊天、写作和编程问答,适合中文用户和开发者完成 AI 对话、资料问答和任务协作,适合上线前核对权限、成本和资料质量。 DuckDuckGo AI Chat AI聊天 DuckDuckGo AI Chat 适合重视隐私的普通用户使用,围绕隐私 AI 聊天、免账户使用和多模型问答提供对话式 AI 支持和任务协作能力,适合上线前核对权限、成本和资料质量。 Goody-2 AI聊天 Goody-2 是以极端安全和伦理对齐为特色的 AI 聊天助手,常用于观察模型拒答边界、内容安全策略、保守输出体验和 AI 风险讨论,更适合作为安全边界样本使用前应理解它偏实验性质,不适合。