Инференс — это работа уже обученной модели: вы подаёте текст, модель выдаёт ответ. Веса при этом не меняются ни на йоту. Слово пришло из английского inference и переводится как «вывод», но прижилась калька: «вывод модели» путается с «выводом на экран».
Второй процесс — обучение — устроен принципиально иначе, и смешение этих двух вещей порождает больше всего путаницы у новичков.
#Обучение и инференс: сравнение по ресурсам
| Критерий | Обучение | Инференс |
|---|---|---|
| Как часто | один раз (плюс дообучения) | при каждом запросе |
| Кто делает | владелец модели | вы, на своём железе или у провайдера |
| Нужны данные | корпус на терабайты | только ваш запрос |
| Память под модель | веса + градиенты + состояния оптимизатора | только веса |
| Множитель по памяти | примерно вчетверо к весам и больше | ~1,2 к весам |
| Железо | кластер ускорителей | одна видеокарта, иногда процессор |
| Результат | новый файл весов | текст ответа |
Строка про множитель объясняет, почему обучить модель на домашней видеокарте нельзя, а запустить — можно. При обучении рядом с каждым весом надо держать градиент и состояние оптимизатора; при инференсе — только сам вес. Сколько места занимает модель при разных уровнях сжатия, посчитано в справке про параметры модели.
#Из чего состоит один запрос
Инференс делится на два неравных этапа, и это объясняет большинство жалоб на скорость.
- Prefill — обработка промпта. Модель прогоняет весь входной текст и заполняет кэш. Этап упирается в вычислительную мощность и даёт паузу перед началом ответа.
- Decode — порождение ответа по одному токену. На каждый токен модель читает все свои активные веса из памяти, поэтому этап упирается в пропускную способность памяти.
Разделять эти два числа при диагностике обязательно — иначе «медленно» ничего не значит; подробности — в справке про задержку и время до первого токена.
#Где путают
Заблуждение первое, самое частое: «я запустил модель локально, теперь она учится на моих данных». Не учится. Локальный запуск — чистый инференс: пока вы не запустили отдельную процедуру дообучения, файл весов побайтово тот же, что вы скачали. Ощущение обучения создаёт память ассистента — внешнее хранилище, куски из которого подкладываются в запрос.
Заблуждение второе: инференс — лёгкая операция. Лёгкая по сравнению с обучением, но не по сравнению с обычными программами: генерация одного токена требует прочитать из памяти все активные веса — гигабайты на каждый токен ответа.
Заблуждение третье: медленный инференс лечится мощным процессором. Чаще он упирается не в вычисления, а в память — в объём и в скорость чтения. Потолок процессорного запуска задан пропускной способностью оперативной памяти, и сменой процессора он не поднимается.
#Частые вопросы
#Чем инференс отличается от дообучения?
Направлением: при инференсе данные проходят через модель, при дообучении модель подстраивается под данные. Дообучение требует в разы больше памяти и заканчивается новым файлом весов.
#Почему один и тот же запрос второй раз обрабатывается быстрее?
Обычно из-за кэширования: модель уже в памяти, а у части движков сохраняется обработанный префикс промпта. Первый запрос после запуска включает чтение весов с диска — это заметные секунды.
#Можно ли делать инференс без видеокарты?
Можно, и для небольших моделей это рабочий сценарий — практические шаги в разборе того, как запустить LLM локально. Скорость будет ниже, модель придётся брать меньше.
#Что такое пакетный инференс?
Обработка нескольких запросов одновременно, при которой видеокарта загружается плотнее и общая пропускная способность растёт, а задержка отдельного запроса — нет. Для одного пользователя выигрыша почти нет, для сервера на несколько человек — существенный; подробности в разборе vLLM и пакетного инференса.
Остальные термины — в глоссарии терминов ИИ.