Перейти к содержанию

Лекция 2. Как работают современные большие модели

Лекция 2 · ~75 мин · 35 слайдов

На что вы сейчас НЕ обращаете внимания

Слайд 1. На что вы сейчас НЕ обращаете внимания

[Включаю первый слайд. На экране — вопрос крупным шрифтом, под ним персонаж, которого одновременно тянут в три стороны.]

«Здравствуйте. Начнём не с AI, а с вас.

[пауза 2 секунды]

Пока вы читаете это предложение — на что вы сейчас НЕ обращаете внимания?

[пауза, дать залу секунду подумать]

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

[показать на персонажа, которого тянут в три стороны]

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

[пауза, sub-line на слайде]

Ваш мозг ежесекундно выбирает, что важно, а что — фон.

[указать на bridge-строку внизу слайда]

Так вот. Сегодняшняя лекция — про то, что происходит внутри AI-модели между вашим запросом и её ответом. И один из четырёх внутренних этапов, которые мы разберём, называется буквально так же, как то, что вы сейчас почувствовали, — механизм внимания. Когда модель обрабатывает ваш текст, она тоже решает, на какие части входа «смотреть» внимательнее, а какие оставить фоном.

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

Но прежде чем туда дойти, нам с вами нужно пройти весь путь запроса через модель по порядку: токенизацию, эмбеддинги, внимание, сэмплинг. У каждого этапа — своё конкретное инженерное следствие для того, как вы работаете с AI на практике. С этого и начнём.»

[Переход на s02.]


Обложка

Слайд 2. Обложка

[На слайде — крупная «02», заголовок.]

«Лекция вторая. Как работают современные большие модели.

Вторая из семнадцати. Если на первой мы смотрели на AI снаружи — где он работает, где не работает, — то сегодня заглядываем внутрь.»

[Переход на s02a.]


Карта лекции

Слайд 3. Карта лекции

[На слайде — шесть пронумерованных карточек, gold-маркер на «Раздел 0».]

«Шесть разделов за 75 минут. Сейчас — введение. Дальше: токенизация, эмбеддинги, внимание, сэмплинг, финал. К этой карте я буду возвращаться на каждом разделе.»

[Переход на s03.]


Углубляем слой «модель» из Лекции 1

Слайд 4. Углубляем слой «модель» из Лекции 1

[На слайде — слева слоистая схема Лекции 1 с подсветкой нижнего слоя, справа bullet-мостик.]

«Краткий recap. На первой лекции мы зафиксировали: AI-системы устроены слоями — модель внизу, над ней чат, над чатом агент, поверх — приложение. И базовый слой — модель — мы описали как stateless-инференс: на вход данные, на выход предсказание, между вызовами памяти нет.

[пауза]

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

Сегодня мы углубляем именно этот нижний слой. Четыре этапа inference, каждый с практическим следствием.»

[Переход на s04.]


Главный вопрос лекции

Слайд 5. Главный вопрос лекции

[На слайде — центральный вопрос крупно, под ним три промиса-якоря.]

«Главный вопрос — на слайде. Что внутри LLM меняет то, как мы её используем?

Ответом будут не формулы. Ответом будут четыре механизма и три практических обещания, которые я даю прямо сейчас.

[указать на три карточки]

Первое: к концу лекции мы с вами поймём, почему промпт с ролью работает лучше пустого. Второе: почему AI плохо считает буквы. Третье: почему один и тот же запрос даёт разные ответы. Эти три «почему» Лекция 1 оставила открытыми. Сегодня закроем все три.»

[Переход на s04a.]


Раздел 1: Токенизация

Слайд 6. Раздел 1: Токенизация

[На слайде — большое «Раздел 1», под ним «Токенизация».]

«После короткого знакомства с обещаниями курса — переходим к первому слою механики LLM. Первый раздел из шести. Токенизация — как модель видит ваш текст. Шесть слайдов, одиннадцать с половиной минут.»

[Переход на s04b.]


Поток данных в LLM

Слайд 7. Поток данных в LLM

[На слайде — горизонтальный 7-этапный конвейер.]

