Что такое LLM на самом деле?
LLM — это функция: текст на входе, распределение вероятностей по следующему токену на выходе. Генерация — та же функция, завёрнутая в цикл: сэмплируем токен, дописываем его, подаём всё обратно на вход и повторяем — пока не появится стоп-токен или не сработает лимит длины. Любой построенный на ней продукт, от чат-приложений до агентов для кода, — это оркестрация вокруг этого цикла.
Сам файл модели — это две вещи: миллиарды весов с плавающей точкой (параметры) и фиксированный граф вычислений, который их комбинирует (см. внутри трансформера). Внутри нет базы данных, нет движка правил, нет черновой памяти. Во время инференса веса заморожены; всё, что модель «помнит» в ходе разговора, — просто текст, сидящий в вашем окне промпта.
Базовый цикл
Псевдокод всего генерационного движка. Ничто из того, что выпускают вендоры, не глубже этого:
tokens = tokenize(prompt)
while not done and len(tokens) < max_context:
probs = model(tokens) # один прямой проход
next = sample(probs, temperature)
tokens.append(next)
stream_to_user(next)
if next == stop_token:
done = True
Две ручки этого цикла доминируют в повседневном поведении, и ни одна не живёт в весах: температура (насколько смелое сэмплирование) и максимальный контекст (сколько разговора влезает). Обе — настройки времени выполнения, которые применяет движок (см. параметры движка).
Что такое веса физически
Модель «7B» — это 7,000,000,000 параметров типа float. Размер на диске зависит только от точности, а не от «умности»:
| Точность | Байт на параметр | Размер 7B-модели |
|---|---|---|
| FP16 (нативно) | 2 | ~14 GB |
| 8-битный квант | ~1 | ~7 GB |
| 4-битный квант | ~0.55 | ~4 GB |
Те же веса, более грубое хранение — вы меняете немного качества на много памяти (см. квантизация). Само количество фиксируется при обучении; использование модель его не меняет.
Лестница масштабов
Количество параметров — грубая, но честная мерка того, что появилось и когда:
| Класс | Параметры | Эпоха | Что умел |
|---|---|---|---|
| GPT-2 | 125M–1.5B | 2019 | Связные абзацы, хрупкие факты |
| GPT-3 | 175B | 2020 | Начинает работать few-shot-промптинг |
| Маленькие, но хорошие (Phi-3, Qwen 3B) | 3–4B | 2024 | Вполне рабочие лёгкие ассистенты |
| Открытые 7B (Mistral, Llama 2) | 7B | 2023 | Уверенный чат и код на одной пользовательской GPU |
| Открытый класс 70B | 70B | 2023+ | Почти фронтирное рассуждение; хочет 2×24 GB |
| Открытый плотный фронтир (Llama 3.1) | 405B | 2024 | Фронтирные открытые веса, мульти-GPU |
| Фронтирный MoE | 100B–600B+ всего, 10–40B активных | 2024+ | Лучший в классе вывод за разумную цену обслуживания |
Каждая ступень примерно в 10× больше предыдущей, и каждая открывает поведение, которое младшая просто не могла выдать — не «то же самое, но чуть лучше». Масштаб добавлял навыки; упаковка сделала их удобными.
Нет памяти между сессиями
Модель не имеет состояния. Состояние живёт в разговоре: в бегущем окне токенов, которое произвели вы и она. Закрыли вкладку — оно исчезло; начали новый чат — она не знает о вашем существовании. Любая функция «памяти» — обёртка, которая заново вставляет старый текст в новый промпт.
Практическое следствие: то, что вы держите в окне, — всё, что она знает прямо сейчас. Длинные разговоры незаметно обрезают собственное начало, когда окно заполняется, — модель «не замечает» пропавшего текста (см. токены).
Беглость — не правильность
Цель обучения — правдоподобное продолжение, а не истина. Острые углы:
- Модель выдаёт уверенную, хорошо оформленную ложь. Галлюцинации — свойство предсказания следующего токена, а не баг, который кто-то забыл закрыть.
- Беглость — плохой сигнал истины: неверный ответ читается ровно так же хорошо, как верный.
- Калибровка шаткая. Спросите «насколько ты уверен?» — и часто получите выдуманное число.
- Частые факты надёжны — они встречались в обучении миллионы раз. Длинный хвост фактов плавно деградирует в уверенную выдумку.
- Модели склонны к согласию: поспорьте с правильным ответом — и она может сдаться. Правильность и уверенность — разные оси.
- Принудительный проверяемый вывод (JSON с полями для заполнения, множественный выбор) работает лучше, чем просьба к модели заглянуть в себя.
Знания заморожены при обучении
Всё, что знает модель, было заложено при обучении; есть дата отсечки, и никакое количество переписки веса не обновит. Свежие факты требуют подачи текста в контекст (ретривал) или нового обучения (см. обучение). Модель также не может указать источник факта — у неё нет индекса по корпусу, только эхо корпуса в весах.
Способности приходят неравномерно
Масштаб добавляет навыки не плавно:
- До ~3B: хороший автокомплит, извлечение, классификация; многошаговое рассуждение в основном проваливается.
- 7–9B: надёжное следование инструкциям, приличный код; арифметика и длинные цепочки остаются шаткими.
- 30B+: планирование, нюансы, сложный код — приходит поздно и довольно внезапно.
- MoE усложняет лестницу: судите по активным параметрам, а не по общим.
Так что «больше — лучше» верно в среднем и вводит в заблуждение в деталях: одни задачи выходят на плато рано, другие включаются поздно. Меряйте на своей задаче, а не по ощущениям (см. выбор модели).
Продукт — это цикл в обёртке
Когда вы пользуетесь любым LLM-продуктом, происходит примерно следующее:
- Ваш текст токенизируется.
- Системный промпт, определения инструментов, найденные документы и история чата склеиваются в один промпт.
- Модель гоняет цикл выше и стримит токены наружу.
- Код-обёртка парсит вывод, вызывает инструменты, подаёт результаты обратно и промптит снова.
- UI рендерит markdown и называет это разговором.
Шаги 1, 2, 4 и 5 — не модель. Как только вы усвоите, что модель — это функция без состояния «текст на входе — текст на выходе» с фиксированным окном, остальная часть этого руководства — бухгалтерия: насколько велико окно (токены), как быстро крутится цикл (префилл и декодирование), где он работает (обзор железа) и как им управлять (промптинг).
Связанные разделы: токены · внутри трансформера · параметры · обучение