← На главную

H100 не нужны: старый сервер запустил Gemma 4 26B-A4B

01.06.2026 06:38 · hackernews

Старый сервер с одним Intel Xeon E5-2620 v4 (2016 год), 128 ГБ DDR3 и без GPU — казалось бы, с этой конфигурацией можно только сдавать в утиль. Но автор решил запустить на нём Gemma 4 26B-A4B — современную MoE-модель на 25 миллиардов параметров. И да, он это сделал.

Главная проблема любого LLM-инференса — memory wall. Генерация каждого токена требует перетаскивать гигабайты весов из RAM в кэш процессора. На DDR3 это пытка. Стандартные инструменты вроде ollama или llama-cpp тут бесполезны: они скрывают настройки и не дают выжать максимум.

Решение — кастомная сборка ik_llama.cpp с десятками флагов. Автор собрал магическую команду из 25 параметров. Ключевые приёмы:

Спекулятивный декодинг (--spec-type mtp) — пара из маленького drafter'а (помещается в L3-кэш) и 26B-верификатора. Drafter генерирует до трёх токенов за раз, верификатор проверяет. Это срезает время на каждом шаге декодинга.

Флаг --cpu-moe оптимизирует маршрутизацию между 128 экспертами модели, чтобы не было cache thrashing — когда кэш CPU постоянно сбрасывается и подгружает веса из медленной DDR3. --merge-up-gate-experts сливает две матричные операции в одну, экономя шину памяти.

Параметр --run-time-repack перед стартом перекладывает матрицы весов в RAM так, как их хочет видеть процессор — идеальные паттерны для кэша. --mlock закрепляет 27 ГБ модели в физической памяти, чтобы ОС не скинула их в своп. Настройки потоков (-t 8) — ровно по числу физических ядер: лишние потоки на memory-bound задаче только мешают.

Flash Attention (--flash-attn on) — это порт GPU-оптимизации на CPU, сделанный ikawrakow'ом. Внимание считается маленькими кусками прямо в кэше, без записи гигантской N×N матрицы в RAM. Multi-Head Latent Attention (--mla-use 3) сжимает KV-кэш в латентное представление — 56 ГБ на 262K контекста, и это больше, чем сами веса модели.

Итог: 82 ГБ в DDR3 на процессоре 2016 года. Модель генерирует текст со скоростью чтения. Автор подчёркивает: современные open-weight модели не требуют кластера H100. Им нужны понимание инференс-движка, правильный форк ik_llama.cpp, откалиброванные квантизации и отказ от чёрных ящиков вроде ollama. Узкое место — не «железо», а документация и навык.

Читать оригинал →