Локальный LLM Inference Server. Экстремальная оптимизация вывода 35B моделей на CPU.
Добро пожаловать в репозиторий моего проекта! Здесь я делюсь результатами сборки и тонкой настройки кастомного движка llama.cpp, который способен запускать огромные Mixture-of-Experts (MoE) модели на потребительском Intel-процессоре со скоростями, сопоставимыми с бюджетными видеокартами.
llama.cpp с поддержкой turboqwant и спекулятивного декодирования.-ctk q8_0 -ctv q8_0).Flash Attention.Казалось бы, как 35-миллиардная модель может работать на i5-12400F со скоростью 13 токенов в секунду? Вот детальный разбор оптимизаций:
Процессоры Intel 12-го поколения (Alder Lake) поддерживают набор инструкций AVX-VNNI (Vector Neural Network Instructions). В моей кастомной сборке llama.cpp эта функция форсирована при компиляции. VNNI позволяет процессору выполнять операции умножения матриц (INT8) с огромной пропускной способностью, заменяя несколько стандартных AVX-инструкций одной аппаратной.
Внедрение поддержки turboqwant радикально снижает оверхед CPU при деквантовании весов «на лету» (из Q4 в FP16) перед передачей их в регистры процессора.
Модель Qwen3.6-35B-A3B использует архитектуру Mixture of Experts. Несмотря на то, что общий размер модели составляет 35 миллиардов параметров, для генерации каждого конкретного токена активируется только небольшая часть нейросети — около 3 миллиардов параметров. Мой i5-12400F с быстрой DDR4 памятью легко справляется с вычислением 3B параметров в реальном времени.
# Запуск OpenAI-совместимого API сервера
run_server.bat
# Запуск спекулятивного декодирования
test_35B_speculative.bat
# Быстрый тест производительности на 8k контексте
benchmark_8k.bat