Gemma 4 12B本地部署避坑:OMLX后缀、4bit/8bit选择与gemma4_unified报错修复

文章目录

  • 1、前言
  • 2、先给下载结论
    • [2.1 M4 / 16GB:选 it-4bit](#2.1 M4 / 16GB:选 it-4bit)
    • [2.2 M1 Pro / 32GB:优先 it-8bit,稳妥 it-4bit](#2.2 M1 Pro / 32GB:优先 it-8bit,稳妥 it-4bit)
  • [3、Gemma 4 12B 是今天的新模型,26B 不是](#3、Gemma 4 12B 是今天的新模型,26B 不是)
  • 4、模型名称怎么拆
    • [4.1 `mlx-community` 是什么](#4.1 mlx-community 是什么)
    • [4.2 `gemma-4-12B` 是什么](#4.2 gemma-4-12B 是什么)
    • [4.3 `it` 是什么](#4.3 it 是什么)
  • 5、后缀逐个讲清楚
    • [5.1 `bf16`:高精度,不适合普通 Mac 日常常驻](#5.1 bf16:高精度,不适合普通 Mac 日常常驻)
    • [5.2 `8bit`:32GB Mac 的质量优先选择](#5.2 8bit:32GB Mac 的质量优先选择)
    • [5.3 `mxfp8`:FP8 格式,可以试,但不是第一选择](#5.3 mxfp8:FP8 格式,可以试,但不是第一选择)
    • [5.4 `6bit` / `5bit`:中间档,但不是最常用](#5.4 6bit / 5bit:中间档,但不是最常用)
    • [5.5 `4bit`:本地模型的主力版本](#5.5 4bit:本地模型的主力版本)
    • [5.6 `mxfp4`:新式 FP4,先作为实验项](#5.6 mxfp4:新式 FP4,先作为实验项)
    • [5.7 `nvfp4`:也是 FP4,但更不要当第一选择](#5.7 nvfp4:也是 FP4,但更不要当第一选择)
    • [5.8 `assistant`:不是主模型,是 MTP 辅助模型](#5.8 assistant:不是主模型,是 MTP 辅助模型)
  • 6、为什么文件大小不等于运行内存
  • [7、在 OMLX 里怎么搜](#7、在 OMLX 里怎么搜)
    • [7.1 不要只搜 `Gemma4`](#7.1 不要只搜 Gemma4)
    • [7.2 推荐搜索关键词](#7.2 推荐搜索关键词)
    • [7.3 看结果时按这个顺序判断](#7.3 看结果时按这个顺序判断)
    • [7.4 命令行下载方式](#7.4 命令行下载方式)
  • 8、一套通用选型规则
    • [8.1 先看用途:聊天就选 `it`](#8.1 先看用途:聊天就选 it)
    • [8.2 再看机器:16GB 先 4bit,32GB 可 8bit](#8.2 再看机器:16GB 先 4bit,32GB 可 8bit)
    • [8.3 再看上下文:长上下文比模型本体更容易吃爆内存](#8.3 再看上下文:长上下文比模型本体更容易吃爆内存)
    • [8.4 最后看新格式:mxfp / nvfp 先当实验项](#8.4 最后看新格式:mxfp / nvfp 先当实验项)
  • 9、结合这次真实选择,再做一次判断
    • [9.1 第一组:主模型高精度和中高精度](#9.1 第一组:主模型高精度和中高精度)
    • [9.2 第二组:主模型低位量化](#9.2 第二组:主模型低位量化)
    • [9.3 第三组:assistant 辅助模型](#9.3 第三组:assistant 辅助模型)
  • 10、常见坑
    • [10.1 下载了 `assistant`,发现不能聊天](#10.1 下载了 assistant,发现不能聊天)
    • [10.2 下载了不带 `it` 的版本,觉得不好用](#10.2 下载了不带 it 的版本,觉得不好用)
    • [10.3 16GB 机器下载了 8bit,加载后卡住](#10.3 16GB 机器下载了 8bit,加载后卡住)
    • [10.4 看到 26B 下载量高,就以为是今天新模型](#10.4 看到 26B 下载量高,就以为是今天新模型)
    • [10.5 `mxfp4` / `nvfp4` 加载异常](#10.5 mxfp4 / nvfp4 加载异常)
    • [10.6 下载成功但加载失败:`gemma4_unified not supported`](#10.6 下载成功但加载失败:gemma4_unified not supported)
  • 11、我的最终选择
  • 12、后续升级策略
  • 13、参考资料

🍃作者介绍:AI 应用负责人/AI产品架构师,阿里云专家博主。专注 LLM 应用开发、Agent 系统设计、具身智能与工业 AI 落地。日常在大模型训练、Coding Agent 工具链、AI 产品商业化等方向持续输出实战内容。

🦅个人主页:@逐梦苍穹

🐼GitHub主页:https://github.com/XZL-CODE

✈ 您的一键三连,是我创作的最大动力🌹

1、前言

今天在 OMLX 里搜 Gemma 4 12B,我遇到一个很典型的问题:

同一个模型,为什么列表里会出现 bf168bitmxfp86bit5bitnvfp44bitmxfp4,后面还有一堆 assistant

更麻烦的是,我手上有两台 Mac:

  • 一台 M1 Pro,32GB 统一内存
  • 一台 M4,16GB 统一内存

这两台机器都能跑本地模型,但下载选择完全不同。M4 芯片更新,算力不弱,但 16GB 统一内存是硬边界;M1 Pro 芯片老一点,却有 32GB 内存,反而能尝试更高精度的量化版本。

这篇文章不讲空泛的模型排行榜,而是把 OMLX / Hugging Face 里常见的模型名称后缀讲透。读完你应该能自己判断:

  • 哪个是主模型,哪个只是辅助模型;
  • itbf168bit4bit 分别代表什么;
  • mxfp4nvfp4 这种新式后缀要不要碰;
  • M4 16GB 和 M1 Pro 32GB 分别该下载哪个版本;
  • 在 OMLX 里应该怎么搜,怎么避开错误模型。

先给结论:如果你只是想在 Mac 本地跑 Gemma 4 12B,优先下载 mlx-community/gemma-4-12B-it-4bitmlx-community/gemma-4-12B-it-8bit

2、先给下载结论

先不绕弯子,直接按设备给选择。

2.1 M4 / 16GB:选 it-4bit

M4 16GB 这台机器,优先下载:

text 复制代码
mlx-community/gemma-4-12B-it-4bit

原因很简单:16GB 统一内存的瓶颈不是模型文件能不能下载,而是加载后还能不能留下足够空间给系统、OMLX 进程、KV Cache、上下文和其它应用。

gemma-4-12B-it-4bit 的大小约 10.2GB,看起来已经不小,但它仍然是 16GB 机器上最合理的第一选择。8bit 约 11.8GB,表面只多 1.6GB,但实际运行时还会叠加 KV Cache 和运行时开销,16GB 上容易变得紧张。

我的建议是:

项目 建议
主模型 mlx-community/gemma-4-12B-it-4bit
上下文 先从 4K-8K 开始
多模态 图片、音频、视频输入先保守测试
不建议 bf168bit31B26B-A4B

如果你打开浏览器、IDE、微信、飞书、Docker 一堆应用后再跑模型,16GB 会明显吃紧。所以 M4 16GB 的策略不是追求最高精度,而是先稳定跑起来。

2.2 M1 Pro / 32GB:优先 it-8bit,稳妥 it-4bit

M1 Pro 32GB 这台机器,优先下载:

text 复制代码
mlx-community/gemma-4-12B-it-8bit

如果你希望更省内存、更快加载,也可以下载:

text 复制代码
mlx-community/gemma-4-12B-it-4bit

32GB 统一内存给了你更大的容错空间。8bit 通常会比 4bit 保留更多模型质量,尤其是在代码、推理、长回答、中文表达稳定性上更值得优先尝试。

我的建议是:

项目 建议
质量优先 mlx-community/gemma-4-12B-it-8bit
速度/省内存优先 mlx-community/gemma-4-12B-it-4bit
测试用途 可以试 mxfp86bit
不建议日常用 bf16

bf16 的文件大小约 22.3GB,32GB 机器不是完全不能试,但它不适合日常常驻。加载模型只是第一步,真正推理时还要留空间给上下文、缓存和系统内存压力。

3、Gemma 4 12B 是今天的新模型,26B 不是

这点要先厘清,否则很容易下错方向。

Google 这次新发布的是 Gemma 4 12B Unified。官方发布时间是 2026 年 6 月 3 日,按北京时间看就是 6 月 4 日。Google 在发布页里明确说,它是放在 E4B 和 26B MoE 之间的中等尺寸模型,目标是让本地笔记本也能跑多模态和 Agent 工作流。

Gemma 4 26B A4B 不是 Gemma 3,也不是错的模型,它也是 Gemma 4 家族的一员。但它不是这次新增的 12B,而是 Gemma 4 家族早前已经出现的版本。它的重点是 MoE 架构:总参数 26B,但推理时只激活约 4B 参数,所以名字里有 A4B

简单说:

模型 是否这次新发 定位
Gemma 4 12B Unified 新增中尺寸、本地多模态、原生音频输入
Gemma 4 26B A4B 不是这次新增 MoE 版本,总参数大,激活参数小
Gemma 4 31B 不是这次新增 更大的 dense 版本
Gemma 4 E2B / E4B 不是这次新增 更小的端侧版本

如果你想体验"今天 Google 新发的 Gemma 4 新模型",目标就应该是 12B,不是 26B。

Google 官方对 12B 的定义有几个关键词:

  • Unified:统一多模态架构;
  • encoder-free:不再依赖独立视觉/音频编码器;
  • native audio input:12B 是中尺寸模型里首次加入原生音频输入;
  • local agentic workflows:面向本地 Agent 工作流;
  • 16GB consumer laptops:官方定位里明确提到 16GB 级别消费笔记本。

这也是为什么 M4 16GB 这台机器可以考虑 12B 4bit,而不是被迫只能跑 4B 以下模型。

4、模型名称怎么拆

以最应该下载的版本为例:

text 复制代码
mlx-community/gemma-4-12B-it-4bit

这串名称可以拆成五段:

text 复制代码
发布者 / 模型家族 - 模型尺寸 - 用途版本 - 量化格式

展开就是:

片段 含义
mlx-community Hugging Face 上的发布者,表示这是 MLX 社区转换版
gemma-4 Google Gemma 4 模型家族
12B 约 12B 参数级别的模型
it instruction-tuned,指令微调版
4bit 4 位量化版本

对 OMLX 用户来说,这五段里最关键的是三个:

  1. 发布者是不是 MLX 相关 :优先 mlx-community,其次 lmstudio-community 这类明确 MLX 的转换。
  2. 有没有 it :日常聊天、写代码、问答优先带 it
  3. 最后的量化后缀:决定能不能在你的 Mac 上跑得舒服。

4.1 mlx-community 是什么

mlx-community 是 Hugging Face 上常见的 MLX 转换模型发布者。MLX 是 Apple 开源的机器学习框架,专门面向 Apple Silicon 和统一内存架构。

OMLX 本质上就是围绕 MLX 生态构建的本地推理服务,所以你在 OMLX 里找模型时,要优先找 MLX 格式,而不是随便下载一个原始 PyTorch 权重或 GGUF 文件。

常见发布者可以这样理解:

发布者 建议
mlx-community Apple Silicon / OMLX 优先选择
lmstudio-community 通常也可用,注意看是否写了 MLX
google 官方原始模型,适合 Transformers,不一定是 OMLX 最省内存格式
个人 fork 谨慎,除非你知道对方做了什么转换

截图里出现过 dealignai/...CRACK 这种名字,我不建议作为首选。下载本地模型不是只看"能不能跑",还要看来源可信度、README、许可证、转换方式和社区使用量。

4.2 gemma-4-12B 是什么

gemma-4 表示 Gemma 4 系列,12B 表示这是 12B 级别模型。

Gemma 4 家族现在可以按尺寸理解:

版本 说明
E2B 端侧小模型,E 表示 effective parameters
E4B 更强一点的端侧小模型
12B Unified 这次新增的中尺寸统一多模态模型
26B A4B MoE 模型,总参数 26B,激活参数约 4B
31B 更大的 dense 模型

这里有两个容易误解的点。

第一,E2B/E4B 里的 E 不是普通的总参数量,而是 effective parameters,Google 用 Per-Layer Embeddings 这类设计让小模型在端侧更高效。

第二,26B A4B 里的 A4B 是 active parameters,意思是推理时大约只激活 4B 参数。它不是"4B 模型",也不是"26B 全部每步都跑"。这就是 MoE 模型的核心优势。

4.3 it 是什么

itinstruction-tuned,也就是指令微调版。

对于大多数人来说,带 it 的模型才是日常应该下载的版本。比如:

text 复制代码
gemma-4-12B-it-4bit

它更适合:

  • 聊天问答;
  • 写代码;
  • 总结文章;
  • 分析图片;
  • Agent 工具调用;
  • 处理自然语言指令。

不带 it 的版本,例如:

text 复制代码
gemma-4-12B-4bit

通常更接近 base / pre-trained 模型。它不是不能用,而是更偏研究、补全、微调、评测场景。你把它当聊天助手用,可能会觉得它"不听话""格式乱""不像助手"。

所以选型口诀是:

text 复制代码
日常使用选 it,研究微调再考虑 base。

5、后缀逐个讲清楚

现在进入最容易混乱的部分:bf168bitmxfp86bit5bitnvfp44bitmxfp4

这些后缀基本都在讲一件事:模型权重用什么精度保存。

精度越高,模型质量越稳,但文件更大、内存更吃紧;精度越低,越省内存、越容易本地跑,但模型质量可能有损失。

5.1 bf16:高精度,不适合普通 Mac 日常常驻

bf16 是 bfloat16。你可以把它理解为接近原始高精度推理的版本。

text 复制代码
mlx-community/gemma-4-12B-it-bf16

大小约 22.3GB。

优点:

  • 精度最高;
  • 最接近原始模型质量;
  • 适合做对比评测。

缺点:

  • 文件大;
  • 加载内存压力大;
  • KV Cache 和上下文会继续吃内存;
  • 16GB 机器不现实,32GB 机器也不适合日常常驻。

我的建议:M4 16GB 不要下;M1 Pro 32GB 除非做测试,否则也不优先下。

5.2 8bit:32GB Mac 的质量优先选择

8bit 是 8 位量化版本。

在截图里:

text 复制代码
mlx-community/gemma-4-12B-it-8bit

大小约 11.8GB。

它是 M1 Pro 32GB 这台机器的首选,因为它在质量和资源占用之间比较平衡。相比 4bit8bit 通常更稳,尤其是在这些场景里:

  • 代码生成;
  • 数学推理;
  • 多轮长回答;
  • 中文表达;
  • 对格式要求严格的任务;
  • 需要更少幻觉的问答。

但对 M4 16GB 来说,8bit 不是完全不能尝试,而是不适合当第一选择。因为 16GB 机器还要留系统内存,稍微开大上下文就可能顶到内存压力。

5.3 mxfp8:FP8 格式,可以试,但不是第一选择

mxfp8 是一种 microscaling FP8 格式。MLX 官方文档里列出了 mxfp4mxfp8nvfp4 等量化模式。

它的目标是用更低位宽的浮点格式压缩权重,同时尽量保留动态范围。

但对普通 OMLX 用户来说,我不建议一上来就选 mxfp8。原因不是它一定差,而是:

  • 普通 8bit 更直观,兼容性预期更清晰;
  • 新式浮点量化的实际效果更依赖运行时支持;
  • 你刚开始排错时,变量越少越好。

所以我的建议是:

text 复制代码
先跑通 8bit 或 4bit,再测试 mxfp8。

5.4 6bit / 5bit:中间档,但不是最常用

6bit5bit 是中间量化档位。

截图里能看到:

text 复制代码
mlx-community/gemma-4-12B-it-6bit
mlx-community/gemma-4-12B-it-5bit

它们看起来很诱人:比 8bit 省内存,又可能比 4bit 质量更好。

但在实际选择上,它们常常不是第一梯队。原因是:

  • 16GB 机器通常直接需要 4bit
  • 32GB 机器通常可以直接上 8bit
  • 中间档适合"8bit 有点紧,但 4bit 又不甘心"的用户。

如果你是 M1 Pro 32GB,发现 8bit 在大上下文下内存压力高,可以试 6bit。如果你是 M4 16GB,我仍然建议优先 4bit,不要绕中间档。

5.5 4bit:本地模型的主力版本

4bit 是大多数本地模型用户最常用的量化版本。

在截图里:

text 复制代码
mlx-community/gemma-4-12B-it-4bit

大小约 10.2GB。

它是 M4 16GB 的首选,也是 M1 Pro 32GB 的稳妥选择。

优点:

  • 内存压力低;
  • 下载体积相对可控;
  • 更容易在 Apple Silicon 上跑起来;
  • 适合本地聊天、轻量代码、摘要、知识问答。

缺点:

  • 相比 8bit,复杂推理和代码稳定性可能下降;
  • 长文本细节保持能力可能弱一点;
  • 对格式严格的输出可能更容易犯错。

不过对本地模型来说,能稳定运行往往比纸面质量更重要 。尤其是 16GB 机器,4bit 是让 12B 级别模型真正可用的关键。

5.6 mxfp4:新式 FP4,先作为实验项

mxfp4 是 microscaling FP4 格式。MLX 文档里说明,mx 模式按组量化,mxfp4 使用 FP4 表示和共享 scale。

你可以把它理解为:它也是 4 位左右的低精度格式,但不是普通 affine 4bit 那一路,而是更偏新式浮点量化。

对用户来说,关键不是背格式细节,而是判断要不要下载。

我的建议:

  • 如果你第一次下载 Gemma 4 12B,不要先选 mxfp4
  • 如果普通 4bit 跑通了,可以再下载 mxfp4 做速度和质量对比;
  • 如果 OMLX 或 MLX 版本不够新,遇到加载问题,优先退回普通 4bit

5.7 nvfp4:也是 FP4,但更不要当第一选择

nvfp4 也是一种 4 位浮点量化格式。NVIDIA 技术博客里对 NVFP4 的定位是更高效、误差更低的低精度格式。MLX 也把 nvfp4 列在支持的量化模式里。

但注意,我们现在是在 Apple Silicon + OMLX 上跑模型,不是在 NVIDIA Blackwell 上跑训练或推理。所以不要因为名字里有 nv 就觉得它一定比普通 4bit 更适合你的 Mac。

我的建议:

text 复制代码
普通用户先选 it-4bit;想折腾再试 it-nvfp4。

5.8 assistant:不是主模型,是 MTP 辅助模型

截图第三张里有一堆小模型:

text 复制代码
mlx-community/gemma-4-12B-it-assistant-bf16
mlx-community/gemma-4-12B-it-assistant-8bit
mlx-community/gemma-4-12B-it-assistant-4bit
mlx-community/gemma-4-12B-it-assistant-mxfp4

这些模型很小,几百 MB,看起来像"轻量版 Gemma 4 12B"。但它们不是主模型,不能当普通聊天模型来下载。

assistant 在这里指的是 MTP drafter,也就是 Multi-Token Prediction 的辅助草稿模型。它的作用是在 speculative decoding 里提前猜测几个 token,再由主模型验证,从而降低延迟。

通俗讲:

text 复制代码
主模型 = 真正回答问题的人
assistant = 先打草稿、帮主模型提速的人

所以下载顺序应该是:

  1. 先下载主模型,例如 gemma-4-12B-it-4bit
  2. 确认 OMLX 能正常加载和对话;
  3. 再看 OMLX 是否支持给这个模型配置 assistant
  4. 支持再下载匹配的 it-assistant-*

不要一上来只下载 assistant,然后疑惑为什么不能正常聊天。

6、为什么文件大小不等于运行内存

截图里有一个现象很容易误导人:

  • bf16 约 22.3GB;
  • 8bit 约 11.8GB;
  • 4bit 约 10.2GB;
  • assistant-4bit 只有几百 MB。

很多人会问:既然 4bit 是 4 位量化,为什么还要 10GB?12B 模型 4bit 不是应该约 6GB 吗?

原因是:模型文件大小不是简单的"参数量 × bit 数"。

实际还会包含:

  • embedding;
  • tokenizer;
  • config;
  • 多模态投影层;
  • 非量化层;
  • safetensors 元数据;
  • 某些权重没有完全按同一位宽压缩;
  • MLX 转换后的存储结构。

更关键的是,文件大小也不等于运行内存。

模型运行时还要额外占用:

运行时开销 说明
KV Cache 上下文越长越吃内存
激活值 推理过程中间张量
批处理开销 并发请求会增加内存压力
OMLX 服务进程 服务本身和调度器也需要内存
macOS 系统 统一内存要和系统、窗口、浏览器共享
多模态输入 图片、音频、视频会带来额外处理开销

这就是为什么 M4 16GB 不能只看"文件 10.2GB,好像还能剩 5.8GB"。实际运行时,剩下空间很快会被上下文和系统吃掉。

对 Apple Silicon 来说,还有一个关键点:统一内存不是独立显存。

它的好处是 CPU/GPU 共享,模型不用像传统 PC 那样频繁在内存和显存之间拷贝;缺点是系统、应用、模型、缓存都抢同一池内存。内存压力一高,macOS 开始压缩和交换,推理速度会明显下降。

7、在 OMLX 里怎么搜

OMLX 的 Admin 控制台可以直接搜 Hugging Face 模型。你可以打开:

text 复制代码
http://localhost:8000/admin

进入:

text 复制代码
Models -> Downloader

然后按下面这个思路搜。

7.1 不要只搜 Gemma4

如果只搜:

text 复制代码
Gemma4

结果会非常杂:

  • Gemma 4 E2B;
  • Gemma 4 E4B;
  • Gemma 4 26B;
  • Gemma 4 31B;
  • base 模型;
  • instruct 模型;
  • assistant 模型;
  • GGUF;
  • MLX;
  • 各种个人转换版。

这时候你很容易被"热门下载""大小排序""看起来参数更大"带偏。

7.2 推荐搜索关键词

如果目标是今天新发的 12B,就搜:

text 复制代码
gemma-4-12B

如果你要聊天/写代码/日常问答,就继续收窄:

text 复制代码
gemma-4-12B-it

如果你明确要 MLX 4bit,可以搜:

text 复制代码
gemma-4-12B-it-4bit

如果你想找 8bit:

text 复制代码
gemma-4-12B-it-8bit

我的推荐搜索顺序是:

text 复制代码
gemma-4-12B-it
gemma-4-12B-it-4bit
gemma-4-12B-it-8bit

同时勾选 OMLX 里的:

text 复制代码
仅 MLX

7.3 看结果时按这个顺序判断

看到搜索结果后,不要先看下载量,而是按这个顺序判断:

  1. 名字里有没有 mlx-community
  2. 模型是不是 gemma-4-12B
  3. 有没有 it
  4. 后缀是不是 4bit8bit
  5. 是不是 assistant
  6. 大小是否符合预期

对这次场景来说,最理想的结果是:

text 复制代码
mlx-community/gemma-4-12B-it-4bit
mlx-community/gemma-4-12B-it-8bit

不是:

text 复制代码
mlx-community/gemma-4-12B-it-assistant-4bit
mlx-community/gemma-4-12B-bf16
google/gemma-4-12B-it
random-user/gemma-4-12B-xxx

7.4 命令行下载方式

如果你不用 OMLX 控制台,也可以用 huggingface-cli 下载到 OMLX 模型目录。

先创建目录:

bash 复制代码
mkdir -p ~/.omlx/models

下载 M4 16GB 推荐版:

bash 复制代码
huggingface-cli download mlx-community/gemma-4-12B-it-4bit \
  --local-dir ~/.omlx/models/mlx-community/gemma-4-12B-it-4bit

下载 M1 Pro 32GB 推荐版:

bash 复制代码
huggingface-cli download mlx-community/gemma-4-12B-it-8bit \
  --local-dir ~/.omlx/models/mlx-community/gemma-4-12B-it-8bit

OMLX 的 README 里提到,--model-dir 可以指向包含 MLX 格式模型子目录的目录,并且支持两级组织目录。所以保留 mlx-community/模型名 这种结构是可以的。

如果 Hugging Face 访问慢,可以在启动 OMLX 时指定镜像:

bash 复制代码
omlx serve --model-dir ~/.omlx/models --hf-endpoint https://hf-mirror.com

8、一套通用选型规则

这套规则不只适用于 Gemma 4 12B,也适用于你以后在 OMLX 里下载 Qwen、Llama、DeepSeek、GLM 等模型。

8.1 先看用途:聊天就选 it

如果你要做的是:

  • 聊天;
  • 写代码;
  • 总结;
  • 翻译;
  • Agent;
  • RAG 问答;
  • 多轮任务规划;

优先找:

text 复制代码
*-it-*

不带 it 的 base 模型,不是不能用,而是不适合作为普通助手。

8.2 再看机器:16GB 先 4bit,32GB 可 8bit

一个简单规则:

统一内存 推荐
16GB 4bit
24GB 4bit 或 6bit,谨慎 8bit
32GB 8bit 优先,4bit 稳妥
64GB+ 可尝试更大模型、更高精度、更长上下文

这不是绝对规则,但对本地模型新手很实用。

8.3 再看上下文:长上下文比模型本体更容易吃爆内存

很多人只关心模型大小,却忽略上下文。

本地推理里,KV Cache 会随着上下文长度增长。你把上下文从 4K 开到 32K,内存压力可能完全不是一个级别。

所以 M4 16GB 跑 12B 4bit 时,建议先用:

text 复制代码
4K-8K context

M1 Pro 32GB 跑 12B 8bit 时,可以逐步试:

text 复制代码
8K -> 16K -> 32K

如果一开长上下文就卡、变慢、OOM,先别怀疑模型坏了,先把上下文降下来。

8.4 最后看新格式:mxfp / nvfp 先当实验项

mxfp4mxfp8nvfp4 这些格式值得关注,但不要让它们变成你第一次跑模型的变量。

我的顺序是:

  1. 先下普通 4bit8bit
  2. 确认 OMLX 能加载;
  3. 确认对话、代码、图片输入正常;
  4. 再测试 mxfp4mxfp8nvfp4
  5. 对比速度、内存、回答质量。

这样排错成本最低。

9、结合这次真实选择,再做一次判断

关于oMLX当中搜索到的gemma-4模型,可以分为三组。

9.1 第一组:主模型高精度和中高精度

text 复制代码
mlx-community/gemma-4-12B-bf16
mlx-community/gemma-4-12B-it-bf16
mlx-community/gemma-4-12B-it-8bit
mlx-community/gemma-4-12B-8bit
mlx-community/gemma-4-12B-it-mxfp8
mlx-community/gemma-4-12B-mxfp8

这里面真正适合日常助手的是:

text 复制代码
mlx-community/gemma-4-12B-it-8bit

bf16 太大,不适合这两台机器做日常常驻;不带 it 的版本不是聊天优先;mxfp8 可以作为第二轮测试。

9.2 第二组:主模型低位量化

text 复制代码
mlx-community/gemma-4-12B-it-6bit
mlx-community/gemma-4-12B-6bit
mlx-community/gemma-4-12B-it-5bit
mlx-community/gemma-4-12B-5bit
mlx-community/gemma-4-12B-it-nvfp4
mlx-community/gemma-4-12B-nvfp4
mlx-community/gemma-4-12B-it-4bit
mlx-community/gemma-4-12B-it-mxfp4
mlx-community/gemma-4-12B-4bit
mlx-community/gemma-4-12B-mxfp4

这里面最应该优先下载的是:

text 复制代码
mlx-community/gemma-4-12B-it-4bit

它同时满足三个条件:

  • MLX 格式;
  • 指令微调版;
  • 4bit 低内存量化。

对 M4 16GB 来说,它就是第一选择。

9.3 第三组:assistant 辅助模型

text 复制代码
mlx-community/gemma-4-12B-it-assistant-bf16
mlx-community/gemma-4-12B-it-assistant-8bit
mlx-community/gemma-4-12B-it-assistant-mxfp8
mlx-community/gemma-4-12B-it-assistant-6bit
mlx-community/gemma-4-12B-it-assistant-5bit
mlx-community/gemma-4-12B-it-assistant-nvfp4
mlx-community/gemma-4-12B-it-assistant-4bit
mlx-community/gemma-4-12B-it-assistant-mxfp4

这组先不要下载。它们不是主模型。

如果后续 OMLX 明确支持 Gemma 4 12B 的 MTP / speculative decoding 配置,你可以考虑:

text 复制代码
主模型:mlx-community/gemma-4-12B-it-4bit
辅助:mlx-community/gemma-4-12B-it-assistant-4bit

或者:

text 复制代码
主模型:mlx-community/gemma-4-12B-it-8bit
辅助:mlx-community/gemma-4-12B-it-assistant-8bit

但它不是第一步。

10、常见坑

10.1 下载了 assistant,发现不能聊天

这是正常的,因为 assistant 是 MTP drafter,不是主模型。

正确做法:

text 复制代码
先下载 gemma-4-12B-it-4bit 或 gemma-4-12B-it-8bit

10.2 下载了不带 it 的版本,觉得不好用

不带 it 的 base 模型更偏预训练模型。它不一定会像助手一样遵循你的指令。

正确做法:

text 复制代码
日常聊天和 Agent 工作流,优先带 it。

10.3 16GB 机器下载了 8bit,加载后卡住

这不一定是 OMLX 的问题,而是内存太紧。

解决顺序:

  1. it-4bit
  2. 降低上下文长度;
  3. 关闭占内存的应用;
  4. 不要同时加载多个模型;
  5. 暂时不要启用多模态长输入。

10.4 看到 26B 下载量高,就以为是今天新模型

26B-A4B 是 Gemma 4 家族里的重要模型,但它不是这次新增的 12B。

如果目标是体验最新发布的 Gemma 4 12B,就不要被 26B 热门排序带偏。

10.5 mxfp4 / nvfp4 加载异常

先换普通:

text 复制代码
it-4bit

或:

text 复制代码
it-8bit

新式格式值得测试,但不适合当排错起点。

10.6 下载成功但加载失败:gemma4_unified not supported

这次我真实遇到的最大坑,不是模型下错了,而是模型太新,OMLX 内置依赖还没跟上

具体表现是,模型已经出现在 OMLX 的"可用模型"列表里,也能看到大小和状态,但一点加载就报错:

text 复制代码
VLM load failed: Model type gemma4_unified not supported.
Error: No module named 'mlx_vlm.speculative.drafters.gemma4_unified'
LLM fallback also failed: Model type gemma4_unified not supported.

这类错误的关键词是:

text 复制代码
gemma4_unified not supported
No module named mlx_vlm.models.gemma4_unified
No module named mlx_vlm.speculative.drafters.gemma4_unified

根因是:Gemma 4 12B Unified 是新架构,Hugging Face 上的模型 config.json 里写的是 model_type: gemma4_unified;但当时 OMLX 0.4.0 / 0.4.1 内置的 mlx-vlm 0.5.0 还没有这个加载器。

所以这个问题不是:

  • 不是模型文件坏了;
  • 不是 4bit 量化错了;
  • 不是 OMLX 搜索结果假了;
  • 也不是 Apple Silicon 不支持。

它只是一个很典型的"新模型发布太快,前端/后端依赖还没同步"的问题。

正确排查顺序是:

  1. 先升级 OMLX 官方包;
  2. 再验证 OMLX 内置 mlx-vlm 是否支持 gemma4_unified
  3. 如果官方包还没跟上,再临时手动升级内置 mlx-vlm
  4. 等 OMLX 官方后续版本合并后,再回到纯官方升级路径。

一行验证命令如下:

bash 复制代码
OMLX_PREFIX="$(brew --prefix jundot/omlx/omlx 2>/dev/null || brew --prefix omlx)"; PY="$OMLX_PREFIX/libexec/bin/python"; "$PY" -c 'import sys, numpy, mlx_vlm; import importlib.metadata as md; import mlx_vlm.models.gemma4_unified; print("python:", sys.executable); print("mlx_vlm import:", getattr(mlx_vlm, "__version__", "unknown")); print("mlx_vlm metadata:", md.version("mlx-vlm")); print("numpy:", numpy.__version__); print("gemma4_unified: OK")'

如果成功,应该看到:

text 复制代码
mlx_vlm import: 0.6.1
mlx_vlm metadata: 0.6.1
numpy: 2.3.5
gemma4_unified: OK

如果失败,可以临时这样修:

bash 复制代码
OMLX_PREFIX="$(brew --prefix jundot/omlx/omlx 2>/dev/null || brew --prefix omlx)"; PY="$OMLX_PREFIX/libexec/bin/python"; brew services stop jundot/omlx/omlx || brew services stop omlx
bash 复制代码
"$PY" -m pip install --ignore-installed --no-deps --force-reinstall mlx-vlm==0.6.1
bash 复制代码
find "$OMLX_PREFIX/libexec/lib" -path '*site-packages/mlx_vlm-0.5.0.dist-info' -exec mv {} /tmp/mlx_vlm-0.5.0.dist-info.omlx-backup \; 2>/dev/null || true
bash 复制代码
"$PY" -m pip install 'numpy==2.3.5'
bash 复制代码
"$PY" -m pip check
bash 复制代码
brew services start jundot/omlx/omlx || brew services start omlx

这里有两个细节要注意。

第一,brew service restart omlx 是错的,Homebrew 命令是复数:

bash 复制代码
brew services restart omlx

第二,pip install 的输出有时会被旧的 .dist-info 元数据误导。例如它明明安装了 0.6.1,却显示 Successfully installed mlx-vlm-0.5.0。这时不要只看 pip 最后一行,要用上面的 Python 验证命令看真实 import 版本。

如果验证结果是:

text 复制代码
mlx_vlm import: 0.6.1
mlx_vlm metadata: 0.6.1
gemma4_unified: OK
No broken requirements found

就说明修好了。之后再加载:

text 复制代码
gemma-4-12B-it-4bit

11、我的最终选择

结合这两台机器,我会这样下载:

机器 第一选择 第二选择 暂不下载
M4 / 16GB mlx-community/gemma-4-12B-it-4bit it-mxfp4 可测试 bf168bitassistant
M1 Pro / 32GB mlx-community/gemma-4-12B-it-8bit it-4bit bf16、单独 assistant

如果只想下一个模型,在两台机器之间同步使用,我会选:

text 复制代码
mlx-community/gemma-4-12B-it-4bit

如果 M1 Pro 32GB 是主力本地推理机器,我会额外下载:

text 复制代码
mlx-community/gemma-4-12B-it-8bit

最后再用一句话总结:

text 复制代码
OMLX 选模型,看四件事:MLX 来源、12B 本体、it 指令版、4bit/8bit 量化。

12、后续升级策略

最后说一下后续升级:长期看,正常跟着 OMLX 官方升级就好。

这次手动升级 mlx-vlm,本质上是一个"新模型首发期"的临时补丁。Gemma 4 12B Unified 刚发布时,Hugging Face 模型已经出来了,但 OMLX Homebrew 包里固定的 mlx-vlm 版本还没包含 gemma4_unified 加载器,所以只能临时覆盖内置依赖。

但这不应该成为日常维护方式。

日常升级优先用:

bash 复制代码
brew update && brew upgrade jundot/omlx/omlx

或:

bash 复制代码
brew update && brew upgrade omlx

升级后重启服务:

bash 复制代码
brew services restart jundot/omlx/omlx || brew services restart omlx

然后做一次版本验证:

bash 复制代码
OMLX_PREFIX="$(brew --prefix jundot/omlx/omlx 2>/dev/null || brew --prefix omlx)"; PY="$OMLX_PREFIX/libexec/bin/python"; "$PY" -c 'import mlx_vlm; import importlib.metadata as md; import mlx_vlm.models.gemma4_unified; print(getattr(mlx_vlm, "__version__", "unknown")); print(md.version("mlx-vlm")); print("gemma4_unified: OK")'

这里有一个关键区别:

升级方式 适合场景 风险
brew upgrade omlx 日常稳定使用 最稳,依赖由 OMLX 官方锁定
手动 pip install mlx-vlm==0.6.1 新模型刚发、官方包暂未跟上 可能被下次 Homebrew 升级覆盖
brew reinstall omlx 想回到纯官方环境 会清掉手动覆盖的依赖
brew install --HEAD 想追最新代码 适合折腾,不适合稳定生产

所以我的建议是:

  1. 平时只跟官方 Homebrew 升级
  2. 遇到新模型架构不支持,再临时升级内置依赖
  3. 每次 OMLX 官方升级后都验证一次 gemma4_unified 是否还在
  4. 等官方包内置新 mlx-vlm 后,不再需要手动补丁

如果后续你执行 brew upgrade 后,Gemma 4 12B 又报 gemma4_unified not supported,不要慌,说明 Homebrew 升级把手动补丁覆盖回官方依赖了。重新跑第 10.6 节那几条命令即可。

如果某个新版 OMLX 已经内置 mlx-vlm >= 0.6.1,那就不需要手动处理了,保持官方路径最干净。

13、参考资料

|--------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------|
| 🚀 持续探索 AI 与前沿技术 分享大模型应用、软件开发实战与行业洞察。 欢迎关注 【龙哥AI】,加入 7000+ 技术同行的交流圈! 🌟 探索技术边界,让开发更有效率 | |

相关推荐
霍格沃兹测试开发学社测试人社区6 小时前
源码解读:我如何设计一个“可插拔”的测试Skills引擎,支持热加载与隔离执行
人工智能
-山中问答-6 小时前
【AI智能体工程化实战03】智能体工程化开发环境
人工智能·开发环境·智能体·trae·claude code
寻道码路6 小时前
LangChain4j Java AI 应用开发实战(十四):手写 RAG 全流程 - 深入理解每个环节
java·开发语言·人工智能·ai
ar01236 小时前
工业智能化时代的AR巡检力量
人工智能·ar
云烟成雨TD6 小时前
Agent Scope Java 2.x 系列【1】核心架构
java·人工智能·agent
Xiaofeng36936 小时前
三大旗舰模型横评:Claude 4.6、ChatGPT 5.5、Gemini 2.0 Pro 谁更强
人工智能
benben0446 小时前
Gym从入门到精通
人工智能
Zaimmm6 小时前
ChatGPT医疗智能体能做文献检索和指南比对吗?
人工智能·chatgpt
qq_382949226 小时前
企业级机器学习落地实战(含源码与课件)
人工智能·机器学习