Получить AX Code · БесплатноДокументация

Эта страница переведена с английской документации. Команды, идентификаторы и примеры не изменены. Среда выполнения 7.24.5 · SDK 2.6.9. Английский оригинал

Измерения локального вывода: 19 сентября 2026

Статус: активно

Область: измеренный диагностический снимок

Последняя проверка: 2026-09-19

Владелец: среда выполнения ax-code

Полную матрицу клиента из шести сочетаний после исправления локального префикса см. в новой повторной проверке AX Code/OpenCode. Скорости клиентов ниже остаются историческими наблюдениями при их исходных условиях.

Эти измерения исследуют задержку локального ответа и скорость декодирования на одном Apple M3 Max с 128 ГиБ объединённой памяти. Это не квалификация оборудования, не оценка качества модели и не обещание 30–40 токенов/с при произвольной длине контекста. Инструкции подключения MTPLX и oMLX — в руководстве по локальной среде выполнения.

Условия и время

  • Исходники AX Code на базе v7.19.3; OpenCode 1.18.31; AX Engine 7.4.0; MTPLX 2.11.3; oMLX 0.6.4 (1d7826185c5b5b69b38b27cbe57d7597b7551fd7, изолированная установка из исходников).
  • Один бэкенд вывода за раз. Управление вентиляторами по умолчанию; заявления о максимальных оборотах нет. Файлы моделей лежали на хранилище SMB. Запуск точного артефакта MTPLX поместил на SSD только sidecar MTP, с проверенным SHA-256.
  • Повторы точного артефакта использовали AutomatosX/AX-Qwen3.8-27B-MLX-AXQ-6bit-MTP, ревизия 4d36d652c21590f6813495351c3baf5fca5b3831. Отдельные клиентские запуски MTPLX Optimized-Speed использовали Youssofal/Qwen3.8-27B-MTPLX-Optimized-Speed. Это разные пакеты моделей, хотя их общие размеры файлов близки; их скорости не изолируют ускорение только среды выполнения.
  • Общие параметры повтора: temperature 0.55, top-p 1, top-k 0, seed 0, до 256 порождённых токенов. AX Engine и MTPLX использовали активную глубину MTP 3. Ядра среды выполнения и спекулятивные сэмплеры различаются. Метаданные артефакта объявляют глубину 1; глубина 3 здесь — явный эксперимент среды выполнения, а не расширение сертификации артефакта и не новая рекомендация по умолчанию. AX Engine игнорировал EOS для своего нативного повтора с фиксированным выводом; MTPLX и oMLX следуют своим правилам остановки.
  • Нативная скорость декодирования использует счётчики декодирования бэкенда. Доставленная скорость — (reported completion tokens - 1) / (last output payload time - first output payload time); пустые события и keepalive не считаются выводом. Эти границы не совпадают.
  • Задержка первой полезной нагрузки включает подготовку запроса на сервере, восстановление кэша и предзаполнение и любую буферизацию до вывода. Все токены, делённые на весь запрос, — другая мера пропускной способности. Всплески вызовов инструментов не годятся для оценок декодирования от первой до последней полезной нагрузки.

Например, тот же повтор MTPLX со входом 30 тыс. измерил 13.99 нативных токенов декодирования/с, но только 1.13 токена/с на весь запрос, потому что холодное предзаполнение заняло около 209 секунд. Низкое число на весь запрос само по себе не устанавливает сбой движка декодирования.

Повтор AX Engine и MTPLX на точных весах

Каждая пара получила одну и ту же целочисленную последовательность входных токенов и выдала 256 токенов. Значения ниже — одиночные наблюдения; личности порождённых токенов могут различаться при общем seed.

Вход Нативное декодирование AX Engine Нативное декодирование MTPLX Кэшированный вход AX Engine Кэшированный вход MTPLX
62 токена 39.12 t/s 39.48 t/s не сообщено 0
18,643 токена 17.49 t/s 20.93 t/s 0 0
30,019 токенов 16.06 t/s 13.99 t/s 29,696 0

