Все уроки · 44
Путь 3 · Дорожная карта AI-инженера·Урок 2 из 33

Как на самом деле работают LLM

Что такое большая языковая модель на самом деле: предсказание следующего токена, токены, обучение и инференс, окно контекста — и почему модели иногда уверенно выдумывают факты.

УровеньНовичокВремя~15 мин

Машина, которая очень хорошо предсказывает текст

Почему это важно? Как только вы поймёте, как это устроено, «магия» станет предсказуемой, а сбои модели перестанут вас удивлять. Всё странное, что делает LLM, — от выдуманной ссылки на источник до того, что она «забыла» ваше имя, — объясняется одним-единственным механизмом, о котором и пойдёт речь на этой странице.

Если отбросить шумиху вокруг ИИ, большая языковая модель (LLM) делает ровно одно: получив текст, она предсказывает, что идёт дальше. Вот и весь фокус.

Дайте ей начало фразы «Столица Франции —», и она вычислит вероятность каждого возможного следующего слова: «Париж» — скорее всего, «это» — возможно, «банан» — вряд ли. Она выбирает одно слово, дописывает его к тексту и начинает сначала. Так, слово за словом, строится любой ответ — от одной фразы до нескольких абзацев: модель всё время делает одно и то же — предсказывает следующий фрагмент, добавляет его и предсказывает снова.

Магией всё это кажется из-за масштаба. Во время обучения модели показали огромное количество текста, и оказалось, что для хорошего предсказания следующего фрагмента нужно нечто, что выглядит почти как понимание: знание грамматики, фактов, кода и даже пошаговых рассуждений.

Теперь уточним, чего в этом цикле нет:

  • Модель ничего не ищет. Отвечая, она не обращается ни к какой базе данных. Факты хранятся в её параметрах — числах, подобранных при обучении, — и «всплывают» в виде предсказаний.
  • Модель думает не так, как человек. «Рассуждения» в ответе — тоже предсказанный текст. Они часто помогают, но ничего не доказывают.
  • Модель не проверяет свой ответ. В самом механизме нет ничего, что сверяло бы результат с реальностью. Эта часть работы — ваша.

Инференс: предсказание следующего токена

Работу уже обученной модели называют инференсом. Каждый раз, когда вы отправляете сообщение LLM, она предсказывает ответ по одному фрагменту.

На каждом шаге модель сэмплирует — то есть бросает «взвешенные кубики»: слово выбирается случайно, но чем оно вероятнее, тем больше у него шансов. Насколько «рискованно» выпадают эти кубики, определяет одна настройка — температура (temperature). Представьте её как регулятор: при низкой температуре модель почти всегда берёт самое «безопасное» слово, а если повернуть регулятор вверх, всё чаще побеждают менее вероятные и более неожиданные слова. Попробуйте сами:

How temperature changes sampling
prompt›Столица Франции —▍
Париж
90.5%
это
4.6%
город
3.2%
Лион
1.5%
банан
0.2%

low temperature → the sharp token wins almost always (safe, repetitive). high temperature → the distribution flattens, unusual tokens get a real chance (creative, risky).

Нажмите «выбрать» несколько раз при низкой температуре: каждый раз будет выпадать «Париж». Сдвиньте ползунок температуры вверх — и вдруг появляется «Лион» или что-нибудь ещё более странное. Вот почему один и тот же промпт может давать разные ответы и почему для фактических задач лучше низкая температура, а для мозгового штурма иногда полезна более высокая.

Что это значит для вас

Почти любое «странное поведение модели», которое вам придётся разбирать как AI-инженеру, объясняется этим механизмом: токен за токеном модель бросает взвешенные кубики.

Токены: модель видит не слова

Для многих это неожиданность: LLM работает не со словами, а с токенами — фрагментами текста. Токеном может быть целое слово, часть слова или даже просто знак препинания.

Если упрощённо, распространённые английские слова обычно умещаются в один токен, а более редкие разбиваются на части («astounding» может превратиться в «ast» + «ounding»); числа часто режутся на отдельные цифры. Слово «unbelievable» может занять три токена, а пробел перед словом тоже считается.

Отсюда множество практических странностей:

  • Модели нередко ошибаются, когда нужно посчитать буквы в слове: самих букв они не видят, только токены
  • Текст не на английском часто занимает больше токенов (и стоит больше денег) на одно предложение
  • Цены в API и ограничения на размер контекста всегда измеряются в токенах

Грубое правило: один токен — это примерно три четверти английского слова. Подробнее обо всём этом — в уроке «Разговор с моделью: токены, контекст и сэмплинг».

Обучение и инференс

Эти две фазы различаются и по стоимости, и по тому, что они меняют:

  • Обучение (training) — дорогая фаза, которая проходит один раз для каждой модели. Модели показывают огромные объёмы текста, и она постепенно подстраивает свои внутренние параметры — миллиарды чисел, — чтобы всё лучше предсказывать следующий токен. На это уходят месяцы работы тысяч GPU (дорогих чипов, на которых работают такие модели), и занимаются этим лаборатории, а не вы.
  • Инференс (inference) — то, что происходит при каждом использовании модели. Параметры заморожены, из вашего чата модель ничему не учится. Она просто прогоняет текст вперёд, токен за токеном.

