一江山水的随笔

当前位置:首页 - 技术 - 正文

Enjoy life!

先说结论:Mac跑AI,确实有独门绝技

如果你手头有台Mac(尤其是M1/M2/M3系列),你可能会好奇它能不能跑AI模型。答案是:能,而且某些场景下比NVIDIA显卡还爽。但别高兴太早,生态差距依然明显。这篇文章我直接上手测了几个模型,把真实体验和坑都抖出来。

一、Metal GPU加速:打破显存墙

统一内存架构是什么鬼?

传统NVIDIA显卡,显存和系统内存是分开的。比如你显卡只有8GB显存,那模型+数据超过8GB就爆了,哪怕你系统有64GB内存也救不了。但Mac的M系列芯片用的是统一内存架构,CPU和GPU共享同一块物理内存。这意味着什么?你Mac有16GB内存,那GPU就能用16GB(实际要分一点给系统,但比8GB显存宽裕多了)。

实测:跑Llama 3 8B Q4量化模型

我用llama.cpp配合Metal后端,在M1 Pro 16GB上跑了Llama 3 8B的Q4_K_M量化版本。显存占用约6GB,速度大概15 token/s。如果换成NVIDIA RTX 3060 12GB,速度能到30 token/s,但显存占用7GB左右。不过!如果你模型更大,比如Llama 3 70B Q4量化需要35GB显存,RTX 3060直接跪,但Mac Studio 128GB版本可以轻松跑——这就是统一内存的优势,显存墙不存在了。

怎么开启Metal加速?

llama.cpp为例,编译时加-DLLAMA_METAL=ON,运行时加-ngl 1(或更大值)即可。示例命令:

git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make LLAMA_METAL=ON -j
./main -m model.gguf -p "Hello" -ngl 1

注意:-ngl参数控制多少层卸载到GPU,Mac上建议-ngl 1(全部),但如果你内存不够,可以调小。

二、Neural Engine:低功耗AI加速器

Apple从A11开始塞了个Neural Engine(ANE),专门处理神经网络任务。在Mac上,ANE主要用于CoreML推理,比如照片识别、语音转文字。ANE的功耗极低,跑一个轻量模型可能只有几瓦,而GPU跑同样的任务可能要十几瓦。但ANE的缺点也很明显:只支持CoreML格式,而且模型大小有限制(一般不超过1GB)。所以ANE适合跑小模型,比如实时语音识别、图像分类,不适合跑大语言模型。

三、CoreML生态:从Transformers.swift到GGUF

CoreML是什么?

CoreML是Apple的机器学习框架,类似TensorFlow Lite。你可以把训练好的模型(PyTorch、TensorFlow等)转换成CoreML格式,然后部署到Mac/iOS上。转换工具叫coremltools,支持量化、剪枝等优化。

Transformers.swift:Swift界的HuggingFace

HuggingFace出了个transformers.swift库,让你在Swift里直接调用CoreML模型。举个例子,加载一个BERT模型做情感分析:

import Transformers

let model = try await AutoModelForSequenceClassification.from(pretrained: "bert-base-uncased")
let tokenizer = AutoTokenizer.from(pretrained: "bert-base-uncased")
let inputs = tokenizer("I love Mac!")
let outputs = try await model(inputs)
print(outputs.logits)

这代码跑在Mac上,会自动使用ANE或GPU加速。但注意:模型需要预先转换成CoreML格式,HuggingFace上有些模型已经提供,但不多。

GGUF模型支持:通过llama.cpp + Metal

如果你喜欢玩GGUF(llama.cpp的量化格式),Mac上直接用llama.cpp配合Metal就行。社区已经有很多GGUF模型,比如TheBloke的版本,下载下来直接跑。性能方面,M2 Ultra跑Llama 3 70B Q4能到5 token/s,虽然不快,但能跑。

四、与NVIDIA CUDA生态的差距:现实很骨感

说了这么多优势,但Mac在AI领域的生态跟NVIDIA比,差距还是很大的:

  • 训练支持差:PyTorch的MPS后端虽然能用,但bug多,很多算子不支持。训练大模型基本不可能,还是得用CUDA。
  • 模型转换麻烦:很多HuggingFace模型没有CoreML版本,你得自己转,而且转换过程中可能遇到算子不支持的问题。
  • 社区资源少:NVIDIA有CUDA、cuDNN、TensorRT,还有海量教程。Mac这边,除了Apple官方文档,社区贡献有限。
  • 性能上限低:M2 Ultra的GPU性能大概相当于RTX 3060级别,而且没有张量核心,跑大模型推理速度不如同价位N卡。

五、总结:Mac适合哪些AI场景?

  • 本地推理大模型:如果你需要跑70B以上的大模型,Mac的统一内存是唯一选择。NVIDIA消费级显卡显存最大也就24GB(RTX 4090),而Mac可以到128GB甚至192GB。
  • 轻量级AI应用开发:用CoreML和Transformers.swift开发iOS/macOS应用,体验流畅。
  • 不适合:训练模型、跑需要CUDA的库(比如Stable Diffusion WebUI的某些插件)、追求极致推理速度。

总之,Mac在AI推理上有独特优势,但别指望它能替代NVIDIA显卡。如果你只是本地跑跑大模型、做点小应用,Mac很香;如果你要炼丹,还是乖乖买N卡吧。

本文来源:一江山水的随笔

本文地址:https://298.name/post/191.html

主要内容:Mac跑AI的隐藏优势:Metal GPU加速与CoreML生态现状

版权声明:如无特别注明,转载请注明本文地址!

想找什么搜索会更快哦!
站点信息
  • 文章总数:171
  • 页面总数:1
  • 分类总数:4
  • 标签总数:170
  • 评论总数:61
  • 浏览总数:1643341
控制面板
您好,欢迎到访网站!
  查看权限
Top