110 токенов в секунду. Столько выдает обычный 64-ядерный серверный процессор AMD EPYC при инференсе квантованной языковой модели на 7 миллиардов параметров. Без очередей на поставку чипов, без квот в облаках, без счетов за инстансы p4d. Тема «малые языковые модели на CPU: корпоративный ИИ без единой дорогой видеокарты» звучит для многих энтузиастов как компромисс от бедности. Для меня это холодный инженерный прагматизм.
Малые языковые модели на CPU: корпоративный ИИ без единой дорогой видеокарты
Индустрия сошла с ума. Финдиректора по ИТ смотрят на счета за AWS и пьют валерьянку, потому что разработчики решили использовать 70-миллиардного монстра для того, чтобы классифицировать входящие письма в техподдержку. Это стрельба из термоядерной боеголовки по воробьям. Хайп вокруг огромных параметров превратил рынок в секту свидетелей святого тензора, где решением любой задачи считается покупка кластера H100.
Большие языковые модели (LLM) универсальны, и за эту универсальность вы платите железом. Но корпоративному сектору редко нужен философ-универсал. Ему нужен исполнительный клерк. Малые языковые модели (SLM) размером от 3 до 8 миллиардов параметров — Phi-3, Qwen2, Mistral — из коробки глупее гигантов. Но если вы дообучите их под свой домен, они порвут любую базовую LLM в вашей конкретной задаче извлечения сущностей, маршрутизации или классификации. И сделают это за копейки.
Помню, когда мы в Morana Labs катили пайплайн разбора и маршрутизации юридических договоров для одного банка, архитекторы со стороны клиента заложили в бюджет аренду четырех узлов с A100. Задача: вытащить ИНН, сумму сделки и определить тип контракта из скана. Мы выкинули этот бюджет в мусорное ведро, собрали датасет из 20 тысяч исторических документов, зафайнтьюнили 8-миллиардную модель и развернули её на их же существующих CPU-серверах. Сэкономили клиенту шестизначную сумму в долларах за год, получив latency в 400 миллисекунд на запрос. Для асинхронного документооборота — за глаза.
Квантизация и физика памяти
Чтобы запустить нейросеть на скромном железе, её нужно сжать. Квантизация (перевод весов из 16-битного формата с плавающей точкой в 8, 4 или даже 2 бита) — это математика жадности, которая работает. GGUF и llama.cpp сделали для демократизации ИИ больше, чем все пресс-релизы корпораций вместе взятые. Потеря в перплексии при квантовании Q4_K_M (4 бита) настолько ничтожна, что на задачах извлечения фактов вы её не измерите ни одним бенчмарком, зато требования к памяти падают в четыре раза.
from llama_cpp import Llama
# Инициализация модели строго под CPU с учетом физических ядер
llm = Llama(
model_path="/models/Qwen2-7B-Instruct-Q4_K_M.gguf",
n_threads=16, # Количество физических ядер CPU
n_ctx=4096, # Окно контекста
n_batch=512, # Размер батча для обработки промпта
use_mmap=True, # Маппинг в память для быстрого старта
use_mlock=False # Блокировка в RAM (если памяти с запасом)
)
response = llm(
"Извлеки номер договора из текста: ...",
max_tokens=50,
temperature=0.1
)Главный ботлнек инференса на CPU — это не вычислительная мощность ALU или FPU. Это пропускная способность памяти. Веса модели нужно постоянно гонять из RAM в кэш L3 и в регистры. Видеокарты выигрывают за счет памяти HBM, которая пропускает терабайты в секунду. Процессоры с DDR4/DDR5 ограничены сотнями гигабайт. Но для SLM на 7 миллиардов параметров в 4 битах нужно всего около 4.5 ГБ памяти. Пропускной способности обычного серверного процессора хватает, чтобы генерировать десятки токенов в секунду. А если вы используете процессоры с поддержкой инструкций AVX-512 или AMX, матричные умножения ускоряются аппаратно.
А теперь отвлечемся от стерильных стоек в дата-центрах и посмотрим на реальный мир. Заводы, буровые вышки, склады, медицинские центры. Пограничные вычисления (edge computing) — это место, где облачный ИИ умирает. Вы не можете поставить GPU-сервер за 40 тысяч долларов в пыльный цех. Вы не можете отправлять логи с датчиков станка с ЧПУ в облако, потому что пинг скачет, а безопасники закрыли контур так, что наружу не пролезет даже NTP-пакет. Данные не покидают периметр. Индустриальный ИИ обязан работать там, где генерируется сигнал.
И вот тут малые модели на CPU становятся безальтернативными. Промышленный ПК с Intel Core i7 или Ryzen, без активного охлаждения, облепленный пылью, спокойно крутит локальную нейросеть, которая парсит логи оборудования, классифицирует ошибки или обрабатывает голосовые команды оператора в реальном времени. Экономика edge-вычислений рушится, если в каждую точку присутствия нужно ставить видеокарту. С SLM вам достаточно того железа, которое уже стоит в стойке маршрутизатора.
Да, процесс подготовки сложнее. Вам нужен качественный датасет. Файнтьюнинг через LoRA или QLoRA требует времени инженеров и разовой аренды GPU на несколько часов (что стоит копейки). Вы инвестируете в разовую подготовку инструмента, чтобы потом годами экономить на его эксплуатации. Это классическая инженерия, а не подсаживание бизнеса на иглу ежемесячной подписки на API.
Где SLM не тянет
Я не продаю серебряную пулю. Малые модели ломаются там, где начинается сложная абстрактная логика. Если вы попробуете заставить 8-миллиардную модель на CPU написать с нуля архитектуру микросервиса на Rust или сделать zero-shot анализ финансового отчета на 100 страниц с многоходовыми логическими выводами — она сгенерирует уверенный, грамматически безупречный бред. У неё физически не хватает емкости для хранения сложных мировых концепций.
Задача узкая, детерминированная и сводится к классификации, NER или роутингу.
Требуемый latency позволяет генерировать 10-30 токенов в секунду.
Данные критичны и не могут покидать закрытый контур компании.
У вас есть исторические данные для дообучения модели под ваш домен.
Если ваши требования попадают в эти критерии, переплачивать за гигантскую LLM нет смысла. Инженерия — это про решение задачи оптимальным ресурсом в условиях жестких ограничений, а не про запуск тетриса на суперкомпьютере ради красивого пресс-релиза.