RTX 5090 and M4 MacBook Air: Can It Game?
698 points • 4 days agoArticle Link

如果你能把一块完整的桌面级 GPU 接到 MacBook Air 上会怎样?事实证明这是可行的。作者通过 Thunderbolt eGPU 扩展坞把 NVIDIA RTX 5090 连到 M4 MacBook Air,并在 macOS 上运行的 Linux 虚拟机中使用该 GPU 。这个项目涉及大量工程挑战——包括 PCI 直通、 DMA 映射的变通方案和 x86 仿真层——但最终让这套方案在游戏和 AI 推理上都能工作。

核心问题是 macOS 在 Apple Silicon 上没有对现代 NVIDIA 或 AMD GPU 的原生驱动。解决方法是让 ARM64 的 Linux 虚拟机接管并直通通过 Thunderbolt 连接的 GPU 。为此必须把 PCI 的基地址寄存器(BAR)映射到客户机虚拟机中。最初因为 QEMU 在使用 Apple 的 Hypervisor.framework 处理内存标志时的一个 bug,导致主机内核崩溃,修复方法是从设备内存映射中去掉 HV_MEMORY_EXEC 标志。至于直接内存访问(DMA),Apple 的 IOMMU 等价物 DART 施加了严格限制:总映射内存约为 1.5GB,且最多约 64k 个单独映射。为应对这些限制,作者实现了一个名为 apple-dma-pci 的虚拟 PCI 设备,拦截 DMA 映射调用,并用聚类方案把小的分配合并到更大的 256 KB 区域,从而显著减少映射数量。

其他性能优化还包括在 Apple Silicon 上启用硬件 Total Store Ordering(TSO)以通过 FEX-Emu 加速 x86 仿真、用 kprobes 修补 NVIDIA 驱动以应对 DART 的对齐限制,以及调整 QEMU 线程的调度优先级。即便如此,分层虚拟化带来的开销仍然不可忽视。基准显示,装在原生 PCIe 插槽中的相同 RTX 5090 的游戏 PC 比 MacBook Air 的 eGPU 方案快 2–4 倍。在 720p 等低分辨率下,由于仿真开销,M4 Air 的集成 GPU 反而比 eGPU 更快,但在 4K 下 eGPU 能把原本不可玩的帧率变为流畅画面。

在 AI 推理方面的表现尤其引人注目。运行 Qwen 3.6 时,eGPU 达到每秒 155 个 token,而 M4 Air 的集成 GPU 只有每秒 22 个 token,提升约 6.5 倍。更显著的是,对于 4K token 上下文的提示处理(prefill),耗时从 17 秒降到 150 毫秒,提速约 120 倍。 RTX 5090 在并发请求下的扩展性也更好,最多 4 路并发时几乎呈线性扩展。对于像 Gemma 4 这样的密集模型,性能差距更大,eGPU 的吞吐量大约是 Apple Silicon 集成显卡的 4 倍。

尽管技术上很出色,作者也承认这仍是个发烧友级别的方案。存在的稳定性问题包括 FEX-Emu 中 Steam 崩溃、 DMA 映射碎片化需要重置 GPU 、以及分发驱动所需的特殊 Apple 授权。该方案需要自行编译定制软件并加载内核扩展。作者正在与上游 QEMU 合作合并这些补丁,并希望未来在 Apple Silicon 上对 Linux 实现原生 Thunderbolt 支持能消除许多现有限制。目前这个项目证明了:一台 22W 的笔记本也能驱动一块 600W 的 GPU,但原生 PC 仍明显更快。

180 comments • Comments Link

• 本文最重要的贡献是揭示了 Apple 在提示词处理(预填充)上的严重瓶颈:一台 M4 MacBook Air 处理 4K token 的提示词需要 17 秒,而使用 eGPU 仅需 150 毫秒,差距近 120 倍,这种差异仅在高负载时显现。

• 预填充是计算密集型操作,随着提示词长度增长而加重。尽管 Apple Silicon 因内存充足而适合本地运行模型,但这也成为 LLM 实际工作的关键瓶颈。

• 在 Apple Silicon Mac 上,通过 Linux 虚拟机实现 GPU 直通是可行的:标准的 DriverKit 已允许从用户态映射 PCIe BAR,说明限制在于 VMM 的实现,而非 macOS 的根本性障碍。

• Docker 容器无法解决 GPU 访问问题:macOS 控制着 PCI 总线,且 NVIDIA 驱动在没有 PCIe 直通的情况下无法与容器内的 GPU 通信。

• Mac Pro 不支持 NVIDIA GPU 是一次错失的机会。 LLM 带来了新的 GPU 计算需求,苹果未能抓住这一点,最终导致该产品线的停产。

• LLM 常因知识截止日期而给出过时信息,例如 ChatGPT 可能不知道 RTX 5070 Ti 或 Codex CLI;具有网页搜索功能的模型(如 Grok 、 Kagi 的研究助手)能在一定程度上缓解该问题。

• 当用户提供来源以纠正信息时,LLM 应遵从用户的直接指示,而不应仅依赖内部知识,因为用户可能掌握关于未发布产品的非公开信息。

• Apple Silicon 上的 eGPU 支持使 NVIDIA GPU 能与 Mac Mini 配合使用,从而免去为 AI 推理负载单独配备一台 PC 。

• Steam Deck 使用的是 x86 AMD APU,而非 ARM;而 Valve 即将推出的 Steam Frame 头显可能通过类似 Proton 的兼容层,在便携设备上运行基于 ARM 的 Windows 游戏。

• LLM 最适合作为研究与发现的工具,而不是绝对真理的预言者。用户应对其输出保持怀疑,但仍可利用其能力推进实际项目。