TensorFold: точный и быстрый inference LLM на Apple Silicon

«Draft wide. Commit exact.» — слоган проекта TensorFold отражает его главную идею: скорость спекулятивного декодирования без потери детерминизма.

Что такое TensorFold и для кого он создан

TensorFold — это локальный движок для вывода LLM на Apple Silicon. Его ключевые составляющие: модельно-специфичные Metal-ядра, параллельная верификация черновиков и OpenAI-совместимый API.

Проект опубликован на GitHub пользователем ashhart под лицензией MIT в 2026 году. К концу сентября 2026 года репозиторий набрал около 328 звёзд, а коммиты появляются буквально каждые несколько часов — проект молодой, но стремительно развивается.

Целевая аудитория:

  • Разработчики и ML-инженеры, работающие на Mac с чипами M-серии
  • Команды, строящие агентные пайплайны локально
  • Те, кому критически важна детерминированность вывода (тестирование, аудит)
  • Энтузиасты, желающие выжать максимум скорости из своего железа
ℹ Требования к системе
Для работы TensorFold нужен Mac с Apple Silicon, Python 3.11 или новее и MLX версии 0.31.2 или новее. Также поддерживаются NVIDIA GPU на Linux.

Архитектура и принцип работы


graph LR
    A[Hugging Face\nчекпоинт 4-bit MLX] --> B[tensorfold pull]
    B --> C[Metal / CUDA\nядра под семейство модели]
    C --> D[MTP-голова\nчерновик токенов]
    D --> E{Верификация:\nчерновик == serial?}
    E -- Да --> F[Принять токен\n→ ускорение]
    E -- Нет --> G[Откат к серийному\nдекодированию]
    F --> H[/v1/chat/completions\nOpenAI API]
    G --> H

Пользователь называет модель на Hugging Face, выбирает контекстное окно и настройки сэмплинга — TensorFold скачивает её, загружает с Metal или CUDA ядрами, написанными специально для данного семейства моделей, и поднимает эндпоинт /v1/chat/completions.

Точное спекулятивное декодирование — главная инновация

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

Черновик принимается только тогда, когда он равен токену, который тот же движок произвёл бы серийно. Это принципиально отличает TensorFold от большинства конкурентов:

Обычное спекулятивное декодирование торгует детерминизмом ради скорости: черновые токены принимаются случайным тестом, поэтому один и тот же промпт и seed дают разный текст в зависимости от того, как прошло черновое декодирование. TensorFold этой проблемы лишён.

Ключевые возможности

1. Скорость: реальные цифры

На M5 Max TensorFold декодирует Nemotron 3.5 Lightning 30B-A3B со скоростью 188–206 токенов/сек на коротких ответах (до применения MTP-черновиков).

В версии 0.3.4, по замерам bench_openai (64-токенные ответы, мышление отключено, медиана по seed’ам), Nemotron на M5 Max показал 288/223/292/243 tok/s (code sampled / chat sampled / code greedy / chat greedy) против 173/173/179/176 для собственного сервера mlx_lm через тот же клиент.

На M5 Max 128 ГБ (Qwen3.8-27B 4-bit, greedy, 256 токенов) TensorFold 0.3.4.1 + DFlash2 показал 147 и 231 tok/s для code и prose сценариев, тогда как mlx_lm.server — лишь 31.4 и 31.5 tok/s, а llama-server с MTP draft — 50.8 и 56.0 tok/s.

💡 Производительность на NVIDIA
На DGX Spark TensorFold декодирует в 1.6–3x быстрее vLLM с MTP-черновиками (один или два Spark).

2. Поддержка бэкендов

TensorFold обслуживает текстовые модели на Apple Silicon и NVIDIA GPU через OpenAI-совместимый API.

На Linux с NVIDIA GPU tensorfold serve запускает CUDA-движок семейства (PyTorch, Triton и CUDA-ядра). При этом читаются те же MLX 4-bit чекпоинты с Hugging Face.

3. Управление памятью

MLX использует бюджет процесса, ограниченный 70% RAM и рекомендованным рабочим набором GPU, резервируя 3 ГиБ для остального процесса перед установкой лимита аллокатора MLX. Квотирование учитывает веса, рост кэша, токены ответа и рабочее пространство prefill.

Запрос, превышающий контекст или память, отклоняется с рекомендациями по подбору параметров.

4. Установка и запуск

Установка одной командой:

pip install git+https://github.com/ashhart/TensorFold.git

Запуск сервера:

tensorfold serve Vontra/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-MLX-4bit --context 65536

После этого любой OpenAI-клиент можно направить на http://127.0.0.1:8080/v1.

Обращение к API:

curl http://127.0.0.1:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model": "NVIDIA-Nemotron-3.5-Lightning-30B-A3B-MLX-4bit",
       "messages": [{"role": "user", "content": "Привет!"}]}'

5. Lane batching для всех чипов Apple Silicon

В версии TensorFold 0.3.3 lane batching стал поддерживаться на всех чипах Apple Silicon, что ранее было ограничено только M5.

Тарифы и лицензия

