Project Zero - это движок инференса больших языковых моделей, написанный на чистом C99 и работающий исключительно на центральном процессоре. На Intel Xeon он выдаёт до 36.25 токенов в секунду, обходя bitnet.cpp в 1.8 раза. Движок поддерживает Microsoft BitNet b1.58-2B-4T с тернарными весами и Qwen Bonsai-27B через прямой парсинг GGUF. Ключевая особенность - mmap-архитектура, которая позволяет запускать модели без out-of-memory даже на системах с ограниченной оперативной памятью.
Разработчик сделал ставку на три низкоуровневые оптимизации: трёхинструкционное VBMI-ядро для INT8 VNNI-накоплений, пул потоков на C11 atomics с логикой spin-then-sleep и прямой mmap-доступ к файлам GGUF. Результат - движок, который превращает обычный серверный процессор в платформу для полноценного инференса LLM.
Что такое Project Zero и почему это важно для CPU-инференса
Project Zero решает конкретную проблему: запуск LLM без GPU. Видеокарты дороги, дефицитны и потребляют сотни ватт. Серверные CPU есть почти в любой инфраструктуре, но до недавнего времени инференс на них был медленным и неэффективным. Project Zero меняет эту картину.
Движок написан на C99 - стандарте, который гарантирует переносимость и минимальные накладные расходы. Никаких зависимостей от Python-рантаймов, никаких прослоек. Только компилятор, исходный код и модель в формате GGUF. Поддерживаются две архитектуры: BitNet b1.58-2B-4T с тернарными весами (значения -1, 0, +1) и Qwen Bonsai-27B - 27-миллиардная модель, которая в 1-битном квантовании занимает около 5 ГБ. Ранее мы разбирали, как 1-битные модели меняют экономику инференса - Project Zero делает следующий шаг, запуская их на CPU с производительностью, сравнимой с GPU-решениями двухлетней давности.
36.25 токен/с на Xeon - это не предел. Это результат на конкретном стенде, и разработчик приглашает сообщество протестировать движок на других процессорах: от старых чипов с AVX2 до современных EPYC. Для Bonsai-27B CPU-бенчмарков пока нет - только GPU-результаты. Project Zero может стать первым инструментом, который закроет этот пробел.
Архитектура Project Zero: как достигается скорость без GPU
Project Zero опирается на три архитектурных решения. Каждое из них направлено на устранение конкретного узкого места CPU-инференса: вычислительной пропускной способности, накладных расходов на синхронизацию потоков и работы с памятью.
VBMI-ядро: три инструкции, которые меняют правила игры
VBMI (Vector Byte Manipulation Instructions) - расширение системы команд Intel, появившееся в процессорах начиная с Ice Lake. Project Zero использует три инструкции из этого набора: vpermi2b, vpternlogd и vpaddb. Их комбинация позволяет за один такт выполнить операции, которые в стандартном подходе требовали нескольких инструкций и дополнительных обращений к регистрам.
vpermi2b выполняет перестановку байтов из двух исходных векторов по индексам из третьего - это критически важно для эффективной реализации матричного умножения с тернарными весами, где каждый вес кодируется двумя битами. vpternlogd - трёхоперандная логическая операция, которая за одну инструкцию вычисляет произвольную булеву функцию от трёх входов. vpaddb суммирует байты, завершая цикл накопления для INT8 VNNI (Vector Neural Network Instructions).
Обычные реализации bitnet-инференса тратят много тактов на распаковку тернарных весов и приведение типов. VBMI-ядро делает это «на лету», без дополнительных инструкций. Именно это даёт основной прирост в 1.8 раза относительно bitnet.cpp - движка, который использует более общие SIMD-инструкции без специализации под VBMI.
Пул потоков без syscalls: spin-then-sleep на C11 atomics
Системные вызовы - главный враг низколатентного инференса. Каждый вызов к ядру операционной системы для синхронизации потоков добавляет микросекунды задержки, которые на масштабе сотен тысяч итераций превращаются в секунды. Project Zero решает эту проблему через пул потоков на C11 atomics с логикой spin-then-sleep.
Принцип работы: поток сначала активно ожидает задачу в цикле (spin), проверяя атомарную переменную без системных вызовов. Если задача не появляется в течение заданного интервала, поток переходит в режим сна (sleep) через тот же атомарный флаг. C11 atomics гарантируют корректную синхронизацию без мьютексов и условных переменных, которые требуют syscalls. Такой подход особенно эффективен для моделей вроде BitNet, где вычислительная нагрузка между слоями распределена неравномерно и часть потоков простаивает.
mmap и прямой парсинг GGUF: работа с памятью без OOM
mmap - системный вызов, который отображает файл в адресное пространство процесса. Операционная система сама решает, какие страницы загружать в физическую память, а какие оставить на диске. Project Zero использует mmap для прямого доступа к GGUF-файлам моделей, без промежуточного копирования в буфер и без полной загрузки модели в RAM.
GGUF - формат хранения моделей, разработанный для llama.cpp. Он содержит все необходимые метаданные и тензоры в одном файле. Project Zero парсит его напрямую, без конвертации в промежуточные форматы. Для Bonsai-27B это означает: модель занимает около 5 ГБ на диске, через mmap в память отображаются только те части, которые реально используются в данный момент. Системы с 8 ГБ RAM могут запускать 27-миллиардные модели без out-of-memory - операционная система вытесняет неиспользуемые страницы обратно на диск.
Этот подход перекликается с техниками, которые мы видели в других проектах. Например, при запуске Nemotron Ultra 550B на устаревших GPU ключевым ограничением была именно память, и инженерам пришлось распределять модель по нескольким ускорителям. Project Zero решает проблему памяти иначе - через mmap и ленивую загрузку, что особенно ценно для систем без GPU вообще.
Бенчмарки: Project Zero против bitnet.cpp и других решений
Цифры - главный аргумент. Разработчик предоставил результаты тестирования на Intel Xeon, и они впечатляют: 36.25 токен/с для BitNet b1.58-2B-4T, что в 1.8 раза быстрее bitnet.cpp на том же оборудовании.
Методика тестирования и конфигурация стенда
Тесты проводились на серверном процессоре Intel Xeon с поддержкой AVX-512 и VBMI. Точная модель чипа не раскрывается, но известно, что это многоядерный процессор с тактовой частотой в диапазоне 2.5-3.5 ГГц. Сборка выполнялась компилятором GCC с флагами оптимизации под конкретную микроархитектуру (-march=native). Модель BitNet b1.58-2B-4T загружалась через mmap, число потоков соответствовало числу физических ядер.
Метрика - токены в секунду на стадии генерации (decode). Это стандартный показатель для оценки скорости инференса, который напрямую влияет на пользовательский опыт: при 36 токен/с текст появляется быстрее, чем читает человек.
Сравнение с bitnet.cpp: откуда берётся прирост в 1.8 раза
bitnet.cpp - эталонный движок для инференса BitNet-моделей на CPU, разрабатываемый Microsoft. Он написан на C++ и использует стандартные SIMD-инструкции без специализации под VBMI. Project Zero обходит его за счёт трёх факторов:
- VBMI-ядро обрабатывает тернарные матричные операции эффективнее, чем обобщённые SIMD-инструкции bitnet.cpp.
- Пул потоков на C11 atomics снижает накладные расходы на синхронизацию по сравнению с pthreads-реализацией в bitnet.cpp.
- Прямой mmap-доступ к GGUF исключает копирование данных в пользовательские буферы.
Для Bonsai-27B сравнение с GPU-результатами пока невозможно - нет опубликованных CPU-бенчмарков. Разработчик приглашает сообщество протестировать модель на различных процессорах и заполнить этот пробел. Если у вас есть доступ к Xeon или EPYC, вы можете получить уникальные данные, которых ещё нет в открытом доступе.
Поддерживаемые модели и как запустить Project Zero на своём CPU
Project Zero поддерживает две модели: BitNet b1.58-2B-4T и Qwen Bonsai-27B. Обе загружаются в формате GGUF - стандарте, который стал де-факто для локального инференса после успеха llama.cpp. Никаких дополнительных конвертаций не требуется.
Требования к оборудованию: от старых AVX2 до современных Xeon и EPYC
Минимальное требование - процессор с поддержкой AVX2. Это Intel Haswell (2013) и новее, AMD Excavator (2015) и новее. Для VBMI-ядра нужен процессор с AVX-512 VBMI - Intel Ice Lake (2019) и новее, либо серверные чипы на архитектуре Zen 4 и выше. Без VBMI движок всё равно работает, но прирост относительно bitnet.cpp будет меньше.
Рекомендуемые характеристики для комфортного инференса:
- 8 и более физических ядер - для эффективного распараллеливания по слоям.
- 16 ГБ RAM для Bonsai-27B, 8 ГБ для BitNet 2B.
- Поддержка AVX-512 VBMI для максимальной производительности.
Интересный сценарий - запуск на мини-ПК и бюджетных системах. Мы тестировали Qwen3.5 122B на стандартном оборудовании и видели, как квантование и архитектура влияют на скорость. Project Zero идёт дальше - он оптимизирует сам рантайм, а не только модель.
Пошаговый запуск BitNet b1.58-2B-4T и Bonsai-27B
Сборка и запуск Project Zero - это три шага. Первый: клонирование репозитория и компиляция.
git clone https://github.com/project-zero/zero
cd zero
make clean && make -j$(nproc)
Второй: загрузка модели в формате GGUF. Для BitNet b1.58-2B-4T файл весит около 400 МБ, для Bonsai-27B - около 5 ГБ. Модели размещены в открытом доступе на Hugging Face.
Третий: запуск с указанием пути к модели, числа потоков и флага mmap.
./zero --model bitnet-b1.58-2b-4t.gguf --threads 16 --mmap
./zero --model bonsai-27b.gguf --threads 32 --mmap
Флаг --mmap включает отображение файла в память. Без него модель загружается целиком в RAM. Для систем с ограниченной памятью mmap обязателен - он позволяет запустить Bonsai-27B даже на 8 ГБ RAM, хотя производительность будет зависеть от скорости диска.
После запуска движок выводит статистику: число токенов, скорость генерации, использование памяти. Для BitNet 2B на Xeon ожидаемый результат - 30-36 токен/с. Для Bonsai-27B цифры будут ниже, но точных бенчмарков пока нет - здесь вы можете внести свой вклад в развитие проекта.
Ограничения, статус проекта и призыв к сообществу
Project Zero находится на ранней стадии. Это не продукт с долгосрочной поддержкой, а исследовательский проект, который разработчик выложил в открытый доступ для тестирования и сбора обратной связи. Основные ограничения:
- Поддерживаются только две модели - BitNet b1.58-2B-4T и Bonsai-27B. Другие архитектуры, включая стандартные трансформеры с FP16-весами, не поддерживаются.
- Для Bonsai-27B нет CPU-бенчмарков. Все известные результаты получены на GPU, и прямое сравнение невозможно.
- Производительность сильно зависит от микроархитектуры CPU. На процессорах без VBMI прирост относительно bitnet.cpp будет скромнее.
- Нет поддержки квантования KV-кэша - техники, которая в других проектах даёт прирост скорости до 68% при работе с длинным контекстом.
Разработчик приглашает сообщество протестировать движок на различных x86 CPU: от старых чипов с AVX2 до высокопроизводительных Xeon и EPYC. Особенно ценны результаты для Bonsai-27B - каждый новый бенчмарк помогает понять реальные возможности CPU-инференса для моделей среднего размера. Если у вас есть доступ к серверному оборудованию, запустите тест и поделитесь цифрами в Issues на GitHub.
Для каких задач подходит Project Zero: сценарии использования
Project Zero - инструмент для тех, кто хочет запускать LLM без GPU. Сценарии, в которых он особенно полезен:
- Локальный инференс на устройствах без GPU. Серверы, VPS, мини-ПК, старые рабочие станции - любое x86-железо с 8+ ГБ RAM превращается в платформу для LLM. Мы уже видели, как компактные модели вроде Granite 4.0 Nano меняют подход к edge-вычислениям - Project Zero делает то же самое для более крупных архитектур.
- Обработка запросов с низкими требованиями к задержке. 36 токен/с - это быстрее скорости чтения. Для чат-ботов, суммаризации текстов, генерации ответов на email такая скорость достаточна.
- Эксперименты с тернарными моделями. BitNet b1.58-2B-4T - одна из первых моделей, обученных с тернарными весами. Project Zero позволяет исследовать её поведение без покупки GPU.
- Развёртывание на дешёвых серверах. Аренда сервера с Xeon и 16 ГБ RAM стоит в разы дешевле, чем инстанс с GPU. Для проектов с ограниченным бюджетом это решающий фактор.
Project Zero не заменяет GPU-решения для высоконагруженных систем. Но для задач, где важна стоимость, а не пиковая производительность, он предлагает реальную альтернативу. 36 токен/с на CPU - это уровень, который ещё год назад казался недостижимым без видеокарты. Сегодня это работающий код на чистом C, открытый для тестирования и доработки.