文档导航

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.0 wheel;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。