«Прежде чем нырять в детали — общий поток. Сверху вниз, слева направо. Текст превращается в токены. Токены — в векторы. Векторы идут в LLM, которая в центре, в золоте. Из LLM выходят векторы. Те снова превращаются в токены. Токены — в текст ответа.

Сегодня разбираем все эти этапы по очереди. Под конвейером — четыре подкарточки: Раздел 1 — токенизация, Раздел 2 — векторы, Раздел 3 — то, что LLM делает с векторами внутри, Раздел 4 — обратное преобразование в токены через сэмплинг.»

[Переход на s05.]


Токен — id из словаря модели

Слайд 8. Токен — id из словаря модели

[На слайде — три примера разметки токенов.]

«Что такое токен формально. Токен — это идентификатор, целое число, из словаря модели. Этот словарь зафиксирован при обучении и в момент использования не меняется. Размер словаря у современных моделей — порядка сотен тысяч записей. У GPT-4o — около двухсот тысяч; у Llama 3 — около ста двадцати восьми тысяч.

[показать на слайд]

Три примера разметки. Слово cat — один токен. Слово tokenization — два: [token] и [ization]. Слово клубника — три токена: [к], [луб], [ника]. Чем «реже» слово в обучающем корпусе модели, тем мельче оно режется.

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

[указать на inline-prompt]

Маленькое упражнение для интуиции. Как разрежется слово сильнее — на один токен, на два или на три? Подумайте на секунду. Подсказка: для русского даже короткое слово обычно даёт два-три токена. Точный ответ — на tiktokenizer.vercel.app, можно проверить прямо в браузере.»

[Переход на s06.]


BPE — компромисс

Слайд 9. 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 плохо считает буквы

Слайд 10. Почему 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.]


Один и тот же текст: дороже по-русски

Слайд 11. Один и тот же текст: дороже по-русски

[На слайде — bar chart токены/символ для четырёх языков.]

«Прямое следствие того, что BPE учился на корпусе с большим английским перекосом, — стоимость токенизации разных языков разная.

[показать на bar chart]

Английский — около 0.25 токена на символ. Сто символов — двадцать пять токенов. Русский — около 0.5: те же сто символов превращаются в пятьдесят токенов. Китайский — около 0.8. Код на Python — около 0.4.

[gold callout]

Инженерное следствие. Один и тот же по смыслу запрос на русском обходится примерно вдвое дороже, чем на английском. Конкретный разрыв зависит от текста и токенизатора — диапазон от полутора до двух с половиной раз. Если у нас с вами batch-задача на тысячи документов и предметная область допускает работу на английском, имеет смысл переводить входы и выходы. Это значимая статья бюджета.

Второе следствие — контекстное окно у нас тоже расходуется неравномерно. Документ на восемьдесят тысяч символов на английском уместится в двадцать тысяч токенов. Тот же документ на русском — в сорок тысяч. К окну мы вернёмся в третьем разделе.»

[Переход на s08a.]


Раздел 2: Эмбеддинги

Слайд 12. Раздел 2: Эмбеддинги

[На слайде — большое «Раздел 2», под ним «Эмбеддинги».]

«Второй раздел из шести. Эмбеддинги — пространство смыслов. Это второй этап конвейера: после того как текст разрезан на токены, каждый токен превращается в вектор. Что это значит и зачем — следующие пять слайдов.»

[Переход на s09.]


Что такое эмбеддинг

Слайд 13. Что такое эмбеддинг

[На слайде — схема лукапа токена в вектор.]

«Когда мы с вами сказали «токен — это 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.]


Пространство эмбеддингов

Слайд 14. Пространство эмбеддингов

[На слайде — 2D scatter с тремя кластерами.]

«Главное свойство эмбеддингов формулируется одной фразой: близкие по смыслу токены лежат рядом в пространстве векторов.

[показать на scatter-plot]

На слайде — упрощённая двумерная проекция. На самом деле измерений тысячи, но для интуиции мы их сжимаем в плоскость. Три кластера: животные — кот, собака, тигр — собрались в одном углу. Транспорт — машина, авто, мотоцикл — в другом. Языки программирования — Python и JavaScript — в третьем.

