Stanford CME295, лекция 2: что изменилось внутри Transformer (Рубрика #AI)
Появилась запись второй лекции курса про трансформеры и LLM. Причем если в разборе первой лекции мы дошли от токенизации до Transformer из статьи 2017 года, то во второй Афшин и Шервин Амиди показывают, как из этой конструкции получаются современные LLM. И здесь уже интересно проверить себя: насколько хорошо за знакомыми аббревиатурами помнишь, а что они реально значат и почему они появились.
За 1 час 43 минуты авторы разбирают семейства BERT и GPT, баланс размера модели и обучающих данных, изменения архитектуры и способы генерации. Я бы выделил несколько моментов.
🔸 MoE: большая модель не обязана использовать все веса для каждого токена.
Вместо одного feed-forward блока ставят несколько «экспертов», а роутер выбирает, какие из них задействовать. Причём выбор делается для каждого токена. Но в этой схеме возникает занятная проблема с обучением таких моделей: эксперты, которых выбрали в начале обучения, получают больше обновлений, становятся лучше и выбираются ещё чаще. Остальные простаивают. Это routing collapse; в лекции объясняют, как дополнительный штраф за дисбаланс помогает распределять нагрузку. Хороший пример того, сколько работы скрывается за простой картинкой с роутером.
🔸 RoPE: зачем вообще вращать векторы?
Здесь особенно хороша подача. Сначала позиционные представления объясняют через стрелки часов с разными частотами, потом доходят до поворотов query и key. В их скалярном произведении появляется зависимость от разницы позиций токенов. Так становится понятно, как порядок текста учитывается прямо в attention. Знать расшифровку RoPE (Rotary Position Embedding) и понимать, откуда взялся поворот, — довольно разные уровни знакомства с темой.
🔸 Attention приходится укладывать в память.
При генерации ключи и значения предыдущих токенов можно сохранять и использовать повторно. Но чем длиннее текст, тем больше памяти нужно. Отсюда GQA (Grouped-Query Attention): несколько query-голов используют общие ключи и значения. Ещё один приём — sliding window attention, где каждый слой смотрит только на ближайшие токены. При этом через несколько слоёв информация доходит из-за границ одного окна. Преподаватели хорошо связывают это с рецептивным полем свёрточных сетей.
🔸 Даже temperature = 0 не обещает одинаковых ответов.
После разных подходов к генерации токена в виде greedy decoding, beam search, top-k и top-p разбирают тонкость, которую легко пропустить. Сервер объединяет запросы в пакеты, и изменение размера пакета может менять порядок вычислений. У чисел с плавающей точкой результат сложения зависит от порядка операций; небольшие расхождения могут повлиять на выбор токена. Поэтому воспроизводимость зависит и от реализации инференса. Подробности есть в разборе Thinking Machines, на который ссылаются в лекции.
🔸 Корректный JSON можно обеспечить на этапе выбора токенов.
Guided decoding ограничивает допустимые продолжения согласно нужному синтаксису. На каждом шаге модель выбирает среди разрешённых токенов. Это объясняет, что стоит за гарантией формата; правильность самих данных внутри JSON всё равно нужно проверять.
В финале коротко проходят контекстное окно, context rot, обучение на примерах в промпте и техники рассуждения. Полезное напоминание: способность вместить длинный текст ещё не гарантирует, что модель надёжно использует каждую его часть.
Даже если вы уже знаете, как работает LLM, запись стоит посмотреть ради этих связей. После неё удобно открыть схему знакомой модели и объяснить, зачем там MoE, RoPE или GQA, где экономят вычисления, где память и от чего зависит получившийся ответ. А объяснение RoPE вполне заслуживает отдельной паузы с карандашом.
P.S.
Я уже много раз читал статьи и разные книги на эту тему, но тут подача конечно хороша - можно вспомнить основы и получше уложить их в голове.
#AI #LLM #Learning #Engineering #Architecture
Post #5068
1.34K