首页 时政热点 科技头条 智能AI 安全攻防 数码硬件 开发者生态 归档 标签 关于

Apple Silicon 和 macOS VM:使用 Llama.cpp 将 LLM 推理速度提高 11–16 倍

2026-08-11 1 阅读 约7分钟阅读 frabonacci
分享:
字号:
Apple Silicon 和 macOS VM:使用 llama.cpp 将 LLM 推理速度提高 11–16 倍 由 Francesco Bonacci 和 Johnny Franks 于 2026 年 8 月 11 日发布 如果您从一开始就关注 Cua,您可能还记得它是从我们的 macOS 虚拟化堆栈 Lume 的 Show HN 发布开始的。通过 Apple Virtualization.framework 运行的 macOS 客户机使用由主机 Apple GPU 支持的虚拟 GPU。在我们库存的 Tahoe VM 中,该设备报告了保守的 Metal 功能配置文件。应用程序使用这些答案来选择内核和渲染路径,这使得 llama.cpp 运行速度慢得多的 GPU 代码。我们构建了一个小型的进程范围的兼容性层,该层可以更改一个来宾进程的选定功能答案,从而允许 llama.cpp 选择更新的 Metal 内核。这是我们将 Lume 的虚拟化基础连接到 Cua Driver 背后的本地计算机使用环境以及 Cua Cloud 和 Fleets 背后的基础设施的更广泛努力的第一个结果。我们今天将这项工作作为研究版本发布,与 Lume 和 Cua 具有相同的许可许可,因此其他人可以重现结果并帮助绘制哪些 Apple Silicon 芯片、macOS 版本和 Metal 工作负载受益。在 M1 Ultra 上,通过 llama.cpp 运行的 TinyLlama 1.1B 处理提示的速度比同一库存虚拟机中相同工作负载的速度快 11.08 倍,生成令牌的速度也快 16.36 倍。及时处理达到了裸机结果的 98%。包含源代码、构建脚本、功能探测和原始基准日志,以便您可以检查和重现结果。我们使用 Google 今年发布的 6.98 GB 型号 Gemma 4 12B QAT Q4_0 重复了该实验。同一层将提示处理提高了 7.20 倍,将令牌生成提高了 14.54 倍。解锁后的虚拟机达到裸机提示速度99.59%,裸机生成速度94.82%。然后,我们在 64 GiB 客户机中测试了 Meta 的官方 Muse Glimmer 30B Q4_K-M GGUF。通过 llama.cpp b10359,解锁的虚拟机处理 512 个令牌提示的速度比普通来宾快 7.55 倍,生成 128 个令牌的速度比普通来宾快 8.87 倍。这是纯文本的 llama.cpp 测试;它没有使用 Ollama、多模式投影仪或绘图仪。同样的能力差距也出现在其他 Virtualization.framework 前端中。 Tart 是另一个 macOS 虚拟化 CLI,它有一个开放的“macOS 来宾中没有 GPU 直通?”涉及 macOS 客户机内的图形和 LLM 性能的问题。 macOS VM 内的上限 Apple 的 Virtualization.framework 为 macOS 来宾提供了虚拟图形设备。来宾通过专门构建的 GPU 驱动程序提交 Metal 工作,Apple 的主机堆栈在物理 GPU 上执行它。这种安排就是半虚拟化,其中主机保持对硬件的控制,而来宾使用虚拟化感知设备。这与基于 QEMU 和 KVM 构建的其他虚拟化堆栈不同,后者可以使用不同的架构。在 x86 Linux 主机上,VFIO 可以通过 IOMMU 将兼容的物理 PCI 设备或硬件功能分配给 VM,从而使来宾能够直接访问该设备。这就是通常所说的 GPU 直通模型。在我们库存的 Tahoe VM 中,半虚拟化设备报告大致为 Apple 5 时代系列、32 KB 最大线程组内存以及 SIMD 组矩阵支持不可用。现代 Metal 软件使用这些答案来选择内核,因此 llama.cpp 采取了较慢的路径,即使设备可以执行较新的内核。 Apple 通过 GPU 系列和功能表记录 GPU 功能,并建议在运行时查询设备。这使得报告的能力边界变得重要:应用程序正在完全按照平台告诉它们的方式进行操作。解决方案:进程范围内的 Metal 功能垫片 我们构建了一个小型 Metal 功能垫片(插入应用程序和 API 之间的兼容层),该垫片在一个来宾进程内运行。它拦截选定的 Metal 功能查询并更改返回到该流程的答案。 Metal 应用程序使用这些答案来选择内核,因此返回测试的 Apple 系列和线程组内存值可以让 llama.cpp 选择其较新的 GPU 路径。对于我们测试的配置文件,垫片:答案支持家庭:通过 Apple family 9 (1009);并将报告的最大线程组内存从 32 KB 提高到 64 KB。这足以让测试的 llama.cpp 构建选择较新的 SIMD 组缩减、SIMD 组矩阵和 bfloat16 路径: Capability Stock guest 测试的配置文件supportsFamily:1009 false true SIMD 组矩阵关闭 SIMD 组缩减关闭 bfloat16 关闭最大线程组内存 32 KB 64 KB 测试的配置文件更改了两个报告值:Apple 系列答案和线程组内存限制。 Common、Mac、Metal 和工作集大小值在基准测试期间保持其库存设置。我们删除了原始研究钩子的私有特征配置文件钩子、时钟和定时插入、网格替换、光线跟踪覆盖、参数布局保护和管道编译回退。它的来源小到足以审计,
这篇文章对您有帮助吗?

订阅66必读

每日精选科技资讯,直达你的邮箱