本页译自英文文档。命令、标识符和示例保持原样。运行时 7.24.5 · SDK 2.6.9。 英文原文
Tiel Coder 原生预填充与解码测量
状态:历史本地快照 最近审阅:2026-09-21 负责人:AX Code 维护者 日期:2026-09-19 范围:AX Code 选定的两个 Tiel 包、AX Engine 对比 MTPLX、Apple M3 Max 128 GiB
排名已被取代。 2026 年 9 月 20 日的四机原生 API 活动是当前的 Tiel 对比 MTPLX 比较,其中包括默认包在 M5 Max 上的完成速度 194.88 tok/s,以及 Cyber-Tiel 的峰值解码 249.01 tok/s。见 Tiel 对等摘要。请把本页保留为 9 月 19 日的 M3 Max 阶段快照(引擎自报为 7.4.0;三次的中位数)。不要混用这些表。
这些结果保留原始的 agentic 配置档基线。随后的 Tiel MTP 配置档比较 测量 AX Code 现在选定的 auto 配置档,包括其随工作负载变化的权衡。
新的 Tiel 包在两个被测运行时上都以活动 MTP 运行。AX Engine 的源码构建在四个用例上达到 47.36–58.53 解码 token/秒;MTPLX 达到 92.13–96.26。预填充大约为 1,190–1,446 token/秒。这些是 Apple M3 Max、128 GiB 上的原生推理阶段测量,不是 AX Code 或 OpenCode 的端到端编码吞吐。
构建要求: 已安装的 Homebrew AX Engine 7.4.0 无法以 Engine(MlxMtpRequiredButUnavailable) 启动 Tiel。下方 AX Engine 结果使用提交 51137c71a6794964d52c32c95e275c0923ed8d0b 的优化本地构建,其中加入了 Tiel MTP 命名空间加载器修复。该构建仍自报为 7.4.0。其结果并不能证明现有 Homebrew 二进制文件或已发布版本提供支持。MTP 仍然必需;不包含禁用 MTP 的回退运行。
结果
每个值都是三次试验的中位数。所有试验恰好生成 256 个 token,并报告缓存输入 token 为零。预填充和解码都使用每秒 token 数。
| 模型 | 输入 token | AX Engine 预填充 | AX Engine 解码 | MTPLX 预填充 | MTPLX 解码 |
|---|---|---|---|---|---|
| Tiel Coder,短 | 458 | 1,255.61 | 57.03 | 1,207.01 | 92.27 |
| Tiel Coder,上下文 | 3,182 | 1,424.24 | 55.25 | 1,279.48 | 96.26 |
| Cyber-Tiel Coder,短 | 483 | 1,226.86 | 58.53 | 1,189.60 | 95.09 |
| Cyber-Tiel Coder,上下文 | 3,207 | 1,446.19 | 47.36 | 1,427.62 | 92.13 |
解码差异存在于 AX Code 智能体循环之前、输入匹配的直接运行时请求中。因此这次本地比较定位的是运行时层面的差异;它并不把某个单一内核或策略指认为原因。这些配置之间的预填充要接近得多。没有运行禁用 MTP 的对照,因此这不是对 MTP 加速的测量。
本报告附有 已清理的输入、全部 24 份试验回执、阶段计数器、模型修订以及客户端接受结果。
精确产物与环境
| 模型 | Hugging Face 仓库 | 修订 |
|---|---|---|
| Tiel Coder(AX Code 默认) | 仓库 AutomatosX/AX-Tiel-Coder-35B-A3B-MLX-AXQ-MXFP4-MTP | 5ab39b24bfd7f65203be9b7823b1840486f58b6d |
| Cyber-Tiel Coder 变体 | 仓库 AutomatosX/AX-Cyber-Tiel-Coder-35B-A3B-MLX-AXQ-MXFP4-MTP | fe05e871ec69ad9ae8eac01fd285555514ac7daf |
- AX Code 源码:
205cb556b;选择使用mlx以及发布者的 MXFP4 权重。 - 主机:Apple M3 Max,137,438,953,472 字节内存;macOS 27.0,构建
26A428。 - AX Engine:
51137c71a6794964d52c32c95e275c0923ed8d0b的 release 配置档构建,MLX 0.32.2。服务器 SHA-256:1fbe7fc50ea16448f98350616273214c0475bffb3ef509fceb3f8849163e97f5。 - MTPLX:2.11.3,MLX 0.32.2,Python 3.12 环境。
- 两个运行时读取每个模型相同的共享 Hugging Face 快照。模型下载、权重加载和服务器启动不计入阶段计时。
这些包是开发用重新量化。这些测试不认证模型质量、数值一致性、长上下文行为、其他硬件或未来发行版的性能。它们不能替代历史上的 Qwen3.8 真实客户端矩阵,后者使用了不同模型并测量了不同边界。
测量方法
提示要求一个通用的 TypeScript LRU 缓存和测试,前面有 8 或 96 个合成的 TypeScript 函数。消息保存在 JSON 回执中。每个模型的固定分词器使用 enable_thinking=false 和 add_generation_prompt=true 渲染其官方聊天模板。得到的整数 token 原样发送给两个后端。AX Engine 的 /tokenize 输出也对照这些 ID 做了检查。Cyber-Tiel 的模板增加了身份文本,因此多出 25 个 token;同一模型内跨后端的输入是匹配的。
请求使用 temperature 0.55、top-p 1、top-k 0、seed 0,以及 256 token 上限。每个后端在被测试验之前会收到一次显式的 64 token 预热。MTPLX 还会执行其正常的启动/后台预热。预热不算试验。运行顺序为 MTPLX/Tiel、AX Engine/Tiel、MTPLX/Cyber-Tiel、AX Engine/Cyber-Tiel。同一时间只有一个推理后端处于活动状态;编译在被测试验开始前完成。这一小样本固定顺序并不是耐力测试或平衡的热研究。
AX Engine 使用原生 /v1/generate,并带 input_tokens 和 max_output_tokens。MTPLX 使用流式 /v1/completions,带整数数组 prompt,随后是 /metrics。这样避免两个服务器之间客户端提示组装和聊天模板渲染的差异。有上限的输出是吞吐工作负载,不是完整代码正确性测试。
| 测量 | AX Engine | MTPLX |
|---|---|---|
| 预填充时长 | ax_mlx_prefill_wall_us / 1e6 |
prompt_eval_time_s |
| 预填充速率 | 未缓存输入 token / 预填充时长 | prefill_compute_tok_s,对照 new_prefill_tokens / prompt_eval_time_s 审计 |
| 解码时长 | ax_mlx_decode_wall_us / 1e6 |
decode_elapsed_s |
| 解码速率 | (output_tokens - 1) / decode duration;首个输出属于预填充 |
decode_tok_s,对照 completion_tokens / decode_elapsed_s 审计 |
| 缓存证据 | 用 AX_MLX_PREFIX_CACHE_MAX_ENTRIES=0 禁用前缀缓存;复用 token 为零 |
SSD 会话缓存关闭;每次完成的缓存 token 为零 |
| MTP 证据 | 必需策略、活动模型起草器、正的已接受 token、报告的直接回退步数为零 | generation_mode=mtp,深度 3,正的起草与接受计数 |
原生解码计数器的首 token 边界略有不同;它们按其实际公式报告,而不是改标成相同的计时器。两种速率都不用总 HTTP 请求时长去除输出。MTPLX 的原生 TTFT 保留在 JSON 中;AX Engine 的非流式探测不测量传输 TTFT。
运行时配置
AX Engine 使用通用的 agentic 推测配置档、32,768 token 上下文、对外公布的 8,192 token 输出预算、调度器宽度 2,048,以及一个并发请求。没有应用密集的、特定于 Qwen3.8 的 AX Code 环境覆盖。其获准的 MTP 深度为 3;引擎的正常起草门控保持活动。
等价的启动参数,其中 SNAPSHOT 设为相应的固定快照,MODEL 设为其 AX Code 别名:
AX_MLX_PREFIX_CACHE_MAX_ENTRIES=0 /path/to/fixed/ax-engine-server \
--host 127.0.0.1 --port 18439 --model-id "$MODEL" \
--mlx --mlx-model-artifacts-dir "$SNAPSHOT" \
--mlx-mtp-policy required --speculation-profile agentic \
--mlx-mtp-disable-ngram-stacking --max-concurrent-requests 1 \
--max-batch-tokens 2048 --max-output-tokens 8192 \
--block-size-tokens 16 --total-blocks 2048
mtplx serve --model "$SNAPSHOT" --model-id "$MODEL" \
--host 127.0.0.1 --port 18442 --no-auth --agent-rewrites off \
--max-tokens 8192 --context-window 32768 --reasoning off \
--no-stats-footer --ssd-session-cache off --warmup-tokens 64 \
--strict-warmup --fan-mode default --generation-mode mtp --load-mtp --depth 3
MTPLX 使用空的隔离配置。AX Engine 模型清单由其固定的、仅本地的下载器准备;发布者的模型权重和 MTP 张量予以保留。两种配置都没有为了得到结果而禁用 MTP。
AX Code 工具接受情况
另一次 AX Code 源码运行要求每个模型用 read 工具读取 probe.txt 并只返回其内容。状态和配置是隔离的。AX Engine 使用显式环回连接到被测源码服务器。这些运行不计入原生阶段表。
| 模型 | 运行时 | 完成读取 | 最终答案中的正确标记 | 严格的仅输出格式 |
|---|---|---|---|---|
| Tiel | AX Engine 源码 | 是 | 是 | 否;附加了正文和一个代码围栏 |
| Tiel | MTPLX | 是 | 是 | 是 |
| Cyber-Tiel | AX Engine 源码 | 是 | 是 | 否;附加了正文和一个代码围栏 |
| Cyber-Tiel | MTPLX | 是 | 是 | 是 |
四个客户端进程都成功退出并完成了一次真实的 read 调用。两次 AX Engine 运行未满足更严格的输出格式要求,因此这不是全绿的行为或编码质量认证。它们的提示、工具载荷、默认采样和聊天处理属于客户端/运行时路径,不同于 token 匹配的阶段基准。这些测试没有调整云端、CLI、私有 GPU 或 AX Trust 的行为。
另一次受管的 providers ax-engine start 调用省略了模型参数,并选择了 tiel-coder-35b-axq-mxfp4,位于固定修订,带有 mlx。其实时状态报告了工具支持、required/required 的 MTP 策略、活动 MTP、27 个起草 token 和 23 个已接受 token。受管服务器随后成功停止。这使用了隔离的 AX Code 状态以及现有辅助程序的 AX_ENGINE_SERVER=/absolute/path/to/fixed/ax-engine-server 覆盖;没有替换用户已安装的二进制文件和提供方配置。启动包含加载器修复的构建时,可以对 pnpm run dev 设置相同的覆盖。
目录变更通过了 11,374 项确定性测试,跳过 17 项,外加 208 项 SDK 测试、259 项脚本测试(跳过 94 项)、递归类型检查、仓库结构检查和 TUI 检查。使用新默认值之前,见 模型选择与运行时要求。