Core ML Snake 发布基准
ANE FP16 演示在三个不设上限的 600 步回合中持续达到 49.1–50.0 次新鲜决策/秒,零死亡。 其合并吞吐量为 49.66/秒。每一步包含三个顺序的模型问题、规划器工作和 truecolor 终端序列化。这是完整的活动游戏循环,不是那个单独的单问题约 5 ms 微基准。
对于限速运行,请求 20 次决策/秒是通过活动计算截止时间准则的最高被测设置。观察到的墙钟速率为 18.39–18.42/秒,其中包含真实的 sleep 和调度开销。这一结果不能证明有一个计时完美的 20 FPS 显示。README 的录制为可读性使用请求 12 次决策/秒,在其真实终端中观察到 11.39/秒。
环境与方法
- Apple M3 Max,40 核 GPU,128 GiB,macOS 27.2,Python 3.12.13。
- 在全新环境中安装
laya-coreml==0.1.0wheel;Core ML Tools 9.0、NumPy 2.1.3、Rich 15.0.0;未安装 Torch、MLX 或 Transformers。 - 公开的 ANE FP16 包,版本
39d6a9b3d0f67f06da74fbade6121ea134cbdb21,在执行前下载。 - B1/L96/K32,每个游戏决策三个顺序问题,紧凑 prompt,24×16 棋盘,六个初始蛇格。排除二十次预热决策。
- 默认可见的循环安全层;原始 top-1 也单独测量。
- 计时包含同步的
predict、游戏特征、Rich 合成、truecolor ANSI 序列化和游戏更新。加载、预热和终端模拟器绘制不计入。限速运行包含真实的sleep调用。
通过要求输出有限、零死亡、保持循环顺序和食物推进,并且在每个限速回合中最多 1% 的活动 tick 超出请求的时间预算。不受限模式在每步等待一次新鲜预测,没有固定截止时间。没有其他模型基准同时运行。
运行时、checkpoint、包哈希、prompt 哈希和逐 tick 的测量记录在 coreml-snake.json。
不受限的稳定性
| 种子 | 步数 | 观察到的决策/秒 | 分数 / 最终长度 | 死亡 | 安全干预 |
|---|---|---|---|---|---|
| 101 | 600 | 49.10 | 20 / 26 | 0 | 1 |
| 102 | 600 | 49.89 | 24 / 30 | 0 | 0 |
| 103 | 600 | 49.99 | 23 / 29 | 0 | 1 |
在这 1,800 次决策中,三问题 API 延迟为 P50 16.32 ms / P95 21.33 ms。完整的活动 tick 延迟为 P50 19.07 ms / P95 25.96 ms。这是在显式辅助下的有边界存活证据,不是声称模型可以在没有安全层的情况下无限期游玩。
限速扫描与确认
每次扫描都使用种子 7,跑 120 步。失败的速率被保留:
| 请求的决策/秒 | 观察到的决策/秒 | 活动截止时间错失 | 结果 |
|---|---|---|---|
| 20 | 18.55 | 0.83% | 通过;下方已确认 |
| 30 | 28.67 | 10.83% | 失败 |
| 40 | 37.22 | 37.50% | 失败 |
| 50 | 44.21 | 53.33% | 失败 |
| 60 | 50.68 | 100.00% | 失败 |
在 20/秒设置下的更长时间确认:
| 种子 | 步数 | 观察到的决策/秒 | 活动截止时间错失 | 分数 | 结果 |
|---|---|---|---|---|---|
| 101 | 600 | 18.39 | 4 / 600, 0.67% | 20 | 通过 |
| 102 | 600 | 18.42 | 4 / 600, 0.67% | 24 | 通过 |
| 103 | 600 | 18.42 | 3 / 600, 0.50% | 23 | 通过 |
在这些限速回合中,三问题 API 的 P50 约为 26.3 ms,而不受限回合中为 16.3 ms。该实验确立了依赖限速的差异,但没有分离出原因。调度和设备电源状态转换是可能的解释,需要单独剖析;本报告并未证明它们。因此,持续吞吐量的结果不得被宣传为固定帧截止时间的保证。
原始 top-1 与可分享的录制
在禁用安全覆盖的情况下,种子 101/102/103 各自完成 200 步,得分 7/6/7,零死亡。模型仍然收到相同的确切规划器特征,所以这些运行并未测试从未处理的棋盘出发的推理。它们也不能证明长局存活。
在所有基准模式中,共有 4,920 次决策、零死亡和四次安全干预。另外,真实终端展示在 75.034 秒内记录了 855 次决策,最终分数 26、长度 32、零死亡和零干预。其原始时间戳、状态和动作由精确的确定性回放来测试。GIF、MP4 和来源见 LAUNCH.md。
复现
pip install 'laya-coreml[demo]==0.1.0'
hf download aac6fef/laya-multilingual-coreml-ane \
--revision 39d6a9b3d0f67f06da74fbade6121ea134cbdb21 \
--local-dir models/ane
laya-coreml-snake benchmark --model ./models/ane \
--rates 20,30,40,50,60 --sweep-steps 120 --soak-steps 600 \
--seeds 101,102,103 --raw-steps 200 --output snake-benchmark.json
要以观察到的无约束速率游玩,请使用 laya-coreml-snake --model ./models/ane --max-speed。实际的终端绘制可能使速率低于序列化基准。单独的 Snake GPU 包会批处理全部三个问题;本发布报告只测量 ANE FP16 包。历史的配对模型比较仍留在 ANE_BENCHMARKS.md 和 BENCHMARKS.md。