Esta página é uma tradução da documentação em inglês. Comandos, identificadores e exemplos permanecem iguais. Runtime 7.24.5 · SDK 2.6.9. Original em inglês
Medições nativas de prefill e decode do Tiel Coder
Status: Instantâneo local histórico Última revisão: 2026-09-21 Responsável: mantenedores do AX Code Data: 2026-09-19 Escopo: os dois pacotes Tiel selecionados pelo AX Code, AX Engine versus MTPLX, Apple M3 Max 128 GiB
Substituído para classificação. A campanha de API nativa em quatro máquinas de 20 de setembro de 2026 é a comparação atual entre Tiel e MTPLX, incluindo a conclusão no M5 Max de 194.88 tok/s para o pacote padrão e o pico de decode do Cyber-Tiel de 249.01 tok/s. Veja resumo de pares Tiel. Mantenha esta página como o instantâneo de fases do M3 Max de 19 de setembro (engine identificado como 7.4.0; mediana de três). Não misture as tabelas.
Estes resultados mantêm a linha de base original do perfil agentic. A comparação de perfis MTP do Tiel seguinte mede o perfil auto agora selecionado pelo AX Code, incluindo os compromissos que dependem da carga de trabalho.
Os novos pacotes Tiel rodaram com MTP ativo nos dois runtimes testados. A compilação a partir do código-fonte do AX Engine chegou a 47.36–58.53 tokens/s de decode nos quatro casos; o MTPLX chegou a 92.13–96.26. O prefill ficou em cerca de 1,190–1,446 tokens/s. São medições nativas de fase de inferência em um Apple M3 Max com 128 GiB, e não a vazão de programação de ponta a ponta do AX Code ou do OpenCode.
Requisito de compilação: o AX Engine 7.4.0 instalado pelo Homebrew não conseguiu iniciar o Tiel com Engine(MlxMtpRequiredButUnavailable). Os resultados do AX Engine abaixo usam uma compilação local otimizada do commit 51137c71a6794964d52c32c95e275c0923ed8d0b, que acrescenta a correção do carregador de namespace MTP do Tiel. Essa compilação ainda se identifica como 7.4.0. Os resultados dela não estabelecem suporte no binário Homebrew existente nem em um lançamento publicado. O MTP permaneceu obrigatório; nenhuma execução de contingência com MTP desativado está incluída.
Resultados
Cada valor é a mediana de três tentativas. Todas as tentativas geraram exatamente 256 tokens e relataram zero tokens de entrada em cache. Prefill e decode usam tokens por segundo.
| Modelo | Tokens de entrada | Prefill do AX Engine | Decode do AX Engine | Prefill do MTPLX | Decode do MTPLX |
|---|---|---|---|---|---|
| Tiel Coder, curto | 458 | 1,255.61 | 57.03 | 1,207.01 | 92.27 |
| Tiel Coder, contexto | 3,182 | 1,424.24 | 55.25 | 1,279.48 | 96.26 |
| Cyber-Tiel Coder, curto | 483 | 1,226.86 | 58.53 | 1,189.60 | 95.09 |
| Cyber-Tiel Coder, contexto | 3,207 | 1,446.19 | 47.36 | 1,427.62 | 92.13 |
A diferença de decode existe em pedidos diretos ao runtime com entradas correspondentes, antes do laço de agente do AX Code. Esta comparação local localiza, portanto, uma diferença no nível do runtime; ela não identifica um único kernel ou uma única política como causa. O prefill fica bem mais próximo entre estas configurações. Nenhum controle com MTP desativado foi executado, então isto não é uma medição de aceleração do MTP.
Entradas higienizadas, todos os 24 recibos de tentativa, contadores de fase, revisões de modelo e resultados de aceitação do cliente acompanham este relatório.
Artefatos exatos e ambiente
| Modelo | Repositório Hugging Face | Revisão |
|---|---|---|
| Tiel Coder, padrão do AX Code | pacote Tiel Coder no Hugging Face | 5ab39b24bfd7f65203be9b7823b1840486f58b6d |
| Cyber-Tiel Coder | pacote Cyber-Tiel Coder no Hugging Face | fe05e871ec69ad9ae8eac01fd285555514ac7daf |
- Código-fonte do AX Code:
205cb556b; a seleção usamlxe os pesos MXFP4 do publicador. - Máquina: Apple M3 Max, 137,438,953,472 bytes de memória; macOS 27.0, compilação
26A428. - AX Engine: compilação em perfil de lançamento de
51137c71a6794964d52c32c95e275c0923ed8d0b, MLX 0.32.2. SHA-256 do servidor:1fbe7fc50ea16448f98350616273214c0475bffb3ef509fceb3f8849163e97f5. - MTPLX: 2.11.3, MLX 0.32.2, ambiente Python 3.12.
- Os dois runtimes leem o mesmo instantâneo compartilhado do Hugging Face de cada modelo. O download do modelo, a carga dos pesos e a inicialização do servidor ficam fora dos tempos de fase.
Os pacotes são requantizações de desenvolvimento. Estes testes não certificam qualidade do modelo, paridade numérica, comportamento de contexto longo, outro hardware nem desempenho de um lançamento futuro. Eles não substituem a matriz histórica de cliente real do Qwen3.8, que usou modelos diferentes e mediu outro limite.
Método de medição
O prompt pede um cache LRU genérico em TypeScript e testes, precedido por 8 ou 96 funções TypeScript sintéticas. As mensagens ficam armazenadas no recibo JSON. O tokenizador fixado de cada modelo renderiza o template de chat oficial com enable_thinking=false e add_generation_prompt=true. Os tokens inteiros resultantes são enviados sem alteração aos dois backends. A saída /tokenize do AX Engine também foi conferida contra esses IDs. O template do Cyber-Tiel acrescenta texto de identidade, o que explica os 25 tokens adicionais; as entradas entre backends coincidem dentro de cada modelo.
Os pedidos usam temperature 0.55, top-p 1, top-k 0, seed 0 e um limite de 256 tokens. Cada backend recebe um aquecimento explícito de 64 tokens antes das tentativas medidas. O MTPLX também faz o aquecimento normal de inicialização e de segundo plano. Um aquecimento não conta como tentativa. A ordem de execução foi MTPLX/Tiel, AX Engine/Tiel, MTPLX/Cyber-Tiel, AX Engine/Cyber-Tiel. Apenas um backend de inferência ficava ativo por vez; a compilação terminou antes do início das tentativas medidas. Esta amostra pequena em ordem fixa não é um estudo de resistência nem um estudo térmico contrabalançado.
O AX Engine usa /v1/generate nativo com input_tokens e max_output_tokens. O MTPLX usa /v1/completions em fluxo com um prompt em array de inteiros, seguido de /metrics. Isso evita diferenças na montagem do prompt no cliente e na renderização do template de chat entre os dois servidores. A saída limitada é uma carga de vazão, não um teste de correção de código completo.
| Medição | AX Engine | MTPLX |
|---|---|---|
| Duração do prefill | ax_mlx_prefill_wall_us / 1e6 |
prompt_eval_time_s |
| Taxa de prefill | Tokens de entrada sem cache / duração do prefill | prefill_compute_tok_s, auditado contra new_prefill_tokens / prompt_eval_time_s |
| Duração do decode | ax_mlx_decode_wall_us / 1e6 |
decode_elapsed_s |
| Taxa de decode | (output_tokens - 1) / decode duration; a primeira saída pertence ao prefill |
decode_tok_s, auditado contra completion_tokens / decode_elapsed_s |
| Evidência de cache | Cache de prefixo desativado com AX_MLX_PREFIX_CACHE_MAX_ENTRIES=0; zero tokens reutilizados |
Cache de sessão em SSD desligado; zero tokens em cache em cada conclusão |
| Evidência de MTP | Política obrigatória, drafter de modelo ativo, tokens aceitos positivos, zero passos de contingência direta relatados | generation_mode=mtp, profundidade 3, contadores positivos de rascunho e de aceitação |
Os contadores nativos de decode têm limites ligeiramente diferentes para o primeiro token; eles aparecem com as fórmulas reais, em vez de serem rebatizados como temporizadores idênticos. Nenhuma das taxas divide a saída pela duração total do pedido HTTP. O TTFT nativo do MTPLX permanece no JSON; a sonda sem streaming do AX Engine não mede o TTFT de transporte.
Configuração do runtime
O AX Engine usou o perfil genérico de especulação agentic, um contexto de 32,768 tokens, um orçamento anunciado de saída de 8,192 tokens, largura de agendador 2,048 e um pedido concorrente. As substituições de ambiente do AX Code específicas do Qwen3.8 denso não foram aplicadas. A profundidade MTP admitida foi 3; os gates normais de rascunho do engine permaneceram ativos.
Argumentos de lançamento equivalentes, com SNAPSHOT definido para o instantâneo fixado adequado e MODEL para o alias dele no 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
O MTPLX usou uma configuração isolada vazia. Os manifestos de modelo do AX Engine foram preparados com o downloader fixado e somente local; os pesos do modelo e os tensores MTP do publicador foram mantidos. Nenhuma das configurações desativou o MTP para obter um resultado.
Aceitação de ferramentas do AX Code
Uma execução separada a partir do código-fonte do AX Code pediu a cada modelo que lesse probe.txt com a ferramenta de leitura e devolvesse apenas o conteúdo. Estado e configuração ficaram isolados. O AX Engine usou anexação explícita em loopback ao servidor de código-fonte testado. Estas execuções ficam fora da tabela de fases nativas.
| Modelo | Runtime | Leitura concluída | Marcador correto na resposta final | Formato somente de saída exato |
|---|---|---|---|---|
| Tiel | código-fonte do AX Engine | Sim | Sim | Não; acrescentou prosa e uma cerca de código |
| Tiel | MTPLX | Sim | Sim | Sim |
| Cyber-Tiel | código-fonte do AX Engine | Sim | Sim | Não; acrescentou prosa e uma cerca de código |
| Cyber-Tiel | MTPLX | Sim | Sim | Sim |
Os quatro processos cliente saíram com sucesso e concluíram uma chamada real de leitura. As duas execuções do AX Engine falharam no requisito mais estrito de formato de saída, então isto não é uma certificação totalmente verde de comportamento ou de qualidade de código. Os prompts, as cargas de ferramenta, a amostragem padrão e o tratamento de chat são caminhos de cliente e de runtime, distintos do benchmark de fase com tokens correspondentes. Nenhum comportamento de nuvem, CLI, GPU privada ou AX Trust foi ajustado para estes testes.
Uma invocação administrada separada de providers ax-engine start omitiu o argumento de modelo e selecionou tiel-coder-35b-axq-mxfp4 na revisão fixada com mlx. O status ao vivo relatou suporte a ferramentas, política MTP required/required, MTP ativo, 27 tokens rascunhados e 23 tokens aceitos. O servidor administrado foi então interrompido com sucesso. Isso usou estado isolado do AX Code e a substituição AX_ENGINE_SERVER=/absolute/path/to/fixed/ax-engine-server do auxiliar existente; o binário instalado e a configuração de provedor do usuário não foram substituídos. A mesma substituição pode ser definida ao iniciar pnpm run dev com uma compilação que contenha a correção do carregador.
A mudança de catálogo passou em 11,374 testes determinísticos, com 17 ignorados, mais 208 testes de SDK, 259 testes de script (94 ignorados), verificação de tipos recursiva, verificações de estrutura do repositório e verificações da TUI. Veja seleção de modelo e requisitos de runtime antes de usar o novo padrão.