Об этом проекте

TensorFold — это локальный сервер инференса, который предоставляет языковые модели через HTTP API, совместимый с OpenAI. Он поддерживает два бэкенда: Apple Silicon через MLX и GPU NVIDIA через CUDA. Каждое поддерживаемое семейство моделей поставляется с собственными ядрами и логикой проверки драфта, а не полагается на единый универсальный путь. Установка выполняется из Git-репозитория с помощью pip, а CLI предоставляет команды `serve`, `pull`, `models`, `info` и `update`. Типичный запуск — `tensorfold serve <checkpoint>`, после чего клиенты обращаются к `http://127.0.0.1:8080/v1` и используют идентификатор модели, указанный в `/v1/models`. Поддерживаются chat completions, completions и Responses API. Требуется Python 3.11+, а на macOS — MLX 0.32.2+. В README приведена таблица поддерживаемых семейств моделей и чекпоинтов, включая Nemotron 3.5 Lightning, Qwen3.8-27B, Qwen3.8 Flash Next, GLM-5.3-Flash, Gemma 4 26B-A4B, DeepSeek-V4-Flash и Ternary Bonsai 2 27B, с указанием того, какой бэкенд и метод драфтинга используется для каждого. Поддержка квантизации различается по семействам: Qwen3.8-27B читает MLX affine-чекпоинты от 2 до 8 бит, включая смешанные форматы слоёв; Flash Next требует веса 4 бита/group-32; Nemotron CUDA требует 4 бита/group-64 плюс MTP-голову; GLM читает 4 бита/group-64 и смешанно-битные преобразования. Некоторые пути CUDA принимают преобразования NVFP4 или EXL3, помеченные как экспериментальные. Центральное проектное утверждение — точное декодирование: спекулятивный драфт принимается только тогда, когда он равен токену, который тот же движок произвёл бы последовательно, при этом сэмплирование привязано к промпту или сиду, абсолютной позиции и идентификатору токена. В README явно указано, что точность относительна к тому же движку, весам, среде выполнения и настройкам, и не подразумевает идентичного вывода между MLX и CUDA, разными квантизациями или разным числом рангов тензорного параллелизма. Пользователи могут сравнить запрос с `"draft": false`, чтобы проверить драфтовый вывод против последовательного. Параметры обслуживания охватывают хост/порт, объявляемое имя модели, размер контекста, лимиты ответа, значения сэмплирования по умолчанию, переключатели режима размышлений и уровень усилий рассуждения, выбор бэкенда, параллелизм, управление драфтом и, на MLX, кэширование промптов и настройку памяти, такую как удерживаемые префиксы, сброс на диск, каталоги снапшотов и переиспользуемый буферный кэш. Опции только для CUDA включают dtype KV-кэша для Flash Next, порог уверенности MTP и выполнение с тензорным параллелизмом на два ранга. Работа с памятью описана подробно: MLX по умолчанию использует бюджет процесса 70% от RAM, переопределяемый через переменную окружения, с учётом весов, роста кэша, токенов ответа и рабочей области префилла. Таблица классов памяти перечисляет квалификационные слоты от 32 ГБ до 256 ГБ, но большинство ячеек помечены как TBD; только строка для 64 ГБ M5 Pro имеет опубликованные цифры, приписываемые запуску сообщества на более ранней версии. В README указано, что это квалификационные слоты, а не обещания минимальной памяти. Кэширование промптов на MLX использует планы чанков, полученные из отрендеренной последовательности токенов, с точками возобновления в начале сообщений ассистента и начале второго сообщения. Снапшоты несут идентичность модели, среды выполнения, ядра и плана чанков, чтобы префиксы могли переживать перезапуски. Движки CUDA хранят собственное состояние промпта и ответа и не используют опции MLX для дисковых снапшотов или удерживаемых префиксов. Для оборудования NVIDIA в README рекомендуется использовать PyTorch-контейнер NVIDIA, поскольку у пакета нет extra для установки CUDA. Qwen3.8-27B, Flash Next и Nemotron поддерживают один или два ранга CUDA, тогда как GLM требует два. Ранг 0 обслуживает HTTP. Ввод изображений является опциональным: установка extra для vision и запуск совместимого плотного чекпоинта Qwen3.5/3.8 с `--vision` позволяет передавать части контента с изображениями и текстом через тот же движок. Проект лицензирован под MIT, веса моделей сохраняют собственные лицензии, а некоторые опциональные драфт-чекпоинты имеют некоммерческие условия, отмеченные в уведомлениях третьих сторон.