Лекция 2. Как работают современные большие модели¶
Лекция 2 · ~75 мин · 35 слайдов
На что вы сейчас НЕ обращаете внимания¶
[Включаю первый слайд. На экране — вопрос крупным шрифтом, под ним персонаж, которого одновременно тянут в три стороны.]
«Здравствуйте. Начнём не с AI, а с вас.
[пауза 2 секунды]
Пока вы читаете это предложение — на что вы сейчас НЕ обращаете внимания?
[пауза, дать залу секунду подумать]
Ваш мозг прямо сейчас непрерывно решает маленькую, но важную задачу: что держать в фокусе, а что оставить фоном. Где-то на периферии — уведомление на телефоне, которое вы краем сознания заметили и отложили. Недодуманная мысль про вечерние планы — «а билеты я купил?». Ощущение стула, на котором вы сидите, — неудобный, но вы про него забыли, пока я не сказал. Всё это конкурировало за один и тот же ограниченный ресурс — ваше внимание. И вы не осознавали этот выбор в моменте, но он происходил постоянно, всё это время.
[показать на персонажа, которого тянут в три стороны]
На слайде — именно это: персонаж, которого одновременно тянут в три стороны — уведомление, посторонняя мысль, незакрытая задача. Это не про рассеянность как недостаток. Это нормальная, рабочая архитектура внимания у человека. Мы физически не можем одинаково полно обрабатывать всё сразу, поэтому мозг постоянно расставляет приоритеты: что в фокус, что в фон.
[пауза, sub-line на слайде]
Ваш мозг ежесекундно выбирает, что важно, а что — фон.
[указать на bridge-строку внизу слайда]
Так вот. Сегодняшняя лекция — про то, что происходит внутри AI-модели между вашим запросом и её ответом. И один из четырёх внутренних этапов, которые мы разберём, называется буквально так же, как то, что вы сейчас почувствовали, — механизм внимания. Когда модель обрабатывает ваш текст, она тоже решает, на какие части входа «смотреть» внимательнее, а какие оставить фоном.
Сразу важная оговорка, к которой мы вернёмся ближе к середине лекции, в разделе про механизм внимания: сходство здесь — по названию и по общей идее «выбора приоритета», а не по устройству. Внутри модели это не психологический процесс, а конкретная вычислимая операция — матрица весов, которую можно посчитать и посмотреть. Мы её посчитаем и посмотрим, когда дойдём до сути.
Но прежде чем туда дойти, нам с вами нужно пройти весь путь запроса через модель по порядку: токенизацию, эмбеддинги, внимание, сэмплинг. У каждого этапа — своё конкретное инженерное следствие для того, как вы работаете с AI на практике. С этого и начнём.»
[Переход на s02.]
Обложка¶
[На слайде — крупная «02», заголовок.]
«Лекция вторая. Как работают современные большие модели.
Вторая из семнадцати. Если на первой мы смотрели на AI снаружи — где он работает, где не работает, — то сегодня заглядываем внутрь.»
[Переход на s02a.]
Карта лекции¶
[На слайде — шесть пронумерованных карточек, gold-маркер на «Раздел 0».]
«Шесть разделов за 75 минут. Сейчас — введение. Дальше: токенизация, эмбеддинги, внимание, сэмплинг, финал. К этой карте я буду возвращаться на каждом разделе.»
[Переход на s03.]
Углубляем слой «модель» из Лекции 1¶
[На слайде — слева слоистая схема Лекции 1 с подсветкой нижнего слоя, справа bullet-мостик.]
«Краткий recap. На первой лекции мы зафиксировали: AI-системы устроены слоями — модель внизу, над ней чат, над чатом агент, поверх — приложение. И базовый слой — модель — мы описали как stateless-инференс: на вход данные, на выход предсказание, между вызовами памяти нет.
[пауза]
Этого описания достаточно, чтобы говорить, где модель используется в большой системе. Но недостаточно, чтобы говорить, что внутри неё происходит. На первой лекции мы с вами оставили внутренности модели чёрным ящиком — сегодня мы его аккуратно открываем.
Сегодня мы углубляем именно этот нижний слой. Четыре этапа inference, каждый с практическим следствием.»
[Переход на s04.]
Главный вопрос лекции¶
[На слайде — центральный вопрос крупно, под ним три промиса-якоря.]
«Главный вопрос — на слайде. Что внутри LLM меняет то, как мы её используем?
Ответом будут не формулы. Ответом будут четыре механизма и три практических обещания, которые я даю прямо сейчас.
[указать на три карточки]
Первое: к концу лекции мы с вами поймём, почему промпт с ролью работает лучше пустого. Второе: почему AI плохо считает буквы. Третье: почему один и тот же запрос даёт разные ответы. Эти три «почему» Лекция 1 оставила открытыми. Сегодня закроем все три.»
[Переход на s04a.]
Раздел 1: Токенизация¶
[На слайде — большое «Раздел 1», под ним «Токенизация».]
«После короткого знакомства с обещаниями курса — переходим к первому слою механики LLM. Первый раздел из шести. Токенизация — как модель видит ваш текст. Шесть слайдов, одиннадцать с половиной минут.»
[Переход на s04b.]
Поток данных в LLM¶
[На слайде — горизонтальный 7-этапный конвейер.]
«Прежде чем нырять в детали — общий поток. Сверху вниз, слева направо. Текст превращается в токены. Токены — в векторы. Векторы идут в LLM, которая в центре, в золоте. Из LLM выходят векторы. Те снова превращаются в токены. Токены — в текст ответа.
Сегодня разбираем все эти этапы по очереди. Под конвейером — четыре подкарточки: Раздел 1 — токенизация, Раздел 2 — векторы, Раздел 3 — то, что LLM делает с векторами внутри, Раздел 4 — обратное преобразование в токены через сэмплинг.»
[Переход на s05.]
Токен — id из словаря модели¶
[На слайде — три примера разметки токенов.]
«Что такое токен формально. Токен — это идентификатор, целое число, из словаря модели. Этот словарь зафиксирован при обучении и в момент использования не меняется. Размер словаря у современных моделей — порядка сотен тысяч записей. У GPT-4o — около двухсот тысяч; у Llama 3 — около ста двадцати восьми тысяч.
[показать на слайд]
Три примера разметки. Слово cat — один токен. Слово tokenization — два: [token] и [ization]. Слово клубника — три токена: [к], [луб], [ника]. Чем «реже» слово в обучающем корпусе модели, тем мельче оно режется.
Простой ориентир, которым пользуются инженеры: в среднем один токен — это четыре символа на английском или два символа на русском.
[указать на inline-prompt]
Маленькое упражнение для интуиции. Как разрежется слово сильнее — на один токен, на два или на три? Подумайте на секунду. Подсказка: для русского даже короткое слово обычно даёт два-три токена. Точный ответ — на tiktokenizer.vercel.app, можно проверить прямо в браузере.»
[Переход на s06.]
BPE — компромисс¶
[На слайде — две колонки Before / After.]
«Алгоритм, которым строятся словари большинства современных моделей, называется BPE — Byte-Pair Encoding. Это компромисс между двумя крайностями.
[пауза]
Можно было бы взять словарём отдельные символы — тогда любой текст представим, но последовательности получаются очень длинные. Можно было бы взять целые слова — тогда последовательности короткие, но любая опечатка или неологизм становится <unknown>. BPE сидит посередине: словарь — это подпоследовательности разной длины, которые алгоритм нашёл как самые частые в корпусе обучения.
[показать слайд]
Слева — учебный корпус из четырёх слов: low, lower, newest, widest. Справа — что выучит BPE: low, er, new, est, wid. Частые корни и частые суффиксы — отдельно.
[gold callout]
Главная инженерная деталь, которую часто упускают: BPE-словарь строится один раз, до обучения модели. В момент работы модели токенизация — это lookup готовых правил, а не вычисление в реальном времени. Поэтому когда мы говорим «токены модели», мы всегда имеем в виду её фиксированный словарь. И две разные модели одного производителя могут иметь разные словари — это привязка к корпусу обучения, не общий стандарт.»
[Переход на s07.]
Почему AI плохо считает буквы¶
[На слайде — слева разбивка strawberry, справа три следствия.]
«Теперь — классический пример, который вы наверняка видели. На вопрос «сколько букв r в слове strawberry» многие модели отвечают «две». Правильный ответ — три. Почему так получается?
[показать на слайд]
Слово strawberry для модели — три токена: [st], [raw], [berry]. На вход модели поступают три числовых единицы. Не десять букв s, t, r, a, w, b, e, r, r, y, а три id. И внутри каждого токена для модели нет явного списка «вот тут стоит r на позициях три и восемь». Внутри — статистическая информация о том, в каких контекстах токен [raw] встречается. Не побуквенная.
Это явление мы с вами называем слепотой к буквам. Это не баг и не плохое обучение. Это структурное следствие того, как устроена токенизация.
[указать на три карточки справа]
Три практических следствия. Первое — подсчёт символов в принципе ненадёжен. Второе — мелкие опечатки могут привести к разбиению на совершенно другие токены, и модель внезапно отвечает иначе. Третье — регистр и пробелы: cat, cat с пробелом, Cat и CAT — это разные токены с разными векторами.
[пауза, gold callout]
Инженерный вывод. Если ваша задача требует точной посимвольной операции — подсчёта букв, поиска подстроки, проверки регулярки — не делайте её чистым LLM. Используйте внешний инструмент: Python sandbox, регулярное выражение, специализированный код.
Маленькая практическая оговорка: современные топ-модели на этот вопрос часто отвечают правильно — но не потому, что один forward-pass через нейросеть умеет считать буквы. Они внутри вызывают Python или генерируют пошаговый подсчёт. Сам по себе один проход через сеть — не считает буквы.
И та же природа бьёт не только по буквам, но и по арифметике: цифры тоже режутся токенизатором непредсказуемо, разряд не совпадает с границей токена. Отсюда измеримая деградация — GPT-4 без внешних инструментов даёт около 59% точности на трёхзначном умножении, 4% на четырёхзначном и почти ноль на пятизначном.»
[Переход на s08.]
Один и тот же текст: дороже по-русски¶
[На слайде — bar chart токены/символ для четырёх языков.]
«Прямое следствие того, что BPE учился на корпусе с большим английским перекосом, — стоимость токенизации разных языков разная.
[показать на bar chart]
Английский — около 0.25 токена на символ. Сто символов — двадцать пять токенов. Русский — около 0.5: те же сто символов превращаются в пятьдесят токенов. Китайский — около 0.8. Код на Python — около 0.4.
[gold callout]
Инженерное следствие. Один и тот же по смыслу запрос на русском обходится примерно вдвое дороже, чем на английском. Конкретный разрыв зависит от текста и токенизатора — диапазон от полутора до двух с половиной раз. Если у нас с вами batch-задача на тысячи документов и предметная область допускает работу на английском, имеет смысл переводить входы и выходы. Это значимая статья бюджета.
Второе следствие — контекстное окно у нас тоже расходуется неравномерно. Документ на восемьдесят тысяч символов на английском уместится в двадцать тысяч токенов. Тот же документ на русском — в сорок тысяч. К окну мы вернёмся в третьем разделе.»
[Переход на s08a.]
Раздел 2: Эмбеддинги¶
[На слайде — большое «Раздел 2», под ним «Эмбеддинги».]
«Второй раздел из шести. Эмбеддинги — пространство смыслов. Это второй этап конвейера: после того как текст разрезан на токены, каждый токен превращается в вектор. Что это значит и зачем — следующие пять слайдов.»
[Переход на s09.]
Что такое эмбеддинг¶
[На слайде — схема лукапа токена в вектор.]
«Когда мы с вами сказали «токен — это id из словаря», осталась открытая часть. Как модель работает с этим id? Прямо с числом — никак: между токенами нет осмысленной арифметики. Модели нужно представить значение каждого токена в форме, пригодной для нейросети.
[показать на слайд]
Этот способ — эмбеддинг, то есть векторное представление. Каждому токену словаря сопоставлен вектор фиксированной длины — список чисел с плавающей точкой. Для токена [кот] это может выглядеть как [0.21, -0.45, 0.88, ..., 0.13] — несколько сотен или несколько тысяч чисел.
Вектор не назначается вручную. Он выучивается на этапе обучения модели — вместе со всеми остальными весами нейросети. Когда обучение заканчивается, таблица «токен → вектор» фиксируется. На inference модель делает lookup: получила id токена, забрала вектор, передала в следующий слой.
[указать на callout справа]
Конкретные размерности. Специализированные модели OpenAI для выходных эмбеддингов: text-embedding-3-small — 1536 измерений, text-embedding-3-large — 3072. Размерности внутренних эмбеддинг-таблиц у flagship-моделей вроде GPT-4 официально не публикуются — порядок оценивается в несколько тысяч измерений. Точная цифра нам с вами и не нужна; важен порядок.»
[Переход на s09a.]
Пространство эмбеддингов¶
[На слайде — 2D scatter с тремя кластерами.]
«Главное свойство эмбеддингов формулируется одной фразой: близкие по смыслу токены лежат рядом в пространстве векторов.
[показать на scatter-plot]
На слайде — упрощённая двумерная проекция. На самом деле измерений тысячи, но для интуиции мы их сжимаем в плоскость. Три кластера: животные — кот, собака, тигр — собрались в одном углу. Транспорт — машина, авто, мотоцикл — в другом. Языки программирования — Python и JavaScript — в третьем.
При этом никто не размечал «кот и собака — одна категория». Это свойство возникло само из того, что в обучающем корпусе оба слова часто появлялись в похожих контекстах. Близость в эмбеддинг-пространстве — это статистическое отражение того, как слова используются. Не семантический справочник, написанный человеком.
[указать на три fact-cards справа]
Три факта на правой стороне. Размерность — тысячи измерений. Обучение — координаты выучиваются автоматически. Проекция в 2D — это PCA или t-SNE, нужно только для нашей с вами интуиции.»
[Переход на s10.]
Семантическое сходство на предложениях¶
[На слайде — heatmap 5×5 cosine similarity.]
«Эмбеддинги работают не только для отдельных слов, а — и это главное в практике 2026 года — для целых предложений. Возьмём пять коротких фраз и измерим, насколько они близки друг к другу.
[показать на heatmap]
Пять предложений. Первое — «Как настроить SSL». Второе — «Установка HTTPS-сертификата». Третье — «Деплой React-компонента». Четвёртое — «Сборка React-приложения». Пятое — «Рецепт борща».
Шкала, которую мы видим, называется cosine similarity. Это мера угла между двумя векторами; значения от минус единицы до единицы. Ближе к единице — векторы сонаправлены, то есть предложения близки по смыслу.
[указать на ячейки heatmap]
Что получается на современной embedding-модели. Первое и второе — синонимы в домене веб-безопасности — около 0.85. Третье и четвёртое — оба про работу с React — около 0.78. Борщ против любого технического — диапазон от 0.05 до 0.15. Низко, но не ноль.
[пауза]
Главный вывод. Современный эмбеддинг захватывает смысл, а не точное совпадение строк. SSL и HTTPS — разные строки, но они близкие в эмбеддинг-пространстве, потому что в корпусе обучения они появлялись в одних и тех же контекстах. То же для React, для синонимов в техническом языке, для пар на разных языках.
Конкретные цифры на слайде — иллюстративные. Точные значения зависят от выбранной модели. Воспроизвести можно через open-source sentence-transformers/all-MiniLM-L6-v2 или через OpenAI text-embedding-3-small. Главное — порядок: синонимы 0.7–0.9, несовместимые домены — около нуля.
Этот же механизм лежит в основе семантического поиска и RAG — про RAG мы будем говорить на следующей лекции.»
[Переход на s12.]
Эмбеддинги — фундамент понимания LLM¶
[На слайде — слева вертикальный конвейер, справа три карточки.]
«Соберём, к чему мы пришли в этом разделе. Эмбеддинги — это фундамент того, как LLM «понимает» наш с вами язык. Модель работает не со строками, а с векторами. И вся семантика — на уровне геометрии этих векторов.
[указать на конвейер слева]
Полный цикл: слова — токены — векторы — LLM в центре, в золоте — векторы — токены — слова. В обе стороны. Сначала вход, потом обратное преобразование в выход. Эмбеддинги — мост между текстом и нейросетью.
[указать на три карточки справа]
Три практических наблюдения. Первое — перефразирования: модель спокойно понимает «как настроить SSL» и «установка HTTPS-сертификата» как близкие задачи. Второе — синонимы: «врач» и «терапевт» — близкие точки. Третье — кросс-языковость: клубника и strawberry тоже оказываются рядом, потому что в многоязычных корпусах эти слова встречаются в одних и тех же контекстах.
[gold callout]
Семантическая близость на уровне предложений — основа понимания LLM. Это то, что отличает современный AI от полнотекстового поиска.»
[Переход на s13.]
Раздел 3: Механизм внимания¶
[На слайде — большое «Раздел 3».]
«Эмбеддинги мы зафиксировали — теперь вопрос: как модель решает, на какие векторы смотреть сейчас. Третий раздел из шести. Самый плотный — восемнадцать минут, шесть слайдов. Механизм внимания — центральная операция трансформера.»
[Переход на s13a.]
Внимание — это матрица¶
[На слайде — 7×7 матрица внимания.]
«Прежде чем разбирать, что внимание делает по смыслу, — как оно устроено технически. И тут важно зафиксировать: внимание — это матричная операция, не линейная.
[показать на матрицу]
На слайде — упрощённая семь на семь матрица внимания для предложения «Кот съел мышь, потому что она была голодна». Каждая строка и каждый столбец — это токен. Цвет ячейки кодирует вес: тёмный — высокий вес, светлый — низкий. Ячейка «она → мышь» подсвечена золотом — она сейчас имеет самый высокий вес.
[пауза]
Главное здесь — каждый токен смотрит на все остальные одновременно. Не последовательно, как читали бы мы с вами. Одновременно. Это и есть идея из знаменитой статьи Vaswani 2017 года — «внимание — это всё, что вам нужно» (в оригинале «attention is all you need»).
[указать на правые fact-cards]
Три факта. Первое — размерность матрицы N на N, где N — число токенов в контексте. Отсюда квадратичная стоимость: удвоили контекст — учетверилась стоимость. Второе — матрица пересчитывается на каждом шаге генерации. Третье — голов внимания в современной модели не одна, а десятки или сотни параллельно, каждая со своей матрицей.»
[Переход на s14.]
Внимание — распределение весов¶
[На слайде — слева фонарик, справа bar chart распределения.]
«Теперь по смыслу. Что внимание выдаёт на выходе. Удобная метафора — фонарик в тёмной комнате.
[указать на фонарик слева]
Представьте, что мы с вами стоим в комнате с большим количеством предметов. Это все токены контекста. Нам нужно ответить на конкретный вопрос — предсказать следующий токен. Мы не можем одновременно ярко осветить всё. Мы направляем фонарик на те предметы, которые сейчас релевантны вопросу. В центре луча — ярко. На периферии — тускло.
Это и есть внимание. Распределение света по сцене. И это распределение меняется в зависимости от того, что мы сейчас спрашиваем.
[указать на bar chart]
Формально: для каждого токена внимание возвращает распределение весов на все остальные токены контекста. Сумма весов всегда равна единице. Один большой вес — «я сильно опираюсь на этот токен». Маленький — «этот сейчас почти не важен». Никаких формул вводить мы не будем — для понимания пользователя достаточно зафиксировать три факта.
[пауза]
Первое — на вход внимание получает все токены контекста. Не один и не часть. Все. Если контекст 10 токенов — смотрит на 10. Если 100 тысяч — на 100 тысяч.
Второе — на выходе для каждого токена есть распределение, сумма единица. Это просто «как мы делим внимание между токенами в этот момент».
Третье — это распределение пересчитывается на каждом шаге генерации заново. С учётом того, что предыдущий токен уже выбран и добавлен в контекст.
В реальной модели голов внимания не одна, а десятки параллельных, и слоёв десятки. Но для нашего с вами уровня понимания достаточно одной фразы: внимание выдаёт распределение весов на токены контекста.»
[Переход на s15.]
Рабочий пример и эффект роли¶
[На слайде — Part A с тремя стрелками; Part B — два промпта.]
«Главный пример лекции. Возьмём конкретное предложение: «Кот съел мышь, потому что она была голодна».
[показать Part A]
Когда модель доходит до токена «она», ей нужно определить, к чему этот токен относится. К мыши или к кошке. На уровне внимания это видно. Над токеном «она» оказывается распределение весов. Наибольший вес — на токене «мышь»; так предложение и понимается. Средний вес — на «была». Тонкий — на «голодна». На слайде это три стрелки разной толщины.
Важная оговорка. Картинка с тремя стрелками — сильное упрощение. Реальная карта внимания содержит сотни связей сразу, и в каждом из десятков слоёв рисунок свой. Мы агрегируем сотни значений в одну толстую стрелку для интуиции.
И ещё важнее — модель не делает грамматический разбор. Она статистически смотрит на токены, для которых статистика говорит «эти обычно связаны с „она“ в подобных контекстах». Корреляция, не парсинг.
[пауза, retrieval]
Маленькое упражнение. Подумайте 30 секунд: куда смотрит модель в предложении «Программа упала, потому что она забыла обработать null»?
[пауза 30 секунд, дать время аудитории]
На большинстве современных моделей максимум — на токене «программа». Это согласуется и с грамматикой, и со статистикой технических текстов. На отдельных моделях возможна перераспределение — это нормальная вариативность.
[показать Part B]
Теперь главное практическое следствие. Первое из трёх «почему» Лекции 1. Почему промпт с ролью работает лучше пустого.
Сравним два промпта на одну и ту же задачу. Без роли: «Объясни асинхронность». С ролью: «Ты эксперт по Python. Объясни асинхронность джуниору».
[пауза]
На уровне внимания второй даёт качественно другую картину. Когда модель доходит до момента генерации первого токена ответа, её внимание распределяется на весь предшествующий контекст. В первом случае контекст короткий — почти только слово «асинхронность». Модель опирается на самую общую статистику. Выдаёт обобщённый ответ.
Во втором случае в контексте есть токены Python, эксперт, джуниор. И они получают существенный вес в распределении внимания. Следующий генерируемый токен выбирается из распределения, смещённого этими токенами. Ответ окажется более конкретным — про Python, а не вообще. С более простыми объяснениями — потому что аудитория джуниор. И в более экспертном регистре.
[gold callout]
Рабочее объяснение. Role-токены получают повышенный вес во внимании при генерации первых токенов ответа. Роль в промпте — не просьба «поверь мне». Это явный input-сигнал, прямо влияющий на распределение внимания. Инженерным языком это называется in-context steering — управление поведением модели через сам контекст, без переобучения весов. Это первое из трёх «почему», и его мы только что объяснили через механизм.»
[Переход на s16.]
Контекстное окно¶
[На слайде — bar chart с тремя точками: GPT-3.5, Claude 3.5, Claude 4.7.]
«Поскольку внимание работает на всех токенах контекста, появляется естественное ограничение: контекстное окно. Это максимум, который модель может обработать за один запрос.
[показать на bar chart]
За три года окно выросло на порядки. Три ключевые точки. GPT-3.5 в момент выпуска ChatGPT в 2022 — около 4 тысяч токенов. Claude 3.5 в середине 2024 — 200 тысяч. Современные flagship — Claude 4.7, актуальный GPT — порядка миллиона.
Один миллион — это очень грубо полторы-две тысячи страниц текста на английском. Кажется, что «модель видит всё» и проблема исчезла. Это впечатление обманчиво по двум причинам.
[gold callout]
Первая — стоимость растёт квадратично. Базовая версия механизма внимания требует, чтобы каждый из N токенов посмотрел на каждый. Это N в квадрате операций. Удваиваем длину контекста — учетверяется стоимость. Миллион токенов входа — в шестнадцать раз дороже, чем сто тысяч. В цене API это видно прямо.
Вторая причина — модель не одинаково хорошо использует все позиции в окне. К этому переходим на следующем слайде.»
[Переход на s17.]
Lost in the middle¶
[На слайде — U-shape кривая.]
«В 2023 году группа Стэнфорда и Беркли опубликовала работу с провокационным названием «Lost in the Middle» — потеряно в середине.
[показать на кривую]
Эксперимент простой. В большой контекст вставляется один значимый факт — в начале, в середине или в конце. Потом модель спрашивают этот факт и считают точность ответа. На графике мы с вами видим характерную U-образную кривую.
Точность около 70–80% когда факт в начале. Проваливается до 50% в середине. Снова поднимается до 70–80% в конце.
[пауза]
Природа эффекта связана с тем, как модели учатся работать с длинным контекстом. В типичных документах важные утверждения находятся либо в начале, либо в конце. Статистика положения важных токенов имеет U-форму, и модель её усваивает. Важный токен в середине она по привычке взвешивает меньше.
[gold callout]
Инженерный вывод. Если у нас с вами длинный промпт с инструкциями и данными — самое важное помещайте в начало или в конец. Не в середину. Самая частая ошибка — длинная преамбула с правилами, в середине которой утоплено критическое ограничение. Эту инструкцию модель будет систематически игнорировать.
Решение простое. Критические инструкции — в самое начало, в системный промпт. Или повторить явно в конце прямо перед задачей.»
[Переход на s17a.]
Раздел 4: Сэмплинг¶
[На слайде — большое «Раздел 4».]
«Четвёртый раздел из шести. Сэмплинг — от распределения к токену. Это последний этап inference. После того как все слои внимания отработали, мы получаем распределение вероятностей. Что с ним делать дальше — следующие шесть слайдов.»
[Переход на s18.]
Распределение вероятностей¶
[На слайде — bar chart top-5 кандидатов.]
«На входе сэмплинга — то, что произвели предыдущие три этапа. Модель прошла токенизацию, эмбеддинги, все слои внимания. На выходе у неё — распределение вероятностей на все токены словаря.
[пауза]
То есть для каждого из ста или двухсот тысяч токенов словаря модель сказала: «вероятность, что следующим окажется именно этот, равна такому-то значению». Сумма всех вероятностей — единица.
[показать на слайд]
Конкретный пример. Пользователь написал «Сегодня я съел...» и ждёт продолжения. На bar-chart распределение следующего токена. Яблоко — 0.32. Пиццу — 0.19. Салат — 0.14. Булочку — 0.11. Огурец — 0.08. Остальные двести тысяч токенов словаря — каждый меньше пяти сотых.
[пауза]
Видно две вещи. Распределение не равномерное. У модели есть статистические предпочтения, основанные на корпусе обучения. Но и не точечное — есть несколько правдоподобных кандидатов, и среди них вероятности заметно различаются.
Дальше — сэмплинг. Это правило, по которому модель из распределения выбирает один токен. Тот, который пойдёт в ответ. И именно от правила сэмплинга зависит, насколько «творческим» или «детерминированным» будет ответ.
На слайде яблоко выделено золотом — допустим, модель выбрала именно его. Это будет первый токен ответа. Дальше — следующий шаг распределения, уже с яблоком в контексте.»
[Переход на s19.]
Температура¶
[На слайде — три копии distribution с разной T.]
«Главный параметр сэмплинга — температура. Один параметр API. Управляет, насколько «острым» будет выбор.
[показать на три графика]
Три копии распределения из предыдущего слайда. Слева — T=0. По центру — T=0.7. Справа — T=2. Посмотрите на разницу.
[указать на левый график]
T=0. Все вероятности сжаты на яблоко. Argmax — возьми тот, у которого вероятность максимальна. Модель практически всегда выберет именно яблоко. Ответ предсказуем и почти детерминированный. Повторите запрос десять раз — получите одно и то же.
[указать на центральный график]
T=0.7, стандартный режим. Модель сэмплирует пропорционально вероятностям. Яблоко в 32% случаев. Пиццу в 19. Салат в 14. Естественная вариативность — каждый запуск может вернуть разный ответ, но все ответы в зоне правдоподобных.
[указать на правый график]
T=2. Распределение сглаживается. Разница между вероятными и редкими токенами уменьшается. Модель начинает выбирать неожиданные варианты. В крайних случаях ответы получаются почти хаотичными.
[пауза]
Кроме температуры есть две альтернативные ручки. Top-p, или nucleus sampling: отрезает «хвост» редких токенов, оставляет минимальное подмножество с суммарной вероятностью ≥ p. Top-k: оставляет ровно k самых вероятных. На практике для большинства задач достаточно температуры. Top-p и top-k — второй слой контроля.
[gold callout]
Это третье из трёх «почему» Лекции 1. Почему один и тот же запрос даёт разные ответы. Потому что при T > 0 сэмплинг — стохастический процесс. Из одного и того же распределения каждый запуск может выбрать разный токен. Это не баг — это инженерное решение, дающее моделям естественную вариативность.»
[Переход на s20.]
4 ручки API под сценарий¶
[На слайде — таблица 5×5.]
«Соберём четыре основных параметра, которыми инженер управляет работой LLM через API.
[показать на таблицу]
Температура, top_p, max_tokens, системный промпт. Четыре сценария — четыре строки таблицы.
[указать построчно]
Классификация. T=0, max_tokens маленький — пятьдесят-двести, системный промпт минимальный со схемой выхода в JSON. Любая стохастичность вредна: если на одном документе в одном запуске «жалоба», в другом «вопрос» — воспроизводимость нарушена.
Кодогенерация. T=0.2-0.3, чуть-чуть ненулевая, top_p — 0.9, max_tokens большой, тысяча и больше. Системный промпт — роль senior Python-разработчик и контекст репозитория. Чистый ноль даёт повторяющийся «учебниковый» код; 0.2 — вариативность только между почти одинаково хорошими решениями.
Чат-объяснение. Стандарт. T=0.7, top_p — 0.9, max_tokens пятьсот-тысяча, системный промпт описывает аудиторию.
Творческое письмо. T=0.9-1.2 — стохастичность тут желаемое свойство. Top_p — 0.95, max_tokens — две тысячи и больше. Промпт про стиль.
Эта таблица — не предписание, а ориентир. В реальной работе мы с вами калибруем под свою задачу. Главное — понимать рамку: четыре ручки, они дёргаются согласованно.»
[Переход на s21.]
Авторегрессионный цикл¶
[На слайде — замкнутый цикл из пяти шагов.]
«Давайте посмотрим, как все четыре этапа inference складываются в единый цикл.
[показать на цикл]
Лекция 1 описывала модель как stateless-функцию: вход — данные, выход — предсказание, между вызовами состояния нет. Но в чате с LLM мы с вами наблюдаем длинный ответ — фразу, абзац, страницу. Откуда длинный ответ из stateless-вызовов?
Ответ — авторегрессионная генерация. От autoregressive — буквально «само-регрессирующий». Модель опирается на свои предыдущие выводы. Циклический процесс.
[указать на шаги]
Шаг 1. Текущий контекст: системный промпт плюс история диалога плюс новый запрос плюс всё, что модель уже сгенерировала за этот ответ.
Шаг 2. Forward pass — полный проход контекста через четыре этапа, которые мы прошли. Это шаг, который мы изучили в первых трёх разделах — на слайде он подсвечен золотом.
Шаг 3. Распределение вероятностей следующего токена.
Шаг 4. Сэмплинг — выбираем один токен.
Шаг 5. Выбранный токен дописывается к ответу. И возврат к шагу 1.
[пауза]
Цикл повторяется, пока не будет сгенерирован специальный токен «конец ответа» или пока счётчик не упрётся в max_tokens.
Каждый отдельный шаг — stateless. Модель ничего не помнит между шагами. Всю «память» несёт сам контекст, который каждый раз подаётся целиком. Иллюзия памяти создаётся не моделью, а оркестратором, который собирает и подаёт контекст.»
[Переход на s22.]
Локально vs в облаке¶
[На слайде — две колонки Local vs Cloud.]
«Один короткий момент. Описанный цикл — один и тот же в облаке и локально.
[показать на две колонки]
Слева — Local. Ollama, llama.cpp. Модели на 1–13 миллиардов параметров: Qwen 2.5, Llama 3.1 8B. Приватность, без оплаты за токен, медленнее.
Справа — Cloud. OpenAI, Anthropic, Yandex, GigaChat. Сотни миллиардов параметров. Качество выше, окно больше, задержка 200–500 мс. Оплата за токены.
Архитектурно inference одинаков. Различаются размер и среда. Глубже — было на Лекции 1.»
[Переход на s22a.]
Раздел 5: Финал¶
[На слайде — большое «Раздел 5».]
«Мы с вами прошли четыре этапа inference — теперь соединяем их в один конвейер и закрываем три «почему» Лекции 1. Пятый, последний раздел. Финал. Закрываем три «почему», три кросс-сюжетных фрейма, задание к семинару, мост к Лекции 3. Девять минут.»
[Переход на s23.]
Конвейер inference¶
[На слайде — горизонтальный конвейер из 4 стадий.]
«Сложим всё в одну схему. Конвейер inference LLM — четыре этапа.
[указать по стадиям]
Токенизация — текст разрезается на токены из фиксированного словаря, построенного BPE.
Эмбеддинг — каждому токену сопоставлен выученный вектор; геометрическая близость — это смысловая близость.
Внимание — десятки слоёв строят распределения весов на токены контекста.
Сэмплинг — из распределения по правилу, заданному температурой, выбирается один токен.
Это и был тот «чёрный ящик», который мы открыли. Дальше — следствия.»
[Переход на s24.]
Три «почему» закрыты¶
[На слайде — три карточки с ответами.]
«Возврат к трём промисам, которые я давал в начале. Они же — три «почему», которые мы с вами закрываем сегодня.
[показать первую карточку]
Первое. Почему промпт с ролью лучше пустого. Ответ: role-токены получают высокий вес во внимании при генерации первых токенов ответа. Распределение смещается в сторону роли. Слайд s15.
[вторая карточка]
Второе. Почему AI плохо считает буквы. Ответ: модель видит токены, а не буквы. Strawberry для неё — три токена, не десять символов. Это структурное следствие BPE-токенизации. Не исправляется ни fine-tuning, ни более крупной моделью на чистом inference. Слайды s05 и s07.
[третья карточка]
Третье. Почему один и тот же запрос даёт разные ответы. Ответ: при температуре больше нуля сэмплинг стохастический. Каждый запуск может выбрать иначе. Слайды s18 и s19.
[пауза]
Три «почему» закрыты через механизм, а не через интуицию. Это основная учебная цель сегодняшней лекции.»
[Переход на s25.]
Когда не LLM¶
[На слайде — дерево решений с тремя ветками.]
«Первый из двух кросс-сюжетных фреймов финала. Когда LLM — не правильный инструмент. Мы с вами теперь умеем это обосновать через механику.
[показать на дерево]
Простое дерево решений. Три ветки «не LLM».
Первая. Задача — классификация на маленьком фиксированном наборе категорий. Пять — двадцать классов, тысячи примеров с разметкой. Скорее всего, классический ML: логистическая регрессия, XGBoost, маленький BERT с fine-tuning. LLM здесь будет дороже и менее точна.
Вторая. Нужна интерпретируемость или регулируемость. Финансы, медицина, юридическая сфера. Классические методы с прозрачной структурой — признаки, дерево решений, правила. LLM — чёрный ящик в смысле объяснимости отдельного предсказания.
Третья. Критическое время отклика меньше 100 миллисекунд. Реальное время, антифрод, edge-устройства. Специализированная маленькая модель, а не LLM с задержкой 200–500 мс.
Во всех остальных случаях — LLM применима, и часто оптимальна. Знать механику внутренностей нужно в том числе для того, чтобы аккуратно понимать, где она не нужна.»
[Переход на s26.]
Внимание ≠ причинность¶
[На слайде — Человек vs AI side-by-side.]
«Второй, последний фрейм финала. Возврат к трём уровням причинности Перла из Лекции 1.
[показать на две колонки]
Человек. «X произошло, потому что Y» — модель причинности. Корреляция, вмешательство, контрфактуал «что было бы». Опирается на доменные знания.
AI. «X следует за Y в данных» — статистическая корреляция. Внимание смотрит на токены, не строит каузальный граф. Уровень 1 Перла — сильно. Уровень 2 — частично. Уровень 3 — нет.
Это не временный недостаток. Это ограничение парадигмы. Контрфактуальные вопросы — зона человеческого суждения.»
[Переход на s28.]
Мост к Лекции 3¶
[На слайде — 4 концепта Лекции 3.]
«Что в Лекции 3. Тема — «Агенты, RAG, API: как AI выходит за пределы чата».
В конвейере, который мы с вами сегодня собрали, есть жёсткое ограничение: модель видит только контекст, наружу пойти не может. Лекция 3 покажет, как это обходится через четыре класса инструментов.
[показать на четыре карточки]
RAG. Семантический поиск по вашей базе плюс LLM. Тот же конвейер с обогащённым контекстом. Эмбеддинги, которые мы прошли, — основа.
Tools и function calling. Модель генерирует структурированный вызов в JSON. Внешняя система выполняет, возвращает результат. Канонический способ обойти слепоту к буквам.
MCP. Открытый стандарт подключения инструментов, Anthropic, ноябрь 2024.
Agent loop. Цикл act — observe — reflect. На каждом шаге модель решает, видит результат, корректирует план.
Всё надстраивается над single-shot inference.»
[Переход на s29.]
Q&A¶
[На слайде — большое «Q&A», под ним «Спасибо за внимание».]
«Спасибо за внимание. Открытый Q&A.
Если вопросов нет сразу — несколько направлений, по которым обычно спрашивают.
Первое — глубже про trade-off в выборе температуры для конкретной production-задачи. Второе — про размеры моделей, локальные vs облачные, что выбрать под наш сценарий. Третье — про токенизацию русского, китайского, и как российские модели — YandexGPT, GigaChat — справляются лучше или хуже. Четвёртое — про длинный контекст: миллион токенов это уже «всё видит» или ещё нет.
Любой вопрос по сегодняшнему материалу или вперёд — задавайте.»
[Q&A до 5 минут, после — конец лекции.]


































