#4521·mlx

金属命令缓冲区限制 (50 次操作 / 50 MB) 在启动密集型模型上占用 5-8% 的解码吞吐量 (M3 Ultra 测量)

作者: freddyhaddad创建于 2026年9月16日更新于 2026年9月16日

`Device` 在执行 `max_ops_per_buffer` 次命令或当引用的不同输入缓冲区超过 `max_mb_per_buffer` (在 Ultra 级别的设备上为 50/50, `backend/metal/device.cpp`) 后,会提交一个 Metal 命令缓冲区。对于权重矩阵为每个数十 MB 的模型,字节限制大约每层触发一次,因此单个 token 的解码步骤需要 45-90 个命令缓冲区。每个边界大约需要 20 µs 的 GPU 时间以及 CPU 上的完成处理程序。