MTPLX использовал для этого артефакта профиль Sustained. Запрос AX Engine на 30 тыс. был тёплым, а MTPLX холодным, поэтому их времена первого токена не устанавливают отношение скорости предзаполнения. Вход 30 тыс. включает историческую инструкцию о пределе шагов и порождает диагностическую прозу; это не приёмка задачи кодирования. Повтор MTPLX на 18 643 токена сообщил stop после 256 токенов, а не length.

Короткий запрос показывает близкие скорости декодирования. Эти запуски не показывают, что какой-либо бэкенд универсально быстрее или что переключение AX Code на другой бэкенд гарантирует фиксированное ускорение.

AX Code и OpenCode на MTPLX Optimized-Speed

Оба клиента получили одну задачу пользователя, полные инструкции проекта и четыре разрешённые схемы инструментов. Задача просила кэш LRU на TypeScript без выполнения инструментов. Запросы, специфичные для клиента, сохранены; записывающий прокси выровнял выборку, отключил рассуждение и использовал потолок запроса и сервера в 1024 токена. Следующие ответы завершились нормально:

Клиент Токены входа Токены выхода Доставленная скорость Первая полезная нагрузка Кэшированный вход
AX Code 36,808 277 23.92 t/s 280.05 с 2,048
OpenCode, первый 18,703 228 26.82 t/s 122.54 с 0
OpenCode, повтор 18,703 228 30.01 t/s 0.018 с 18,703

Эти измерения предшествуют исправлению локального префикса AX Code (42908b46a). AX Code послал больше контекста и породил другой код. Это не сравнение накладных расходов клиента при равных токенах и не результат «до и после». Удаление только автоматически просканированной карты каталогов в отдельном повторе снизило вход до 30 717, но улучшило наблюдаемое декодирование лишь примерно на 2%; удаление карты каталогов не принято.

Отдельная матрица адаптера AX Engine наблюдала AX Code на 9.44–11.56 доставленных t/s при 33 225 входных токенах и OpenCode на 12.82–13.00 при 17 290. Длины запросов, содержимое вывода, состояние кэша и потолок вывода в 256 токенов отличаются от таблицы полных ответов выше; не соединяйте это в одно отношение ускорения бэкенда.

oMLX

Тест oMLX использует точный артефакт AXQ и изолированную установку с MLX 0.32.0. Все пять проверок импорта нативного ядра, включая qwen35_prefill и decode_fast, прошли. Загрузка только текста выбрана явно, окно контекста 65 536, параллелизм равен одному.

Первая попытка Lightning MTP вернула HTTP 409, потому что тест пропустил обязательный шаг oMLX Import MTP side-car. Это была ошибка настройки, а не отсутствие поддержки AXQuant. AXQuant уже предоставлял канонический контракт qwen3-next-mtp; текущая ревизия Hub b0784088d4026ca569c5653e6e6243c501ef5fa9 также включает перечень axquant_omlx_compat.json из 15 тензоров MTP. Исходный снимок повтора старше этой пометки.

База с выключенным MTP завершилась на исходном артефакте:

Токены входа Токены выхода Нативное декодирование Оценка доставки Кэшированный вход
62 256 18.97 t/s 18.90 t/s 0
18,643 256 13.02 t/s 12.97 t/s 0
30,019 256 12.15 t/s 12.10 t/s 0

Это результаты с выключенным MTP, и их нельзя сравнивать со средами с включённым MTP как свидетельство врождённой разницы скорости бэкенда. Круговые пути токенизатора и счётчики запроса сервера совпали с целочисленными входами, которые использовали другие бэкенды повтора.

Исправленный запуск MTP использует собственный импортёр oMLX на отдельной записываемой копии. Осколки основы не изменены. Импортёр добавляет language_model. к 15 именам тензоров sidecar; dtype, форма и хеш полезной нагрузки каждого тензора проверены на равенство до и после импорта. Поэтому хеш импортированного файла отличается, потому что изменился заголовок. Исходные метаданные и общий снимок модели остаются целыми. Глубина MTP 3 выбрана явно, а счётчики черновика и принятия по глубине подтверждают фактическое выполнение.