TensorFold распространяется под лицензией MIT и является полностью бесплатным open-source проектом.

⚠ Лицензионные нюансы
Опциональный черновой чекпоинт GLM (incoai/GLM-5.3-Flash-DFlash2) имеет условия некоммерческой лицензии, описанные в сторонних уведомлениях. Для коммерческих проектов использование этой конкретной модели-черновика невозможно, однако основной движок TensorFold остаётся MIT.

Плюсы и минусы

КритерийОценка
Скорость декодирования⭐⭐⭐⭐⭐
Детерминизм вывода⭐⭐⭐⭐⭐
Простота установки⭐⭐⭐⭐
Ширина поддержки моделей⭐⭐
Зрелость проекта⭐⭐
Документация⭐⭐⭐
✅ Плюсы❌ Минусы
Точное спекулятивное декодирование (байт-идентично serial)Поддерживает только несколько семейств моделей
Очень высокая скорость на Apple Silicon и NVIDIAТребует строго определённых форматов весов (4-bit MLX)
Бесплатный MIT open-sourceМолодой проект, возможны breaking changes
Поддержка Apple Silicon и NVIDIA GPU из коробкиНет GUI — только CLI и API
OpenAI-совместимый API — прозрачная интеграцияНебольшое сообщество, ограниченная экосистема
Умное управление памятью с admission controlНекоторые черновые модели имеют некоммерческую лицензию
Lane batching на всех чипах M-серииBenchmarks пока самоотчётные

Сравнение с альтернативами

Исследования показывают, что MLX достигает наивысшей устойчивой пропускной способности среди движков на Apple Silicon, тогда как llama.cpp высокоэффективен для лёгкого однопоточного использования. Посмотрим, как TensorFold выглядит на этом фоне:

ПараметрTensorFoldmlx_lm (mlx-lm server)Ollama
ПлатформаApple Silicon + NVIDIAApple SiliconКроссплатформенный
ЛицензияMITMITMIT
Скорость (27B, greedy)147–231 tok/s31–32 tok/s~41 tok/s (под нагрузкой)
Спекулятивное декодированиеТочное (byte-identical)НетНет
OpenAI APIДаДаДа
Поддержка моделей4 семействаШирокаяОчень широкая
GUIНетНетНет (есть Open WebUI)
Простота setupСредняяВысокаяОчень высокая
Для новичковНетДаДа
Управление моделямиРучное (HF)Ручное (HF)Встроенное (ollama pull)

MLX в целом в 2–3 раза быстрее Ollama и примерно в 1.5 раза быстрее llama.cpp — и работает только на macOS. TensorFold же берёт от MLX лучшее и добавляет поверх слой точного спекулятивного декодирования, разрыв ещё сильнее.

Ollama выигрывает по удобству для разработчиков, но поддержка моделей в TensorFold намеренно узкая: вручную написанные пакеты ядер существуют лишь для четырёх семейств моделей, а форматы GPTQ и AWQ не поддерживаются.

📝 Пример: интеграция с Python OpenAI SDK

LLM-сервер TensorFold подключается стандартным образом:

from openai import OpenAI

client = OpenAI(
    base_url="http://127.0.0.1:8080/v1",
    api_key="not-needed"
)

response = client.chat.completions.create(
    model="NVIDIA-Nemotron-3.5-Lightning-30B-A3B-MLX-4bit",
    messages=[{"role": "user", "content": "Объясни квантовую запутанность просто."}]
)
print(response.choices[0].message.content)

Вердикт

Кому подойдёт TensorFold?

✅ Рекомендуется:

  • ML-инженерам на Mac M2/M3/M4/M5, которые работают с поддерживаемыми семействами моделей (Nemotron, Qwen3, GLM)
  • Разработчикам агентных систем, где важна как скорость, так и воспроизводимость вывода
  • Командам, тестирующим LLM и требующим детерминированных результатов
  • Тем, кто хочет использовать Mac как локальный inference-сервер с OpenAI-совместимым API

❌ Не подойдёт:

  • Новичкам (лучше начать с Ollama)
  • Тем, кто работает с широким спектром моделей в разных форматах
  • Командам без чипов Apple Silicon или NVIDIA GPU (нет поддержки AMD, CPU)
  • Проектам, требующим стабильного production-ready решения прямо сейчас
💡 Итоговый совет
Если у вас Mac с чипом M2 или новее и вы работаете с Nemotron или Qwen3 — TensorFold даёт в 4–7 раз больше токенов в секунду по сравнению с mlx_lm при полностью идентичных результатах. Для специализированных задач это трудно превзойти.

Рейтинг: 7.5 / 10

КритерийБалл
Производительность10/10
Инновационность (exact speculative decoding)10/10
Простота использования6/10
Ширина поддержки моделей4/10
Зрелость и стабильность5/10
Документация6/10
Итого7.5/10

TensorFold — редкий пример проекта, который решает конкретную техническую задачу (детерминированное ускорение LLM-вывода) радикально лучше, чем существующие альтернативы. При этом он честно ограничен в области применения. Следите за его развитием: если поддержка моделей расширится, он может стать стандартом для inference на Apple Silicon.