Whisper 把我的 CPU 烧到 92°C,我才发现 MacBook 里藏着三个计算引擎

用 Whisper 转录一段录音,CPU 温度飙到 92°C。

MacBook Pro 的金属外壳烫得能煎蛋,风扇却像没事一样只转了 1660 RPM。更诡异的是,电脑发出一种高频的"吱吱"声——不是风扇声,而是某种电磁啸叫。

我的第一反应是:这台 M4 Pro、24GB 内存的 MacBook Pro,跑个语音转录不至于这么费劲吧?

于是开始查。这一查,发现了很多我以前从来不知道的事。


Whisper 根本没用 GPU

打开 Whisper 的源码,答案就在第 130 行:

if device is None:
    device = "cuda" if torch.cuda.is_available() else "cpu"

逻辑很简单:有 NVIDIA CUDA 就用 GPU,没有就用 CPU。完全没有第三个分支去检查 Apple GPU

如果代码写成这样就没问题了:

if device is None:
    if torch.cuda.is_available():
        device = "cuda"
    elif torch.backends.mps.is_available():
        device = "mps"
    else:
        device = "cpu"

但 OpenAI 没有这样做。社区在 2022 年就提交了修复(GitHub PR #382),三年多了一直没合并

所以我的 M4 Pro 有一颗很强的 GPU,PyTorch 也完全支持它(torch.backends.mps.is_available() 返回 True),但 Whisper 的代码压根不问"你有没有 Apple GPU",直接走了 CPU。这就是为什么 10 个 CPU 核被跑满到 1026%、温度飙到 92°C,而 GPU 在旁边闲着。

那两个疑问也顺便解开了:

风扇为什么不转快? 这是 Apple 的设计哲学——宁可芯片热,也不让风扇吵。M4 Pro 的最高安全温度在 105°C 左右,92°C 在系统看来完全正常。Apple 的风扇曲线非常保守:优先静音,到接近 100°C 才会拉高风扇,实在压不住才降频。

那个"吱吱"声是什么? 电磁啸叫(coil whine),M4 Pro/Max MacBook Pro 的已知问题。CPU 高负载时电流急剧变化,主板上的微型电感器在高频电流下物理振动,产生人耳可闻的声音。不是故障,是物理现象。


等等,什么是 CUDA 和 MPS?

上面提到了 CUDA 和 MPS,它们是什么关系?

CUDA(Compute Unified Device Architecture)是 NVIDIA 在 2006 年推出的 GPU 通用计算框架。核心想法是:GPU 本来只用来画图形,但它有几千个小核心能并行计算,何不让它也做通用计算?CUDA 就是让开发者能用类似 C 语言的方式直接在 GPU 上跑任意计算任务。

MPS(Metal Performance Shaders)是 Apple 的对应方案。Metal 是 Apple 在 2014 年推出的 GPU 编程框架(类似 NVIDIA 的 CUDA、微软的 DirectX),MPS 是其中专门做高性能 GPU 计算的部分。PyTorch 从 1.12 版本开始通过 MPS 后端支持 Apple Silicon GPU 加速。

这里有个容易混淆的点:Metal 和 M 芯片是两回事。M 芯片(M1/M2/M3/M4)是 Apple 自研的硬件芯片,Metal 是 Apple 的 GPU 编程框架(软件层)。M 芯片之前的 Intel Mac 也用 Metal,iPad、iPhone 也用 Metal。它们是硬件和软件的关系。

简单记:MPS = Mac 上的 GPU 加速。它对标 NVIDIA CUDA——CUDA 让 PyTorch 用 N 卡加速,MPS 让 PyTorch 用 Apple GPU 加速。

这也是为什么今天 AI 和深度学习几乎离不开 NVIDIA——他们比 Apple 和 AMD 早了将近十年建立这套 GPU 通用计算生态,PyTorch、TensorFlow 等框架都是先支持 CUDA,Apple 的 MPS 是后来者。


MacBook 里有 GPU?

说实话,在查 Whisper 这个问题之前,我从来不知道 MacBook 也有 GPU。在我的认知里,GPU 就是 NVIDIA 那种插在台式机里的独立显卡。

但实际上,Apple Silicon 芯片里确实集成了 GPU,只是它不是一块独立的显卡,而是和 CPU 一起封装在同一颗芯片里。

CPU 和 GPU 的区别是什么?最直观的类比:

  • CPU = 一个数学教授。能力极强,什么复杂问题都能解,但只有一个人(少数几个核心),一次只能做一件事
  • GPU = 一间教室里的几千个小学生。每个人只会做简单加减乘除,但几千人同时算,速度惊人

AI 和深度学习的核心运算就是大量简单的矩阵乘法,不需要复杂逻辑,但需要海量并行。所以 GPU 天然适合这个任务。

CPUGPU
核心数少(M4 Pro 有 12 个)多(M4 Pro GPU 有 20 个核心,NVIDIA RTX 4090 有 16384 个 CUDA 核心)
单核能力强,能处理复杂逻辑弱,只擅长简单重复运算
擅长操作系统、应用逻辑、分支判断图形渲染、矩阵运算、AI 训练

Apple GPU 和 NVIDIA GPU 的区别

Apple GPU(M4 Pro 内置)NVIDIA GPU(如 RTX 4090)
形态集成在 SoC 芯片里,和 CPU 共享内存独立显卡,有自己的显存
显存和 CPU 共用 24GB 统一内存独立 24GB GDDR6X 显存
功耗整机约 30-50W单卡就 450W
优势能耗比极高,静音,统一内存无需数据搬运绝对算力碾压,生态成熟

藏在芯片里的第三个引擎:ANE

查完 GPU 之后,我发现 Apple Silicon 里还藏着第三个计算引擎——ANE(Apple Neural Engine,神经网络引擎)。

我的 M4 Pro 芯片里实际上有三个能做 AI 计算的硬件单元:

单元名称用途开放程度
CPU高性能 + 高效能核心通用计算,什么都能跑完全开放
GPUApple GPU(集成显卡)图形渲染 + 并行计算通过 Metal/MPS 开放
ANEApple Neural Engine专门跑神经网络推理几乎不开放

M4 Pro 的 ANE 有 16 个核心,15.8 TFLOPS 算力,而且能耗极低。Apple 自家的 FaceID、照片识别、Siri 语音识别都在用它。

但 Apple 没有公开 ANE 的编程接口。开发者只能通过 CoreML 间接使用,无法直接控制。

与其他厂商对比:

AppleNVIDIAGoogle
AI 专用加速器ANE(Neural Engine)Tensor Core(集成在 GPU 内部)TPU(独立芯片)
设计哲学独立于 GPU 的专用芯片嵌入 GPU 内部的专用计算单元数据中心级独立芯片
目标端侧推理,省电为王训练 + 推理,算力为王大规模训练,Google 自用

NVIDIA 的做法更聪明:把 AI 加速能力直接塞进 GPU 里(Tensor Core),开发者用 CUDA 就能同时用上普通核心和 Tensor Core,没有额外学习成本。

为什么 Apple 不开放 ANE?

这是社区讨论最热烈的话题之一。综合 Hacker News 和 Reddit 上的讨论:

1. 安全和隐私考量。 ANE 处理 FaceID、设备端 Siri 等隐私敏感任务。开放底层接口可能被恶意利用。

2. ANE 架构不适合通用开发。 Hacker News 上有开发者指出:“ANE is a graph execution engine — a fixed-function accelerator.“它只接受编译好的完整计算图一次性执行,不像 GPU 那样灵活,对外部开发者来说太受限了。

3. 内部团队用的是更底层的接口。 一位 Apple 员工在 HN 上透露:“In my conversations with people at Apple, they do not use CoreML. Instead, they have access to lower level libraries…CoreML is the crappy middleware they made for 3rd party devs.” Apple 内部有更强大的底层 API,外部拿到的 CoreML 只是个阉割版。

4. 商业策略。 如果开放 ANE,第三方就能让任何 Mac 变成高效 AI 推理机,这会削弱 Apple 自家 AI 服务的独特性。

5. 连 Apple 自家的 MLX 团队都拿不到 ANE 的源码。 HN 上有评论提到 MLX 项目负责人可能因此离职。这说明封闭不只是对外,对内也一样严格。

有趣的是,GitHub 上有一个逆向工程项目,通过逆向 _ANEClient / _ANECompiler 等私有 API,成功在 ANE 上训练了一个 1.09 亿参数的 Transformer 模型——这是 Apple 从未打算让外部开发者做的事。实测 M4 ANE 达到 1.78 TFLOPS 持续算力,能耗比 GPU 低得多。

Hacker News 上有人精准吐槽:

“I’m paying for a hardware accelerator that makes Siri go”——我花钱买了个 AI 加速器,结果只用来跑 Siri。


一颗芯片装下一切:SoC 架构

了解到 CPU、GPU、ANE 之后,我很好奇它们在 MacBook 内部的物理位置。于是去查了拆解图,发现一个关键认知需要纠正:

CPU、GPU、ANE 不是三个分开的芯片。它们全部集成在同一颗芯片里。

这就是 Apple Silicon 最核心的设计理念——SoC(System on a Chip,片上系统)。打开 MacBook 后盖,你找不到三个独立的部件,你只会看到一颗芯片:M4 Pro。在这一颗指甲盖大小的硅片上,蚀刻了 280 亿个晶体管:

┌─────────────────────────────────────────────────┐
│                  M4 Pro 芯片                      │
│                                                   │
│  ┌──────────┐  ┌──────────┐  ┌───────────────┐  │
│  │ CPU      │  │ Neural   │  │     GPU       │  │
│  │ 12 核    │  │ Engine   │  │    20 核      │  │
│  │(10P+2E)  │  │ 16 核    │  │              │  │
│  └──────────┘  └──────────┘  └───────────────┘  │
│                                                   │
│  ┌──────────┐  ┌──────────┐  ┌───────────────┐  │
│  │ 统一内存  │  │ Media    │  │  内存控制器   │  │
│  │ 控制器    │  │ Engine   │  │  273 GB/s     │  │
│  │          │  │ 编解码器  │  │              │  │
│  └──────────┘  └──────────┘  └───────────────┘  │
│                                                   │
│  ┌──────────────────────────────────────────┐    │
│  │         LPDDR5X 统一内存 (24GB)           │    │
│  │       封装在芯片旁边,共享访问             │    │
│  └──────────────────────────────────────────┘    │
└─────────────────────────────────────────────────┘

打开 MacBook Pro 16 寸的后盖,你实际看到的布局大致是:

┌───────────────────────────────────────────┐
│            MacBook Pro 16" 内部            │
│  (屏幕在上方,转轴在顶部)                  │
│                                           │
│  ┌─────────────────────────────────────┐  │
│  │           散热器 + 风扇 (左)         │  │
│  │    ┌─────────────┐                  │  │
│  │    │  M4 Pro     │    散热铜管       │  │
│  │    │  SoC 芯片   │  ═══════════     │  │
│  │    │ (CPU+GPU+   │         风扇 (右) │  │
│  │    │  ANE 全在   │                  │  │
│  │    │  这一颗里)  │                  │  │
│  │    └─────────────┘                  │  │
│  │         主板 (Logic Board)          │  │
│  ├─────────────────────────────────────┤  │
│  │                                     │  │
│  │          六芯电池组                  │  │
│  │        (占据下半部大面积)             │  │
│  │                                     │  │
│  └─────────────────────────────────────┘  │
│                                           │
│  左侧: MagSafe + 2×USB-C + 耳机孔        │
│  右侧: 1×USB-C + HDMI + SD卡槽           │
└───────────────────────────────────────────┘

传统 PC 的架构是这样的——CPU 和 GPU 是分开的,数据要在系统内存和显存之间来回搬运:

CPU ←→ 系统内存 ←(PCIe 总线)→ GPU ←→ 显存
         数据要在这之间来回搬运,有延迟和带宽瓶颈

Apple SoC 的架构是这样的——所有组件共享同一块内存:

┌─ CPU ──┐
├─ GPU ──┼──→ 统一内存(24GB,所有组件直接访问)
├─ ANE ──┤
└─ 其他 ─┘
         零拷贝,数据就在那里,谁都能直接用

统一内存的好处不只是"不用搬数据”

Apple 的统一内存架构(UMA,Unified Memory Architecture)的优势远不止零拷贝:

1. 内存利用率更高

传统架构下,显存和系统内存各自为政:

传统 PC:
  系统内存 16GB(给 CPU 用)
  显存     8GB(给 GPU 用,焊死在显卡上)
  → CPU 再忙也用不了那 8GB 显存,反之亦然
Apple UMA:
  统一内存 24GB(谁需要谁用)
  → GPU 吃紧时可以多占一些,CPU 空闲时自动让出
  → 不存在"显存不够但系统内存有剩余"的尴尬

这就是为什么 MacBook 24GB 内存能跑大语言模型推理——整个 24GB 都能给模型用。而 NVIDIA 显卡即使系统有 64GB 内存,模型大小也受限于显存(比如 RTX 4090 只有 24GB 显存)。

2. 物理距离极近,带宽高延迟低

内存颗粒被封装在芯片旁边(而不是插在主板上的内存插槽里),物理距离从厘米级缩短到毫米级。M4 Pro 的内存带宽是 273 GB/s,远超同级别的传统笔记本架构。

3. 功耗大幅降低

业界有个共识:在芯片设计中,搬运数据消耗的能量往往远大于计算本身。统一内存省掉了大量搬运,所以同样的计算任务,M 芯片的功耗远低于传统方案。


为什么 Apple Silicon 这么强

M1 发布时铺天盖地的"吊打 Intel"评测,当时我没太关注。这次深入了解后,发现半导体博主"老石谈芯"的分析很到位。他把 M 系列芯片的优势归纳为三个叠加因素

第一层:台积电先进工艺

“过去十年里芯片性能的提升,有超过 60% 直接或间接受益于半导体工艺的提升,而只有 17% 来自于芯片架构的升级。” — 老石谈芯

M1 出来时用的是台积电 5nm,同期 Intel 笔记本 CPU 还在 14nm。我的 M4 Pro 现在用的是台积电第二代 3nm

这里的"5 纳米"不是芯片的厚度,而是晶体管的制造工艺节点——粗略理解就是晶体管的"大小”。做个直观对比:

  • 一根头发丝的直径:约 80,000 纳米
  • Intel 14nm 工艺:约 14 纳米
  • 台积电 5nm 工艺:约 5 纳米
  • M4 Pro(第二代 3nm):约 3 纳米

晶体管越小,意味着同样面积塞更多晶体管(性能更强)、电子跑的距离更短(速度更快)、开关需要的能量更少(功耗更低)。这就是为什么 2020 年的 M1(5nm)一个风扇都不用(MacBook Air 无风扇),却能打败同期 Intel 14nm 芯片。

不过要注意:今天的"5 纳米"已经不是严格的物理尺寸了,更像一个代际标签——数字越小 = 技术越先进,但它不是任何东西的精确物理测量值。

第二层:SoC 架构 + 统一内存

把 CPU、GPU、ANE、内存控制器、视频编解码器、安全芯片全部集成在一颗芯片上,再加上统一内存——消除了传统架构中各组件之间的通信瓶颈。

第三层:软硬件垂直整合

老石认为这是最关键也是最难复制的优势

“只有苹果能将基于 ARM 架构的 CPU 真正做成牛逼的产品卖出来。前面说的 5 纳米工艺,或者芯片架构技术,其他厂商也会掌握。但只有结合软硬件、操作系统和生态做深度优化,才是苹果独有的。” — 老石谈芯

macOS 知道芯片的每个细节,可以精准调度大小核、GPU 和 ANE。编译器和框架深度优化。iOS 应用可以直接在 Mac 上跑,因为底层是同一套 ARM 指令集。

M 系列芯片不是单一技术突破,而是工艺领先 + 架构创新 + 生态整合三者叠加的结果。任何一个单拆出来都不是独有的(台积电谁都能用,SoC 手机早就在做),但三个同时做到极致的,目前只有苹果。


尾声:MacBook Neo 与 8GB 内存的挑战

研究完这些之后,恰好看到 Apple 刚发布了 MacBook Neo——一台 $599 的入门级 Mac,用的是 A18 Pro(iPhone 16 Pro 同款芯片),只有 8GB 统一内存,无法升级。

这就引出了一个现实问题:8GB 够用吗?

Apple 的应对方案之一是虚拟内存(Swap)——当物理内存不够时,把不活跃的数据临时存到 SSD 上。

用书桌做比喻:

  • 内存(RAM) = 你的书桌。桌面有限,但正在看的文件都在手边,拿起来就用
  • SSD = 桌子下面的抽屉。容量大,拿东西要弯腰开抽屉,慢几秒但还能接受
  • 机械硬盘 = 隔壁房间的书柜。得站起来走过去拿,很慢

虚拟内存就是:桌面放不下了,把暂时不看的文件塞进抽屉,需要时再拿出来。

内存 (RAM)SSD 硬盘传统机械硬盘
速度~100 GB/s~3-4 GB/s~0.1 GB/s
比喻书桌抽屉隔壁房间的柜子

Apple Silicon 的 SSD 特别快,所以这套机制体验还不错。但它有代价:频繁 swap 会加速 SSD 磨损,而且 SSD 再快也比真正的 RAM 慢 25-30 倍。加上 macOS 内置的内存压缩技术(8GB 压缩后实际可用量接近 10-12GB)和重量级 AI 任务走 Private Cloud Compute 云端处理,Apple 在尽力让 8GB 能用。

但社区反馈并不乐观。有开发者反馈 macOS Tahoe 本身就比上一代更吃内存,连 16GB 的机器都感到退步,甚至有人把它叫"Mac OS Vista"。

MacBook Neo 本质上是对标 Chromebook 的产品,适合学生和轻度用户,不是开发者的菜。


回到最初的问题

从 Whisper 把 CPU 烧到 92°C 开始,到最后理解了整个 Apple Silicon 技术栈。总结一下这趟旅程的收获:

问题答案
Whisper 为什么不用 GPU?代码只检查 CUDA,不检查 MPS
92°C 风扇为什么不加速?Apple 设计如此,105°C 才算紧急
电磁啸叫声哪来的?高负载电感振动,M4 Pro 已知现象
MacBook 里有 GPU?有,集成在 M4 Pro 芯片里
MacBook 还有什么我不知道的?还有 ANE(神经网络引擎),16 核,但 Apple 锁着不让用
统一内存强在哪?零拷贝 + 高利用率 + 低功耗 + 高带宽
M 芯片为什么强?工艺领先 + SoC 架构 + 软硬件整合,三者叠加

有些东西你每天用着,但不一定理解它。直到出了问题——比如 CPU 烧到 92°C——你才有动力去搞清楚底层到底在发生什么。

这可能就是学习最好的动机:不是"我应该知道这个",而是"我遇到了一个问题,必须搞懂它"

如果这篇文章对你有帮助,欢迎请我喝杯咖啡,支持我继续创作更多内容。

Buy me a coffee