Токены входа Токены выхода Нативное декодирование MTP Оценка доставки Принятие черновика Кэшированный вход
62 256 31.12 t/s 31.02 t/s 179/195 (91.8%) 0
18,643 256 17.18 t/s 17.13 t/s 177/192 (92.2%) 0
30,019 256 15.19 t/s 15.15 t/s 170/199 (85.4%) 0

Короткий результат подтверждает, что этот пакет AXQuant работает с oMLX Lightning MTP после импорта. Декодирование длинного контекста остаётся медленнее, несмотря на активный MTP. Разный порождённый текст, версии среды выполнения, ядра и спекулятивные политики не позволяют приписать все различия между средами AX Code.

Приёмка потока кодирования и исключения

После исправления локального префикса AX Code завершил изолированную задачу только для чтения и на AX Engine, и на MTPLX: прочитать каталог и два файла TypeScript, объяснить исключение переполнения очереди, определить ёмкость 7 и вернуть маркер, доступный только во втором файле. Оба завершились успешно и сохранили байты заготовки. Последующие вызовы AX Engine переиспользовали 11 264 входных токена; MTPLX переиспользовал 11 264–12 032. Тела первых запросов были одинаковы, но шаблоны среды выполнения дали разные числа токенов. Это проверяет поток инструментов и наблюдаемое переиспользование кэша, а не фиксированное ускорение от патча.

Новые идентификаторы провайдеров тоже прошли живую приёмку из CLI исходников: omlx с импортированным пакетом AXQ и явным tool_call: true и mtplx с пакетом Optimized-Speed без настроенных записей моделей. MTPLX обнаружил свою модель чата и возможность инструментов из нативного перечня моделей. Оба запуска завершили два успешных чтения файлов и вернули ожидаемые исключение, ёмкость и маркер только из файла, не изменив байты заготовки. Начальный префикс системы и пользователя оставался одинаковым во всех трёх запросах каждого запуска. oMLX переиспользовал 8 192 токена; MTPLX переиспользовал 11 829 и 12 047 токенов. Это функциональные проверки, а не сопоставленные замеры производительности; ускорение стенного времени между средами не заявляется.

Более ранние ответы AX Code с потолком 256 токенов были усечены и вошли в восстановление; их скорости повторного вывода около 51–58 t/s исключены из заявлений о свежем порождении. Первичные запуски с неравными инструкциями проекта или разрешениями инструментов тоже исключены. Ollama и LM Studio осматривались только ради построения запроса; для них скорость порождения не заявляется.

Общий запрос на 62 токена опубликован как точный запрос завершения oMLX. Из корня рабочей копии, после импорта sidecar, включения MTP и прогрева модели, его можно послать так:

curl --no-buffer http://localhost:8000/v1/completions \
  -H 'Content-Type: application/json' \
  --data-binary @docs/data/local-inference-short-request.json

Смените идентификатор модели в запросе на идентификатор, который открывает ваш сервер. Файл включает отрисованный шаблон; используйте конечную точку completions, чтобы шаблон чата не применился второй раз. Подтвердите 62 токена запроса и сохраните итоговое событие использования. Холодную загрузку модели и прогрев нужно сообщать отдельно.

Частные инструкции проекта, запросы сессии, локальные пути и подробности аутентификации не публикуются. Очищенные данные измерений содержат счётчики, время, личность среды выполнения и хеши входа, а не текст запроса. Поэтому полный повтор частного контекста — не самостоятельная публично воспроизводимая нагрузка. Для нового сравнения используйте ту же ревизию модели, токенизатор и шаблон, идентификаторы входа, правила вывода и остановки, выборку, режим MTP, состояние кэша, оборудование и последовательное выполнение; успех полной задачи сообщайте отдельно.

Вышестоящие контракты: руководство по серверу и модели MTPLX, oMLX 0.6.4. Их опубликованные бенчмарки используют другое оборудование и другие нагрузки и не подставляются вместо измерений здесь.