Из этого следует вывод, который многим кажется неочевидным: модель вас не помнит. Закройте чат, начните новый — и она ничего не знает о прошлом разговоре. Всё, что она «знает» о вас, должно поместиться в то, что вы ей отправляете. А это подводит нас к окну контекста.

Окно контекста

Окно контекста — это рабочая память модели: весь текст, который она может учитывать одновременно. Представьте письменный стол модели: всё, на что ей разрешено смотреть прямо сейчас, должно лежать на этом столе. Там находится системный промпт — постоянные инструкции, которые написал для неё разработчик приложения и которых вы не видите, — а также ваши сообщения, прикреплённые файлы и её собственные ответы. Всё это должно поместиться в окно, а когда оно заполняется, старое содержимое приходится удалять или заменять кратким пересказом.

Посмотрите, как окно заполняется в реалистичной ситуации: ассистент для программирования отвечает на вопрос о файле:

Один запрос в окне контекста
Ассистент для программирования с лимитом 8 000 токенов
~0tokens
/ 8,000
press play to simulate
press play to simulate
0/5

Что видно в этой симуляции:

  • Системный промпт всегда присутствует, хотя пользователь его не видит
  • Прикреплённый файл занимает больше токенов, чем всё остальное вместе взятое
  • С каждым новым сообщением модели снова отправляется вся история разговора, поэтому длинные диалоги работают всё медленнее и обходятся всё дороже

Управлять тем, что попадает в это окно, а что остаётся за его пределами, — настолько важное умение, что у него есть собственное название и собственный урок: контекстная инженерия (context engineering). В этом курсе много отсылок вроде «подробнее в другом уроке», и это сделано намеренно: каждая идея получает отдельный подробный разбор.

Разговор шаг за шагом

Ещё один способ почувствовать, как устроен диалог. Каждое ваше сообщение делает разговор длиннее: модель каждый раз перечитывает его целиком:

С каждым сообщением контекст растёт
press the button below to send the first message
sent to the modelnothing yet — every message is sent in full

Модель «помнит» ваше имя только потому, что первое сообщение всё ещё находится в окне контекста и пересылается заново с каждым новым сообщением. В новом чате она понятия не имеет, кто такая Дана. Память между сессиями — это функция, которую вы создаёте сами, с помощью баз данных.

Всё — это один и тот же вызов

Чат, агенты, инструменты, RAG — всё это один и тот же вызов модели, который повторяют с разным текстом.

Окно чата в вашем любимом приложении — это просто цикл: ваше сообщение вместе со всеми предыдущими поступает на вход, на выходе появляется продолжение, оно дописывается к разговору, и при следующем сообщении всё это отправляется снова. Вот и весь интерфейс чата, больше там ничего нет.

Всё остальное, что встретится вам дальше, — это тот же самый вызов, просто с другим текстом в контексте:

  • Инструменты и вызов функций (function calling) — в своём продолжении модель просит запустить функцию; ваш код запускает её и вставляет результат обратно в виде текста.
  • RAG — ваш код находит подходящие документы и добавляет их в контекст перед вызовом.
  • Агенты — цикл вызовов: на каждом шаге продолжение модели называет следующее действие, ваш код его выполняет, а результат возвращается на вход.

Механизм один — предсказать продолжение; меняется только текст. Когда вы это поймёте, «разработка с ИИ» перестанет казаться загадкой: это решение о том, какой текст подать на вход и что делать с текстом, который получился на выходе.

Почему модели выдумывают

Если модель так хороша, почему она уверенно утверждает то, что попросту неверно, — выдуманные источники, несуществующие функции, неправильные даты?

Потому что она предсказывает правдоподобный текст, а не правдивый. Большую часть времени «правдоподобное» и «правдивое» совпадают — поэтому LLM так полезны, — но это не одно и то же. Когда модель доходит до места, где она не знает ответа, она не останавливается и не молчит. Она продолжает текст так, как это выглядит наиболее естественно по статистике. У такого сбоя есть название: галлюцинация.

Галлюцинации — прямое следствие самого механизма, и очередным обновлением их не устранить. Всё практическое, что есть в этом курсе, — привязка модели к вашим данным через RAG, инструменты для проверки фактов, ответы в строго заданном формате, регулярная оценка качества, — нужно для того, чтобы обойти именно это свойство.

Правило инженера

Никогда не воспринимайте ответ модели как источник истины. Относитесь к нему как к хорошему черновику, который нужно проверить, — и проектируйте продукт так, чтобы проверка была дешёвой или автоматической.

Абзац об ИИ и AGI

Складывается ли предсказание следующего токена в «настоящий интеллект»? Об этом постоянно спорят. Ответ с инженерной точки зрения такой: для вашей повседневной работы это пока не имеет значения. То, что у нас есть сегодня, — узкий ИИ: инструменты с большими возможностями, которым по-прежнему нужен человек, чтобы поставить цель, проверить результат и отвечать за последствия. Достигнем ли мы AGI — систем с общими способностями на уровне человека — и когда, это увлекательный вопрос, но он ничего не меняет в том, как вы создаёте надёжную функцию в этом году.

Проверьте себя

Вы дважды задали один и тот же вопрос и получили два разных ответа. Что произошло?

Вы закрыли чат и открыли новый. Почему модель больше не знает вашего имени?

Почему модель иногда уверенно сообщает выдуманный факт?

Есть вопросы?

Застряли или появились вопросы по этой дорожной карте? Заходите в Telegram-канал — с радостью всё обсудим.