MLX Error

该 MLX Error 通常出现在 macOS 上通过 Homebrew 安装的 Ollama 调用 MLX 图像生成模型时,runner 在加载 Metal GPU kernel 阶段失败。优先排查 Homebrew 侧 mlx-c 版本是否与当前 Ollama 不兼容,Issue 中多位用户确认

快速结论:该 MLX Error 通常出现在 macOS 上通过 Homebrew 安装的 Ollama 调用 MLX 图像生成模型时,runner 在加载 Metal GPU kernel 阶段失败。优先排查 Homebrew 侧 mlx-c 版本是否与当前 Ollama 不兼容,Issue 中多位用户确认将 mlx-c 从 0.5.0 降到 0.4.1 可消除报错。

适用环境:Issue 中已确认的环境包括 macOS、Apple 芯片(M5、M4 Max)、Ollama 0.15.5,以及 Homebrew 安装的 mlx-c 0.5.0 与 mlx 0.30.5。

最快修复方案:Issue 中已验证可取消 Homebrew 安装的 Ollama,改用官方 DMG 安装;另一条被多位用户验证的路径是把 mlx-c 降级或固定到 0.4.1,使 Ollama 不再加载已移除的符号。

注意事项:降级/固定 mlx-c 属于 workaround,会阻止该依赖被正常升级,操作时需自行评估风险;另有用户反馈将 Homebrew 安装的 Ollama 升级到 0.15.6 CLI 后,即使保留 mlx-c 0.5.0 问题也不再出现。若不具备 Homebrew 排查经验,优先使用官方 DMG,避免因 pin 依赖导致后续维护问题。

问题场景

用户在 macOS 上使用 Ollama 运行图像生成类模型(Issue 评论中提到的模型包括 x/flux2-klein:latest 与 x/z-image-turbo)时触发。模型可以正常加载进显存,但在真正生成图像、需要载入 Metal GPU kernel 时失败。部分用户是在通过 Homebrew 安装 Ollama 后遇到该问题,也有用户运行 ollama --version 时即出现 MLX 符号加载失败。

报错原文

MLX error: [metal::Device] Unable to load kernel affine_qmm_t_nax_bfloat16_t_gs_32_b_8_bm64_bn64_bk64_wm2_wn2_alN_true_batch_0

MLX: Failed to load symbol: mlx_metal_device_info
MLX: Failed to load symbol: mlx_metal_device_info
level=ERROR msg="unable to initialize MLX" error="failed to load MLX function symbols"
Error: failed to load MLX function symbols

failed to load model: 500 Internal Server Error: mlx runner failed:   model.norm.weight (exit: exit status 1)

原因分析

最可能的原因是 Homebrew 安装的 mlx-c 版本(0.5.0)移除了 mlx_metal_device_info(),而该版本 Ollama 在初始化 MLX 时会尝试加载 libmlxc 中的大量动态符号,即使其中大部分并未被实际使用,最终导致 InitMLX 失败。Issue 中已确认降级到 mlx-c 0.4.1 可以消除 MLX 相关错误。另一种可能性是 Homebrew 安装或升级过程中被动升级了 mlx-c 传递依赖,导致版本不匹配。也有用户反馈升级 Ollama 版本后问题不再出现,说明修复也可能来自 Ollama 侧对符号加载逻辑的调整。

环境排查

  • 确认 Ollama 版本,Issue 中报告问题出现在 0.15.5。
  • 确认 macOS 版本与 Apple 芯片型号,Issue 中为 macOS 26.2、M5 与 M4 Max。
  • 确认是否为 Homebrew 安装方式,并检查 mlx-c 版本是否为 0.5.0。
  • 确认 mlx 版本,Issue 中为 0.30.5。
  • 检查 brew info mlx-c 的输出,确认当前安装版本以及是否被 pin。
  • 确认是否有 brew upgrade 被动升级了 mlx-c 的传递依赖。

解决步骤

  1. 先确认问题是否来自 Homebrew 安装的 mlx-c 版本,执行版本检查,确认 mlx-c 为 0.5.0。
  2. 可优先尝试的方案:改用官方 DMG 安装 Ollama。Issue 中有用户通过卸载 Homebrew 版 Ollama 并重新用 DMG 安装后,MLX 错误消失,且模型存储不会被删除,无需重新下载模型。
  3. 如坚持使用 Homebrew,可将 mlx-c 降级或固定到 0.4.1。Issue 中多位用户验证该版本可修复 MLX 符号加载错误。注意该操作会阻止 mlx-c 后续升级,需在确认问题解决后按需恢复。
  4. 可优先尝试升级 Ollama 到更新版本。Issue 中有用户反馈 Homebrew 安装的 Ollama 升级到 0.15.6 CLI 后问题解决,即使 mlx-c 仍为 0.5.0;但 Issue 中也提到 0.16.x 当时尚未进入 Homebrew。
  5. 如果上述操作后仍出现 model.norm.weight 相关 runner 失败,说明可能涉及另一条独立问题路径,Issue 中已有人用 0.16.1 release 包复现该报错,需要进一步确认模型与 runner 的兼容性。

验证方法

重新运行 ollama --version,确认不再出现 MLX: Failed to load symbol: mlx_metal_device_info。随后再次加载并运行之前失败的图像生成模型,确认不再出现 MLX error: [metal::Device] Unable to load kernel 以及 MLX 初始化失败相关日志,模型能够正常生成图像。若采用降级或 pin 方案,还需检查 brew info mlx-c 确认版本已固定,并留意后续是否需要 unpin。

参考来源

ollama/ollama #14118

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 26680

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注