WWDC 2024的更新虽谈不上惊艳,也没有带来颠覆性的叙事反转。但有趣的是,AI这张牌打出来后,让仍在服役的iPhone 7到iPhone 14用户纷纷产生了换机冲动——市值上涨也就顺理成章了。当然,技术圈更关注的是背后的技术细节,比如边缘推理具体如何实现,用户隐私又怎样得到保障。这个问题的关键性不言而喻:你看Musk对Apple的边缘推理和Private Cloud Compute本身并没有提出反对,他真正反对的是OAI在OS层面调用API。换个角度来看,Apple其实已经搭建好了一个LLM OS的雏形。
那么,我们不妨深入探索一下Apple边缘推理的具体实现。五六年前因为GDPR等合规需求,我在Cisco也做过一套类似的边缘推理框架,后面会穿插一些个人的经验与建议,尤其是云端推理如何用好公有云、端侧模型个性化怎么落地等问题。文末还留了个小彩蛋。
1. Apple 边缘推理框架
1.1 端侧模型
从《OpenELM: An Efficient Language Model Family with Open Training and Inference Framework》[1]这篇论文来看,这基本上是一个很标准的LLM:Pre-Norm、RoPE、SwiGLU、GQA、FlashAttention一应俱全。唯一的创新点在于Layer-wise Scaling:
这种缩放方式看似巧妙,但实际上会导致压缩更明显。可以参考“Transformer need glasses”的观点——较浅层的layer态射能力偏弱,计算过程中产生的数值误差会在后级被放大。
另一个值得关注的模型是面向UI的多模态模型《Ferret-UI: Grounded Mobile UI Understanding with Multimodal LLMs》[2],它让大模型理解屏幕上UI组件的布局以及对应的用户操作顺序。
Ferret-UI基于Ferret[3],而Ferret本身擅长理解图像内任意形状和粒度的细粒度空间关系,并能准确建立开放词汇的描述。很有可能iPad新版本的计算器应用也用了这个模型。
Ferret-UI的做法是把UI操作序列用低分辨率图像做快速推理,最终生成按键相关的行为。
例如查找Widget、Icon、List等元素。
这意味着原来大家用起来不太顺手的「捷径(Shortcuts)」应用,现在通过多模态大模型就能自动处理了——这恰恰是新版Siri的核心能力。
1.2 服务器模型
从Apple最近发布的《Introducing Apple’s On-Device and Server Foundation Models》[4]来看,端侧模型词表是49K,服务器端是100K。文章强调了全链路隐私和模型安全问题。
框架方面,Apple用的是基于JAX/XLA的自研框架,推测是为了适配各种算力以及自家的服务器芯片。预训练阶段常见的DP、TP、SP、FSDP等优化手段都有涉及,这里就不展开了。后面的对齐任务也只是简要提及。
1.3 模型优化
优化主要针对推理,采用了混合2-bit/4-bit量化以及LoRA策略。比较有趣的是他们开发了延迟和功耗评估分析工具Talaria[5]。
从基准任务来看,端侧表现还算不错?
但Server模型就差一些了——这也难怪Apple需要找OAI来补位。
1.4 个性化FineTune
这是整个方案里很有意思的一个功能。
围绕日常用户行为,Apple构建了一个小型神经网络,可以进行微调。
通过仅微调适配器层,基础预训练模型的原始参数保持不变,保留模型的一般知识,同时定制适配器层以支持特定任务。
2. 端侧推理优化
端侧推理优化的核心依据来自论文《LLM in a flash: Efficient Large Language Model Inference with Limited Memory》[6]。
2.1 Flash & DRAM
端侧统一内存架构如下:
Flash容量大但带宽低,片上GPU与CPU之间的互联带宽也不算高,DRAM大小只有10GB左右。这意味着模型无法全部加载到内存中,同时还要考虑功耗问题。
2.2 减少数据传输量
首先,将Attention和Embedding的参数常驻内存中——这就是Selective Persistence Strategy。MLP层则借鉴了《Deja Vu: Contextual Sparsity for Efficient LLMs at Inference Time》[7]的思路,通过稀疏性预测进行剪枝。
另外还采用了滑动窗口方法。
2.3 提高传输吞吐量
在存储Layout上做优化以提高读取吞吐。
同时辅以主动的内存管理策略。
3. 模型安全和私有云计算(PCC)
3.1 硬件架构和运行环境
PCC采用了Apple自研芯片,结合训练用的JAX/XLA框架来看,应该是整个训推一体到端侧完全统一了软件栈。与iPhone一样,支持Secure Encla ve和Secure Boot等安全技术,并且针对大模型推理工作对操作系统做了增强。
3.2 数据安全
采用完全无状态的计算模式——当然,不要因为“无状态”就联想到Serverless容器之类的东西,本质上就是数据处理完就删除。Apple还详细阐述了如何安全运营云端:如何避免特权访问、如何规避各类日志、如何防止用户数据泄露等。每个生产PCC版本的二进制映像都会公开发布,并且会定期发布安全关键的PCC源代码子集,同时还配套了相应的安全赏金计划。
4. 未来展望
虽然模型本身和相应的功能谈不上惊艳,但Apple这套端云协同的方案非常值得学习。特别是针对每个用户习惯构建的、可微调的小型Adapter神经网络,这是一个很有前景的方向。
这也呼应了之前那篇《谈谈大模型的可解释性》里的一个思路:要维持主模型数据通路上不修改参数,FineTune需要在旁路上进行。当时我设想的方案是通过SAE的特征强化来适配用户偏好,而Apple的做法在一些操作任务上略有不同——比如如何让大模型记住一个“捷径”,同时让终端用户无需复杂配置。这类FineTune要和Ferret-UI结合起来,还是有不少技术活儿要干的。大致能想到的一种算法是:对用户行为时间序列进行拟合,通过旁路的神经网络修改反馈给主网络的Attention。
另一个值得思考的问题是:Apple这套系统要在国内运营,前期有些传闻说会用某家国产大模型。但针对PCC,Apple在国内是否能够部署相应的服务器?
再换个角度,安卓生态又该如何应对?这可能是国内一众手机厂商正在全力追赶的赛道。公有云应该可以承接一部分针对每个客户的端侧模型FineTune需求,以及更大规模Server端模型的推理需求。
最后留个视频,听听TTS的声音吧。