При этом никто не размечал «кот и собака — одна категория». Это свойство возникло само из того, что в обучающем корпусе оба слова часто появлялись в похожих контекстах. Близость в эмбеддинг-пространстве — это статистическое отражение того, как слова используются. Не семантический справочник, написанный человеком.

[указать на три fact-cards справа]

Три факта на правой стороне. Размерность — тысячи измерений. Обучение — координаты выучиваются автоматически. Проекция в 2D — это PCA или t-SNE, нужно только для нашей с вами интуиции.»

[Переход на s10.]


Семантическое сходство на предложениях

Слайд 15. Семантическое сходство на предложениях

[На слайде — 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

Слайд 16. Эмбеддинги — фундамент понимания LLM

[На слайде — слева вертикальный конвейер, справа три карточки.]

«Соберём, к чему мы пришли в этом разделе. Эмбеддинги — это фундамент того, как LLM «понимает» наш с вами язык. Модель работает не со строками, а с векторами. И вся семантика — на уровне геометрии этих векторов.

[указать на конвейер слева]

Полный цикл: слова — токены — векторы — LLM в центре, в золоте — векторы — токены — слова. В обе стороны. Сначала вход, потом обратное преобразование в выход. Эмбеддинги — мост между текстом и нейросетью.

[указать на три карточки справа]

Три практических наблюдения. Первое — перефразирования: модель спокойно понимает «как настроить SSL» и «установка HTTPS-сертификата» как близкие задачи. Второе — синонимы: «врач» и «терапевт» — близкие точки. Третье — кросс-языковость: клубника и strawberry тоже оказываются рядом, потому что в многоязычных корпусах эти слова встречаются в одних и тех же контекстах.

[gold callout]

Семантическая близость на уровне предложений — основа понимания LLM. Это то, что отличает современный AI от полнотекстового поиска.»

[Переход на s13.]


Раздел 3: Механизм внимания

Слайд 17. Раздел 3: Механизм внимания

[На слайде — большое «Раздел 3».]

«Эмбеддинги мы зафиксировали — теперь вопрос: как модель решает, на какие векторы смотреть сейчас. Третий раздел из шести. Самый плотный — восемнадцать минут, шесть слайдов. Механизм внимания — центральная операция трансформера.»

[Переход на s13a.]


Внимание — это матрица

Слайд 18. Внимание — это матрица

[На слайде — 7×7 матрица внимания.]

«Прежде чем разбирать, что внимание делает по смыслу, — как оно устроено технически. И тут важно зафиксировать: внимание — это матричная операция, не линейная.

[показать на матрицу]

На слайде — упрощённая семь на семь матрица внимания для предложения «Кот съел мышь, потому что она была голодна». Каждая строка и каждый столбец — это токен. Цвет ячейки кодирует вес: тёмный — высокий вес, светлый — низкий. Ячейка «она → мышь» подсвечена золотом — она сейчас имеет самый высокий вес.

[пауза]

Главное здесь — каждый токен смотрит на все остальные одновременно. Не последовательно, как читали бы мы с вами. Одновременно. Это и есть идея из знаменитой статьи Vaswani 2017 года — «внимание — это всё, что вам нужно» (в оригинале «attention is all you need»).

[указать на правые fact-cards]

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

[Переход на s14.]


Внимание — распределение весов

Слайд 19. Внимание — распределение весов

[На слайде — слева фонарик, справа bar chart распределения.]

«Теперь по смыслу. Что внимание выдаёт на выходе. Удобная метафора — фонарик в тёмной комнате.

[указать на фонарик слева]

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

Это и есть внимание. Распределение света по сцене. И это распределение меняется в зависимости от того, что мы сейчас спрашиваем.

[указать на bar chart]

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

[пауза]

Первое — на вход внимание получает все токены контекста. Не один и не часть. Все. Если контекст 10 токенов — смотрит на 10. Если 100 тысяч — на 100 тысяч.

Второе — на выходе для каждого токена есть распределение, сумма единица. Это просто «как мы делим внимание между токенами в этот момент».

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

В реальной модели голов внимания не одна, а десятки параллельных, и слоёв десятки. Но для нашего с вами уровня понимания достаточно одной фразы: внимание выдаёт распределение весов на токены контекста.»

[Переход на s15.]


Рабочий пример и эффект роли

Слайд 20. Рабочий пример и эффект роли

[На слайде — Part A с тремя стрелками; Part B — два промпта.]

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

[показать Part A]

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

Важная оговорка. Картинка с тремя стрелками — сильное упрощение. Реальная карта внимания содержит сотни связей сразу, и в каждом из десятков слоёв рисунок свой. Мы агрегируем сотни значений в одну толстую стрелку для интуиции.

И ещё важнее — модель не делает грамматический разбор. Она статистически смотрит на токены, для которых статистика говорит «эти обычно связаны с „она“ в подобных контекстах». Корреляция, не парсинг.

[пауза, retrieval]

Маленькое упражнение. Подумайте 30 секунд: куда смотрит модель в предложении «Программа упала, потому что она забыла обработать null»?

[пауза 30 секунд, дать время аудитории]

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

[показать Part B]

Теперь главное практическое следствие. Первое из трёх «почему» Лекции 1. Почему промпт с ролью работает лучше пустого.

Сравним два промпта на одну и ту же задачу. Без роли: «Объясни асинхронность». С ролью: «Ты эксперт по Python. Объясни асинхронность джуниору».

[пауза]

На уровне внимания второй даёт качественно другую картину. Когда модель доходит до момента генерации первого токена ответа, её внимание распределяется на весь предшествующий контекст. В первом случае контекст короткий — почти только слово «асинхронность». Модель опирается на самую общую статистику. Выдаёт обобщённый ответ.

Во втором случае в контексте есть токены Python, эксперт, джуниор. И они получают существенный вес в распределении внимания. Следующий генерируемый токен выбирается из распределения, смещённого этими токенами. Ответ окажется более конкретным — про Python, а не вообще. С более простыми объяснениями — потому что аудитория джуниор. И в более экспертном регистре.

[gold callout]

Рабочее объяснение. Role-токены получают повышенный вес во внимании при генерации первых токенов ответа. Роль в промпте — не просьба «поверь мне». Это явный input-сигнал, прямо влияющий на распределение внимания. Инженерным языком это называется in-context steering — управление поведением модели через сам контекст, без переобучения весов. Это первое из трёх «почему», и его мы только что объяснили через механизм.»

[Переход на s16.]


Контекстное окно

Слайд 21. Контекстное окно

[На слайде — 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

Слайд 22. Lost in the middle

[На слайде — U-shape кривая.]

«В 2023 году группа Стэнфорда и Беркли опубликовала работу с провокационным названием «Lost in the Middle» — потеряно в середине.

[показать на кривую]

Эксперимент простой. В большой контекст вставляется один значимый факт — в начале, в середине или в конце. Потом модель спрашивают этот факт и считают точность ответа. На графике мы с вами видим характерную U-образную кривую.

Точность около 70–80% когда факт в начале. Проваливается до 50% в середине. Снова поднимается до 70–80% в конце.

[пауза]

Природа эффекта связана с тем, как модели учатся работать с длинным контекстом. В типичных документах важные утверждения находятся либо в начале, либо в конце. Статистика положения важных токенов имеет U-форму, и модель её усваивает. Важный токен в середине она по привычке взвешивает меньше.

[gold callout]

Инженерный вывод. Если у нас с вами длинный промпт с инструкциями и данными — самое важное помещайте в начало или в конец. Не в середину. Самая частая ошибка — длинная преамбула с правилами, в середине которой утоплено критическое ограничение. Эту инструкцию модель будет систематически игнорировать.

Решение простое. Критические инструкции — в самое начало, в системный промпт. Или повторить явно в конце прямо перед задачей.»

[Переход на s17a.]


Раздел 4: Сэмплинг

Слайд 23. Раздел 4: Сэмплинг

[На слайде — большое «Раздел 4».]

«Четвёртый раздел из шести. Сэмплинг — от распределения к токену. Это последний этап inference. После того как все слои внимания отработали, мы получаем распределение вероятностей. Что с ним делать дальше — следующие шесть слайдов.»

[Переход на s18.]


Распределение вероятностей

Слайд 24. Распределение вероятностей

[На слайде — bar chart top-5 кандидатов.]

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

[пауза]

То есть для каждого из ста или двухсот тысяч токенов словаря модель сказала: «вероятность, что следующим окажется именно этот, равна такому-то значению». Сумма всех вероятностей — единица.

[показать на слайд]

Конкретный пример. Пользователь написал «Сегодня я съел...» и ждёт продолжения. На bar-chart распределение следующего токена. Яблоко — 0.32. Пиццу — 0.19. Салат — 0.14. Булочку — 0.11. Огурец — 0.08. Остальные двести тысяч токенов словаря — каждый меньше пяти сотых.

[пауза]

Видно две вещи. Распределение не равномерное. У модели есть статистические предпочтения, основанные на корпусе обучения. Но и не точечное — есть несколько правдоподобных кандидатов, и среди них вероятности заметно различаются.

Дальше — сэмплинг. Это правило, по которому модель из распределения выбирает один токен. Тот, который пойдёт в ответ. И именно от правила сэмплинга зависит, насколько «творческим» или «детерминированным» будет ответ.

На слайде яблоко выделено золотом — допустим, модель выбрала именно его. Это будет первый токен ответа. Дальше — следующий шаг распределения, уже с яблоком в контексте.»

[Переход на s19.]


Температура

Слайд 25. Температура

[На слайде — три копии 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 под сценарий

Слайд 26. 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.]


Авторегрессионный цикл

Слайд 27. Авторегрессионный цикл

[На слайде — замкнутый цикл из пяти шагов.]

«Давайте посмотрим, как все четыре этапа inference складываются в единый цикл.

[показать на цикл]

Лекция 1 описывала модель как stateless-функцию: вход — данные, выход — предсказание, между вызовами состояния нет. Но в чате с LLM мы с вами наблюдаем длинный ответ — фразу, абзац, страницу. Откуда длинный ответ из stateless-вызовов?

Ответ — авторегрессионная генерация. От autoregressive — буквально «само-регрессирующий». Модель опирается на свои предыдущие выводы. Циклический процесс.

[указать на шаги]

Шаг 1. Текущий контекст: системный промпт плюс история диалога плюс новый запрос плюс всё, что модель уже сгенерировала за этот ответ.

Шаг 2. Forward pass — полный проход контекста через четыре этапа, которые мы прошли. Это шаг, который мы изучили в первых трёх разделах — на слайде он подсвечен золотом.

Шаг 3. Распределение вероятностей следующего токена.

Шаг 4. Сэмплинг — выбираем один токен.

Шаг 5. Выбранный токен дописывается к ответу. И возврат к шагу 1.

[пауза]

Цикл повторяется, пока не будет сгенерирован специальный токен «конец ответа» или пока счётчик не упрётся в max_tokens.

Каждый отдельный шаг — stateless. Модель ничего не помнит между шагами. Всю «память» несёт сам контекст, который каждый раз подаётся целиком. Иллюзия памяти создаётся не моделью, а оркестратором, который собирает и подаёт контекст.»

[Переход на s22.]


Локально vs в облаке

Слайд 28. Локально 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: Финал

Слайд 29. Раздел 5: Финал

[На слайде — большое «Раздел 5».]

«Мы с вами прошли четыре этапа inference — теперь соединяем их в один конвейер и закрываем три «почему» Лекции 1. Пятый, последний раздел. Финал. Закрываем три «почему», три кросс-сюжетных фрейма, задание к семинару, мост к Лекции 3. Девять минут.»

[Переход на s23.]


Конвейер inference

Слайд 30. Конвейер inference

[На слайде — горизонтальный конвейер из 4 стадий.]

«Сложим всё в одну схему. Конвейер inference LLM — четыре этапа.

[указать по стадиям]

Токенизация — текст разрезается на токены из фиксированного словаря, построенного BPE.

Эмбеддинг — каждому токену сопоставлен выученный вектор; геометрическая близость — это смысловая близость.

Внимание — десятки слоёв строят распределения весов на токены контекста.

Сэмплинг — из распределения по правилу, заданному температурой, выбирается один токен.

Это и был тот «чёрный ящик», который мы открыли. Дальше — следствия.»

[Переход на s24.]


Три «почему» закрыты

Слайд 31. Три «почему» закрыты

[На слайде — три карточки с ответами.]

«Возврат к трём промисам, которые я давал в начале. Они же — три «почему», которые мы с вами закрываем сегодня.

[показать первую карточку]

Первое. Почему промпт с ролью лучше пустого. Ответ: role-токены получают высокий вес во внимании при генерации первых токенов ответа. Распределение смещается в сторону роли. Слайд s15.

[вторая карточка]

Второе. Почему AI плохо считает буквы. Ответ: модель видит токены, а не буквы. Strawberry для неё — три токена, не десять символов. Это структурное следствие BPE-токенизации. Не исправляется ни fine-tuning, ни более крупной моделью на чистом inference. Слайды s05 и s07.

[третья карточка]

Третье. Почему один и тот же запрос даёт разные ответы. Ответ: при температуре больше нуля сэмплинг стохастический. Каждый запуск может выбрать иначе. Слайды s18 и s19.

[пауза]

Три «почему» закрыты через механизм, а не через интуицию. Это основная учебная цель сегодняшней лекции.»

[Переход на s25.]


Когда не LLM

Слайд 32. Когда не LLM

[На слайде — дерево решений с тремя ветками.]

«Первый из двух кросс-сюжетных фреймов финала. Когда LLM — не правильный инструмент. Мы с вами теперь умеем это обосновать через механику.

[показать на дерево]

Простое дерево решений. Три ветки «не LLM».

Первая. Задача — классификация на маленьком фиксированном наборе категорий. Пять — двадцать классов, тысячи примеров с разметкой. Скорее всего, классический ML: логистическая регрессия, XGBoost, маленький BERT с fine-tuning. LLM здесь будет дороже и менее точна.

Вторая. Нужна интерпретируемость или регулируемость. Финансы, медицина, юридическая сфера. Классические методы с прозрачной структурой — признаки, дерево решений, правила. LLM — чёрный ящик в смысле объяснимости отдельного предсказания.

Третья. Критическое время отклика меньше 100 миллисекунд. Реальное время, антифрод, edge-устройства. Специализированная маленькая модель, а не LLM с задержкой 200–500 мс.

Во всех остальных случаях — LLM применима, и часто оптимальна. Знать механику внутренностей нужно в том числе для того, чтобы аккуратно понимать, где она не нужна.»

[Переход на s26.]


Внимание ≠ причинность

Слайд 33. Внимание ≠ причинность

[На слайде — Человек vs AI side-by-side.]

«Второй, последний фрейм финала. Возврат к трём уровням причинности Перла из Лекции 1.

[показать на две колонки]

Человек. «X произошло, потому что Y» — модель причинности. Корреляция, вмешательство, контрфактуал «что было бы». Опирается на доменные знания.

AI. «X следует за Y в данных» — статистическая корреляция. Внимание смотрит на токены, не строит каузальный граф. Уровень 1 Перла — сильно. Уровень 2 — частично. Уровень 3 — нет.

Это не временный недостаток. Это ограничение парадигмы. Контрфактуальные вопросы — зона человеческого суждения.»

[Переход на s28.]


Мост к Лекции 3

Слайд 34. Мост к Лекции 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

Слайд 35. Q&A

[На слайде — большое «Q&A», под ним «Спасибо за внимание».]

«Спасибо за внимание. Открытый Q&A.

Если вопросов нет сразу — несколько направлений, по которым обычно спрашивают.

Первое — глубже про trade-off в выборе температуры для конкретной production-задачи. Второе — про размеры моделей, локальные vs облачные, что выбрать под наш сценарий. Третье — про токенизацию русского, китайского, и как российские модели — YandexGPT, GigaChat — справляются лучше или хуже. Четвёртое — про длинный контекст: миллион токенов это уже «всё видит» или ещё нет.

Любой вопрос по сегодняшнему материалу или вперёд — задавайте.»

[Q&A до 5 минут, после — конец лекции.]



Комментарии