一台 13 年前的 iPad Air 和一台标准的小米电视盒子现在可以以每秒 2.6 到 5.1 个 token 的速度运行 16B 参数的混合专家(MoE)模型。这是通过 'smolmaxxing' 项目实现的,该项目针对低功耗设备的特定硬件瓶颈——即有限的 RAM、缓慢的闪存存储和基础的 CPU 指令——进行了优化,从而解锁了此前认为在这些硬件上无法实现的性能。

由 llama-server 在小米电视盒子上提供的实时 token 流页面截图。
在小米电视盒子硬件上运行的实时 token 流界面。github.com

此截图展示了电视盒子硬件上模型输出的实际用户界面。

小米电视盒子和 iPad Air 上不同模型大小生成速度的对比图。
两个目标低功耗设备上不同模型大小类别的生成速度对比。github.com

此图展示了不同模型大小的性能增益,特别突出了 16B MoE 模型在两个设备上的表现。

克服计算和内存限制

为了在像小米电视盒子 S 这样配备 Amlogic S7D 芯片且仅有 1.9 GB RAM 的设备上运行模型,该项目实施了几项专注于计算的创新。这些创新包括用于 vdotq_laneq 指令的 Q2_K 和三元重打包、1-bit 位平面,以及一个可在基础 NEON 指令上运行且无需 dotprod 支持的专用 1-bit 查找表内核。

内存限制通过“无头”模式和剪枝的 LM 头来解决,这些操作可以为每个模型释放 0.2 到 0.5 GB 的 RAM。这些优化允许系统保持更大的可用内存池,这对于将模型保留在 RAM 中而非不断交换到磁盘至关重要。

“你身边的每台设备都比看起来更强大。”

— GitHub - hyperionaidev/smolmaxxing: maxxing the ability to run different LLMs on the smallest devices possible

权重流式传输与专家分页

对于比设备物理 RAM 更大的模型,smolmaxxing 利用带有 O_DIRECT 的权重流式传输引擎和“专家分页器”。该机制根据需求从闪存中分页非专家权重,并预取后续层以最小化延迟。这对于混合专家(MoE)模型特别有效,因为这些模型在任何给定时间只需要激活一小部分总权重。

在 2013 年的 iPad Air 上,这种方法允许 16B MoE 模型以每秒 2.6-4.5 个 token 的速度运行。系统使用缓存感知路由和衰减频率剔除策略,以确保最常使用的专家保持可访问状态,从而减轻闪存 278 MB/s 速度限制的影响。

显示 iPad Air 上模型性能和 token 速度的计分板。
在第一代 iPad Air 上运行的模型性能指标,包括 token 速度和延迟。github.com

此计分板提供了 iPad Air 性能的具体数据点,包括 16B MoE 模型的速度。

性能权衡与瓶颈

该项目表明,对于超过 2B 参数的模型,主要瓶颈从 CPU 计算转向闪存速度。模型的生成速度严格受限于设备从闪存流式传输权重的能力;例如,在电视盒子上运行的 9B 模型仅达到每秒 0.27 个 token,因为它受到严重的闪存带宽限制。

在速度和输出质量之间存在可衡量的权衡。在 iPad Air 上,增加 Moon-Beam-8B-A1B 模型的专家数量可以将生成速度提升到每秒 5.0 个 token,但这会导致困惑度增加 27%,这意味着模型的回答变得不再连贯。

显示 iPad Air 上不同模型生成速度与困惑度之间权衡的图表。
模型输出质量(困惑度)与生成速度之间权衡的可视化表示。github.com

此图说明了最后一段提到的关于增加活跃专家所产生的特定权衡。

Hacker News 读者的反应

  • 亲身经验: 一位评论者分享了他们成功在内存小于 1GB 的第一代 iPad Air 和小米电视盒子上运行 16B 模型的心得。 评论 ↗
  • 亲身经验: 另一位用户指出,类似的努力已经成功在带有 GPU 加速的 Nintendo Wii 上运行模型。 评论 ↗
  • 替代方案: 几位评论者建议在旧款旗舰移动设备、第一代 Raspberry Pi 或 ESP32 设备上测试该项目。 评论 ↗

以上为 Hacker News 讨论中观点的摘要,并非经过核实的事实。 阅读完整讨论 ↗