Perplexity 开源 Lily:面向 Apple Silicon 的 Rust + Metal 推理引擎
Perplexity 开源了本地推理引擎 Lily,专为 Apple Silicon 上运行 Qwen3.6-35B-A3B 而写,官方测试中预填充比 MLX-LM 快 1.23 倍,解码快 1.35 倍。
Perplexity 开源了 Lily,即 Perplexity Computer 中 Hybrid Compute 功能背后的本地推理引擎。它是单进程运行时:Rust 层负责加载权重文件并驱动生成循环,一个兼容 OpenAI 的 chat-completions 接口负责流式输出 token,模型计算则由手写的 Metal 内核完成。执行路径中既没有 PyTorch,也没有 MLX。
Lily 的适用范围被刻意做窄:只支持一个模型 Qwen3.6-35B-A3B,只面向一个硬件家族。Perplexity 认为这种收窄正是性能来源,因为模型结构、执行计划和内核选择都集中在同一个运行时里。pplx-garden 仓库已提供独立演示版,通过一个极简的 OpenAI 兼容 HTTP 接口提供贪心解码文本生成。
硬件要求与模型结构
4 比特权重文件为 19.4 GB,因此现实门槛是配备 32 GB 及以上统一内存的 Apple silicon Mac。已上线的 Hybrid Compute 产品要求 macOS 15 及以上、最低 24 GB 内存,32 GB 效果最佳。
Qwen3.6-35B-A3B 总参数 350 亿,每个 token 激活约 30 亿。路由器对 256 个专家打分并选出 8 个,另有 1 个共享专家处理所有 token。模型将 10 层使用分组查询注意力(GQA,16 个查询头、2 个 KV 头)的全注意力层与 30 层 Gated DeltaNet 混合。权重采用分组仿射 4 比特量化,每 64 个权重共享一组 bfloat16 缩放与偏置,约 70 GB 的 bfloat16 权重被压缩到 19.4 GB。
实测数据
在 Perplexity 的消融实验中,把反量化融合进分组 GEMM、逐块处理,使 512 token 提示下的端到端预填充提升 77.4%;把路由相关操作全部放进单个 GPU 命令缓冲区,又带来 89% 的提升。专家 GEMM 约占预填充时间的 90%。解码方面,GQA 打包在 32K 长度下提升 23.8%,固定块注意力布局在 128K 下提升 40.2%。
在一台 40 核、128 GB 的 M5 Max 上,batch 为 1、加载完全相同的 4 比特权重字节,与 MLX-LM 最快的直接生成路径在 256 至 128K 共十个长度上对比:Lily 平均预填充 4,156 tokens/s,对方 3,388(1.23 倍);解码 170.0 tokens/s,对方 126.4(1.35 倍)。在 192 个位置的 teacher-forced 校验中,Lily 的困惑度高出 0.04%,最高排名 token 一致率为 96.35%。
技术细节与代码仓库见 MarkTechPost 的报道。