Лекция Стэнфорда о том, как устроены ChatGPT и Claude: полный конспект на русском
Полный конспект лекции Stanford CS229 на русском, разбор простыми словами, словарь терминов и ссылка на видео
Ты каждый день пишешь в ChatGPT или Claude, получаешь ответ и идёшь дальше. А внутри в этот момент работает штука, за умение собирать которую с нуля AI-компании платят инженерам до $750 000 в год. И почти никто из пользователей не понимает, как они устроены.
Разрыв здесь в знании. Стэнфорд закрыл этот разрыв: выложил на YouTube почти двухчасовую лекцию из курса CS229, где шаг за шагом разбирают, как рождается большая языковая модель. Бесплатно. Ниже короткий разбор, чтобы войти в тему за 10 минут и дальше смотреть лекцию, понимая, о чём речь.
Для кого эта лекция
- Пользуешься нейросетями каждый день, но слабо представляешь, что происходит «под капотом».
- Встречаешь слова «токены», «обучение», «RLHF», но цельная картинка не складывается.
- Хочешь понимать, почему модель ошибается и как её подстроить под себя.
- Думаешь, что «разобраться в устройстве AI» это сложно и не для тебя.
Совпал хотя бы один пункт: тогда читай дальше.
Та самая лекция
Речь о лекции «Building Large Language Models (LLMs)» из стэнфордского курса CS229. Читает её Yann Dubois, исследователь из Стэнфорда. Она специально обходит стороной трансформеры (про них и так полно видео) и фокусируется на том, о чём обычно молчат: данные, оценка, стоимость, вычисления, выравнивание под человека.
Смотреть лекцию на YouTube (1 час 44 минуты, английский, но с автосубтитрами и переводом справляется любой браузер).
Из чего собрана любая нейросеть: 5 опор
Вся эта кухня держится на пяти вещах. Запомни их, и дальше любая статья про AI будет читаться в разы легче.
- Архитектура. Сам «скелет» модели, то, как она устроена и через что прогоняет текст.
- Алгоритмы обучения. Как модель тренируют, чтобы она вообще начала что-то предсказывать.
- Данные. Как миллиарды веб-страниц чистят и превращают в топливо для обучения.
- Оценка. Как проверить, что новая версия модели стала умнее.
- Инфраструктура. Железо и вычисления, на которых всё это крутится.
Как сырая модель становится ассистентом
Модель не рождается вежливым помощником. Сначала она только предсказывает следующее слово. Путь до «ассистента» выглядит так:
- Предобучение (pretraining). Модель читает терабайты текста и учится угадывать следующее слово. На этом этапе она набирает «эрудицию», но ещё не умеет нормально общаться.
- SFT (дообучение на примерах). Ей показывают тысячи пар «вопрос, хороший ответ», и она учится отвечать по делу вместо случайного продолжения текста.
- RLHF (донастройка по людям). Живые люди оценивают ответы модели, и она подстраивается под то, что считается полезным и уместным. Поэтому Claude и ChatGPT отвечают связно и по делу.
Законы масштабирования: почему это важно для тебя
Ещё одно, что отделяет тех, кто строит AI, от тех, кто им пользуется: законы масштабирования (scaling laws). Для тебя как пользователя вывод простой: качество модели не магия, оно считается заранее. А значит, и работу с ней можно выстраивать осознанно, без расчёта на удачу.
Конспект лекции на русском
Это подробный пересказ лекции Stanford CS229 «Building Large Language Models (LLMs)». Читает её Янн Дюбуа (Yann Dubois), исследователь из Стэнфорда, один из авторов проектов Alpaca и AlpacaEval. За 1 час 44 минуты он проходит весь путь: как из груды интернет-страниц получается модель, которая дописывает текст, и как потом эту модель превращают в ассистента вроде ChatGPT или Claude. Формул в конспекте почти нет, всё объяснено на пальцах.
Как читать: разделы идут в том же порядке, что и в видео, у каждого стоит таймкод начала, так что любой кусок легко найти и пересмотреть. Английские термины даны в скобках при первом упоминании: так ты узнаешь их в статьях и новостях. Цифры и примеры взяты из самой лекции. Лекция записана в 2024 году, поэтому «лучшие модели» в ней: GPT-4 и Llama 3.
00:00:05 · Из чего состоит LLM: пять частей
LLM (large language model, большая языковая модель) сидит внутри ChatGPT от OpenAI, Claude от Anthropic, Gemini от Google и других чат-ботов. Лектор сразу предупреждает: за одну лекцию всё не уместить, это обзор всех частей сразу.
Чтобы обучить такую модель, нужно разобраться с пятью вещами:
- Архитектура (architecture): какая нейросеть внутри. Сейчас почти у всех это Transformer или его вариации.
- Функция потерь и алгоритм обучения (training loss, training algorithm): как именно модель учится.
- Данные (data): на чём учится.
- Оценка (evaluation): как понять, что модель стала лучше.
- Системы (systems): как заставить огромную модель быстро работать на реальном железе.
Главная мысль вступления проходит через всю лекцию. На практике же решают три других пункта: данные, оценка и системы. Именно на них тратит силы индустрия. Поэтому про архитектуру в лекции почти ничего нет, про Transformer и так полно материалов в интернете.
00:02:57 · Два этапа: pretraining и post-training
- Предобучение (pretraining). Классический подход: модель учат, грубо говоря, моделировать весь интернет. GPT-2 и GPT-3 это мир предобучения.
- Дообучение (post-training). Более свежий подход, массовым он стал после выхода ChatGPT. Готовую языковую модель превращают в ИИ-ассистента, который отвечает на вопросы и выполняет просьбы. ChatGPT это уже мир дообучения.
00:03:42 · Что такое языковая модель
Языковая модель (language model) по сути считает вероятность того, что некая последовательность слов могла быть написана человеком или встретиться в интернете.
Пример лектора: фраза «мышь съела сыр» должна получить высокую вероятность. Фраза с грамматической ошибкой, вроде «мышь съел сыр», должна получить меньше: модель должна понимать синтаксис. Фраза «сыр съел мышь» грамматически правильная, но тоже должна получить меньше, потому что сыр обычно мышей не ест. Значит, модель должна понимать ещё и смысл.
Отсюда слово, которое часто звучит в новостях: генеративная модель (generative model). Если у тебя есть модель, которая знает вероятности фраз, из неё можно «вытягивать» (sample) новые фразы. То есть генерировать текст.
00:05:16 · Как модель пишет текст: слово за словом
Все современные чат-боты устроены как авторегрессионные модели (autoregressive language models). Идея простая: вероятность целой фразы раскладывается в цепочку. Вероятность первого слова, умноженная на вероятность второго при условии первого, умноженная на вероятность третьего при условии первых двух, и так далее. Это обычное правило из теории вероятностей, никакого упрощения тут нет.
На практике задача модели одна: угадать следующее слово. Пример из лекции: есть начало «she likely prefers» («она, скорее всего, предпочитает»), и модель должна предложить продолжение, например «dogs» («собак»).
Как это происходит пошагово:
- Текст режут на кусочки, токены (tokenization), и каждому кусочку дают номер.
- Номера прогоняют через нейросеть, «чёрный ящик».
- На выходе получается распределение вероятностей: какой токен с какой вероятностью может идти следующим.
- Из этого распределения выбирают один токен.
- Номер превращают обратно в текст (detokenize).
Минус такого подхода: модель генерирует слово, потом смотрит на него и генерирует следующее, в цикле. Чем длиннее ответ, тем дольше его ждать. Последние два шага (выбор токена и превращение обратно в текст) нужны только при использовании модели (inference).
00:07:53 · Как модель учится
Чуть подробнее, но всё ещё без архитектуры. Каждый токен превращают в набор чисел (вектор, embedding). Векторы проходят через Transformer, и получается представление всего контекста. Дальше специальный слой переводит это в столько чисел, сколько всего токенов в словаре модели, и превращает их в вероятности.
Получается обычная задача классификации: из всех возможных токенов выбрать правильный следующий. Для этого используют стандартную функцию потерь (cross-entropy loss). Пример со слайда: настоящее следующее слово «cat» («кошка»). Минимизировать эту ошибку и максимизировать вероятность реального текста математически одно и то же.
Студент спросил: значит, выход модели должен быть размером со словарь? Да. Размер словаря и есть число вариантов на выходе, и оно довольно большое. Добавлять новые токены потом теоретически можно, но на практике так почти не делают. Поэтому так важно заранее продумать, как резать текст.
00:10:45 · Токенизация: как модель «видит» текст
Про токенизаторы (tokenizers) обычно говорят мало, хотя они важны.
Почему не резать по словам. Если каждое слово отдельный токен, то слово с опечаткой модели неизвестно, и непонятно, что с ним делать. Плюс есть языки вроде тайского, где между словами нет пробелов.
Почему не резать по буквам. Это бы сработало и, вероятно, неплохо. Но тексты станут очень длинными, а вычислительная сложность Transformer растёт квадратично от длины текста. Длина вдвое больше, затраты вчетверо больше.
Токенизатор решает обе проблемы: частые сочетания букв получают свой токен. В среднем один токен это примерно 3-4 буквы.
Как обучают токенизатор. Лектор разбирает один из двух самых популярных алгоритмов, BPE (byte pair encoding). Берут большой корпус текста. Сначала каждая буква отдельный токен. Потом ищут самую частую пару соседних токенов и склеивают её в новый токен. В примере на слайде буквы «t» и «o» стоят рядом три раза, они становятся токеном «to». Повторяют снова и снова, пока не получат нужный размер словаря. На слайде показан реальный токенизатор GPT: слово «tokenizer» он режет на два куска, «token» и «izer».
Ответы на вопросы студентов:
- Пробелы и знаки препинания обычно обрабатывают отдельным шагом (pre-tokenization), через пробелы токены не склеивают. Это сделано ради скорости обучения токенизатора.
- Маленькие токены, включая отдельные буквы, остаются в словаре. Так модель сможет «прочитать» по буквам даже слово с опечаткой.
- При разрезании текста всегда берут самый длинный подходящий токен: если можно взять «token», отдельное «t» не берут.
- У слова «bank» один и тот же токен, будь это банк с деньгами или берег реки. Разбираться в значении по соседним словам будет уже Transformer.
Минусы токенизаторов. Многие считают, что от токенизаторов стоит уйти и читать текст побуквенно, но пока мешает та самая проблема длины. Может, через 5-10 лет появятся архитектуры, которым длина не страшна. Самый яркий минус касается математики. Число 327 может оказаться одним токеном, и модель видит числа совсем не так, как ты. Человек складывает столбиком, по разрядам, а модели так сложно. Ещё пример: одно из больших изменений в GPT-4 касалось того, как режется программный код. Раньше отступы в четыре пробела в Python разрезались странно, и модели было тяжело понимать код.
00:19:12 · Как оценивают предобученные модели
Основная метрика при разработке называется перплексия (perplexity). Грубо говоря, это ошибка модели на проверочных текстах, пересчитанная в понятные единицы. Интуиция такая: перплексия показывает, между сколькими токенами модель «колеблется», когда угадывает следующий. Идеальная модель не колеблется вообще, её перплексия равна 1. Модель, которая не знает ничего, колеблется между всеми токенами словаря.
Цифра из лекции: на стандартном наборе данных перплексия с 2017 по 2023 год упала примерно с 70 до меньше чем 10. То есть раньше модель на каждом слове выбирала примерно из 70 вариантов, а теперь меньше чем из 10.
В научных сравнениях перплексию уже не используют: она зависит от токенизатора и от данных. Пример лектора: если у одной модели словарь на 10 000 токенов, а у другой на 100 000, верхняя граница перплексии у них разная, и сравнивать их напрямую нечестно.
В науке сейчас чаще берут много классических тестов (benchmarks), которые можно проверить автоматически, и сводят результаты вместе. Два самых известных набора: HELM из Стэнфорда и Open LLM Leaderboard от Hugging Face. Там в основном задачи с известным правильным ответом, например вопросы с вариантами.
Самый популярный тест называется MMLU. Это вопросы из разных областей: медицина, физика, астрономия на уровне колледжа. Пример: «Что верно для сверхновой типа Ia?» и четыре варианта ответа. Проверять можно двумя способами. Первый: посмотреть, какой из четырёх ответов модель считает самым вероятным текстом, ничего не генерируя. Второй: спросить модель «A, B, C или D?» и посмотреть, какую букву она скорее всего выберет. Про оценку свободных ответов, где правильных формулировок много, речь пойдёт позже.
00:26:04 · Подводные камни оценки
Разные способы считать дают разные цифры. Долгое время разные компании оценивали MMLU по-разному, и результаты сильно расходились. Модель Llama 65B (первая модель Meta из серии Llama) набрала 63,7% в HELM и 48,8% в другом рейтинге. И это без учёта формулировки запроса (prompting), которая добавляет ещё больше разброса.
Если вопросы теста попали в обучающие данные, модель их «помнит». Для компаний это не самая большая беда: они знают, на чём учили. Для учёных это реальная проблема, ведь они не знают, на чём обучена чужая модель. Остроумный трюк из лаборатории Стэнфорда: большинство тестов лежат в интернете в фиксированном порядке.
00:28:36 · Данные: что значит «обучить на всём интернете»
Обычно говорят, что модели учат «на всём интернете» или на «чистом интернете». Интернет при этом очень грязный. Если скачать случайную страницу, содержимое тебя шокирует. Это точно не Википедия.
Что делают по шагам:
- Скачивают интернет. Используют поисковых роботов (web crawlers). Популярный открытый вариант Common Crawl каждый месяц добавляет новые сайты. Сейчас там около 250 миллиардов страниц, это примерно один петабайт данных. Лектор показывает случайную страницу оттуда: сплошной HTML-код, а среди него обрывок фразы про серверы, который даже не заканчивается.
- Достают текст из HTML. Тут куча сложностей. Например, математические формулы извлекать очень трудно, а для обучения они важны. Ещё есть шаблонные куски: шапки и подвалы форумов, которые повторяются на каждой странице.
- Убирают нежелательное. Контент «не для работы» (NSFW), вредный контент, личные данные (PII). У каждой компании есть очень длинный чёрный список сайтов, на которых не учат. Ещё обучают маленькие модели, которые находят и вычищают такое.
- Удаляют дубликаты (deduplication). Одинаковые шапки, разные адреса одной и той же страницы, отрывки популярных книг, которые скопированы в интернете тысячи и десятки тысяч раз. Сделать это на таком объёме очень непросто.
- Фильтруют по правилам (heuristic filtering). Если распределение слов на странице сильно отличается от обычного, это подозрительно. Если слова аномально длинные, тоже. Если на странице три слова, стоит ли на ней учиться? А если десять миллионов слов, наверняка что-то не так.
- Фильтруют моделью (model-based filtering). Красивый трюк: берут все сайты, на которые ссылается Википедия. Раз на них ссылаются, они, вероятно, качественные. Обучают простой классификатор отличать такие страницы от случайного интернета и оставляют побольше «похожих на источники Википедии».
- Раскладывают по темам и меняют пропорции. Развлечения, книги, код и так далее. Код обычно добавляют побольше: считается, что обучение на коде улучшает рассуждения модели. Книги тоже усиливают, развлекательный контент ослабляют. Раньше это делали на глаз, сейчас есть целые автоматические системы.
- В конце дают самое качественное. На последнем этапе обучения модель гоняют на очень качественных данных, например Википедии и данных, собранных людьми, при этом скорость обучения (learning rate) снижают. По сути модель слегка «подгоняют» под лучшие тексты.
Студент спросил: почему вредный контент просто выкидывают? Может, лучше прямо учить модель его не писать?
Сколько людей занимаются данными? Лектор точно не знает, но предполагает: в команде Llama примерно 70 человек, из них, может, 15 работают с данными. Людей здесь нужно немного, зато вычислительных мощностей нужно очень много.
00:37:57 · Сколько данных и почему про них молчат
Компании держат свои методы сбора данных в секрете. Причины две: конкуренция и авторские права. Признаваться, что модель училась на книгах, никто не хочет, даже если училась: иначе засудят.
Масштабы. Открытые научные наборы данных начинались примерно со 150 миллиардов токенов, это около 800 гигабайт. Сейчас самые большие доходят до 15 триллионов токенов. Пример открытого набора The Pile: научные статьи с arXiv, биомедицинские статьи PubMed Central, Википедия, Stack Exchange, код с GitHub, книги. По закрытым моделям: Llama 2 обучали на 2 триллионах токенов, Llama 3 на 15 триллионах. Про GPT-4 точно неизвестно, по утечкам (если им верить) около 13 триллионов.
00:40:55 · Законы масштабирования
Примерно с 2020 года стало понятно и подтверждено опытом: чем больше данных и чем больше модель, тем лучше результат.
Отсюда идея законов масштабирования (scaling laws): раз больше всегда лучше, можно ли заранее предсказать, насколько лучше? Оказывается, можно. В знаменитой статье OpenAI «Scaling Laws» три графика: по горизонтали вычислительные затраты, размер данных или число параметров, по вертикали ошибка модели. Если оба масштаба логарифмические, получается прямая линия. Добавляешь столько-то вычислений и можешь заранее сказать, насколько упадёт ошибка.
Почему это поразительно: можно прикинуть, насколько хорошими будут модели через два-три года, зная, сколько вычислений добавится. Теоретического обоснования у этого нет, это наблюдение. Студенты спросили, не выходит ли рост на плато. Лектор ответил: пока никаких признаков нет, закон держится и последние годы. Почему так, никто не знает. Большинство считает, что когда-нибудь плато наступит, но когда, неизвестно. Ещё деталь: одни и те же данные модели по нескольку раз не показывают, данных пока хватает.
00:44:57 · Как законы масштабирования меняют работу
Мысленный эксперимент: тебе дали 10 000 видеокарт (GPU) на месяц. Какую модель обучать? Именно такой вопрос стоит перед компаниями.
- Старый подход: есть 30 дней, обучаешь 30 моделей по одному дню, выбираешь лучшую. Итоговая модель училась всего день.
- Новый подход: сначала находишь «рецепт масштабирования», например: при увеличении модели скорость обучения нужно уменьшать. Потом, скажем, 3 дня из 30 подбираешь настройки на маленьких моделях разного размера. По ним строишь закон масштабирования и предсказываешь, какой вариант будет лучшим в большом размере. Оставшиеся 27 дней обучаешь одну большую модель.
Пример: что выбрать, Transformer или более старую архитектуру LSTM? Обучаешь несколько моделей обоих типов разного размера, строишь по ним линии и продлеваешь их. На графике видно, что Transformer лучше. Смотреть нужно на две вещи: наклон линии (насколько быстро модель улучшается с ростом) и стартовую точку. Бывает, что подход стартует хуже, но с масштабом обгоняет. LSTM проигрывает по обоим пунктам.
Важный вывод лектора: когда смотришь на всё через законы масштабирования, видно, что мелкие улучшения архитектуры почти ничего не дают. Они лишь слегка сдвигают стартовую точку, а это компенсируется, если учить на 10 часов дольше или дождаться новых видеокарт. А вот хорошие данные дают заметно лучшую линию, чем плохие.
00:49:30 · Chinchilla: модель больше или данных больше
Следующий вопрос: как распределить ресурсы? Учить модель побольше на меньших данных или поменьше на больших данных? На это первой ответила известная статья Chinchilla.
Как это сделали: обучали много моделей так, чтобы общий объём вычислений был одинаковым, а размер модели и число токенов менялись. Для каждого бюджета находили лучшую модель, а затем строили закон: при таком-то бюджете оптимальный размер модели такой-то. Пример со слайда: для 10 в 23-й степени операций нужна модель примерно на 100 миллиардов параметров.
Ответ Chinchilla: около 20 токенов данных на каждый параметр модели. Добавил параметр, добавь 20 токенов.
Компаниям нужно ещё думать о стоимости использования модели (inference): маленькую модель дешевле запускать миллионы раз. С учётом этого другие работы получают около 150 токенов на параметр, и примерно так сейчас обучают модели, которые используются на практике. Использовать модели, кстати, очень дорого: представь, что у ChatGPT, по словам лектора, около 600 миллионов пользователей.
Через законы масштабирования отвечают и на другие вопросы: какие данные брать и в каких пропорциях, делать модель шире или глубже, тратить деньги на видеокарты или на сбор данных.
00:54:05 · Горький урок
Лектор ссылается на известный текст Ричарда Саттона «The Bitter Lesson» («Горький урок», 2019). Его смысл: чем больше вычислений, тем лучше модели, а вычисления по закону Мура постоянно дешевеют и растут. Поэтому важны архитектуры, которые умеют эти вычисления использовать. Значит, главное: системы и данные, а мелкие улучшения архитектуры вторичны.
Лектор признаётся, что сам долго этого не понимал. Совет: не усложняй. Делай простые вещи, делай их хорошо и масштабируй. Именно этому научила OpenAI своими GPT.
00:55:16 · Сколько стоит обучить Llama 3
Прикидка «на салфетке» на примере Llama 3 400B, лучшей открытой модели на момент лекции. Лектор предупреждает, что может ошибаться в несколько раз.
- Данные: 15,6 триллиона токенов. Получается около 40 токенов на параметр: больше, чем по Chinchilla, но меньше, чем оптимум с учётом использования.
- Вычисления: простая формула «6 × параметры × токены» даёт около 3,8 × 10 в 25-й степени операций. Интересная деталь: указ Байдена вводит особый надзор за моделями от 10 в 26-й степени операций. Meta остановилась примерно вдвое ниже порога.
- Время: 16 000 видеокарт H100, около 70 дней, примерно 26 миллионов GPU-часов по расчёту лектора. Сама Meta назвала 30 миллионов.
- Аренда железа: H100 стоит минимум около 2 долларов в час. 26 миллионов часов дают около 52 миллионов долларов.
- Зарплаты: около 50 человек по 500 тысяч долларов в год, это ещё 25 миллионов.
- Итого: порядка 75 миллионов долларов, плюс-минус 10 миллионов.
- Углерод: около 4 000 тонн CO₂, примерно как 2 000 перелётов туда-обратно из Нью-Йорка в Лондон. Пока это немного, но к GPT-6 или GPT-7, когда цифры вырастут в 100 раз, может стать серьёзной проблемой.
С каждым новым поколением моделей объём вычислений стараются увеличить примерно в 10 раз, если хватит энергии и удастся купить видеокарты.
00:59:56 · Post-training: зачем из модели делают ассистента
Сама по себе языковая модель ассистентом не является. Пример: если спросить чистую GPT-3 «Объясни высадку на Луну шестилетнему ребёнку», она продолжит что-то вроде «Объясни теорию гравитации шестилетнему ребёнку». В интернете после одного вопроса часто идёт список похожих вопросов, ответа там обычно нет. Модель честно делает то, чему научилась.
Например, OpenAI не хочет, чтобы модель писала токсичные вещи. На слайде два примера: на вопрос модель даёт настоящий ответ, а на просьбу написать твит о том, что какая-то группа людей «злая», отказывается.
Проблема в данных. Мы точно знаем, что хотим: вопрос и хороший ответ на него, написанный человеком. Но такие данные дорого собирать и их мало в интернете. Решение: берём модель, предобученную на всём интернете, она уже умеет говорить по-английски и знает грамматику. И немного дообучаем её (fine-tuning) на небольшом наборе нужных данных.
01:02:22 · SFT: обучение на примерах ответов
Отсюда и «с учителем»: правильные ответы задают люди.
Пример данных из проекта Open Assistant, где люди писали ответы онлайн: вопрос «Можешь написать короткое введение о значении термина монопсония?» и ответ, написанный человеком: «Монопсония это рыночная структура...».
01:04:03 · Alpaca и LIMA: синтетические данные и сколько их нужно
Человеческие данные медленные и дорогие. Идея: пусть их генерирует сама LLM. Так сделали в Стэнфорде в проекте Alpaca. Взяли 175 пар «вопрос-ответ», написанных людьми, и попросили лучшую на тот момент модель (text-davinci-003 от OpenAI) нагенерировать похожих. Получили 52 000 сгенерированных пар и дообучили на них Llama 7B, лучшую на тот момент открытую предобученную модель. Так появилась Alpaca 7B. Пример данных: «Что такое алгоритм?», ответ: «Алгоритм это пошаговый набор инструкций для решения задачи или достижения цели...». Качество получилось неплохим. С этого началась целая область генерации синтетических данных.
Удивительный факт про SFT: много данных не нужно. Статья LIMA показала, что рост с 2 000 до 32 000 примеров почти ничего не даёт. Законы масштабирования тут не работают.
Почему так. Предобученная модель уже моделирует всех авторов интернета: кто-то пишет списками, кто-то отвечает на вопросы. SFT ничего нового модели не сообщает. Оно говорит ей: «веди себя как вот этот тип автора, которого ты уже видела». Знания уже лежат в предобученной модели, SFT учит форме ответа.
Студент спросил: если бесконечно учить модели на данных других моделей, они же не узнают ничего нового? Лектор согласен: если три-четыре поколения моделей учить только на сгенерированном, улучшения, скорее всего, не будет. По его мнению, будущее за совместной работой: модель пишет черновик, человек вносит правки. Править быстрее, чем писать с нуля, а новая информация всё равно появляется. Людей стоит спрашивать именно там, где их ввод нужнее всего (active learning).
01:09:38 · Почему просто копировать людей мало
- Потолок человеческих способностей. SFT учит модель копировать людей (behavioral cloning). Но люди лучше выбирают, чем создают. Лектор приводит пример: он легко скажет, какая из двух книг лучше, но сам не напишет книгу, которую хотел бы прочитать.
- Галлюцинации (hallucination), то есть когда модель выдумывает ложную информацию. Есть гипотеза, что их может вызывать сам SFT, даже на правильных данных. Пример: в ответе про монопсонию человек сослался на реальную книгу. Но если модель эту книгу при предобучении не видела, для неё это просто правдоподобно звучащая ссылка. Получается, мы учим модель «выдумывать правдоподобные ссылки», вместо того чтобы называть те, что она знает.
- Цена. Писать идеальные ответы руками очень дорого.
01:12:29 · Как работает RLHF: модель-оценщик и PPO
Вместо копирования людей RLHF максимизирует то, что людям нравится. Схема: на каждый вопрос модель (уже прошедшая SFT) генерирует два ответа. Разметчики (labelers) выбирают лучший. Потом модель дообучают выдавать побольше «хорошего» и поменьше «плохого».
- Простая награда: лучше эталона значит плюс 1, хуже значит минус 1. Минус: информации мало, непонятно, ответ был чуть лучше или намного.
- Модель-оценщик (reward model). Отдельную большую модель учат предсказывать, какой ответ люди предпочтут и насколько сильно. Она смотрит на вопрос и весь ответ целиком и выдаёт одно число. Такой подход называется моделью Брэдли-Терри (Bradley-Terry). Плюс в том, что оценка плавная: высокое число означает, что люди, скорее всего, сильно предпочли бы этот ответ.
Дальше модель учат получать высокие оценки от модели-оценщика алгоритмом PPO (proximal policy optimization). Добавляют ограничение, чтобы модель не уходила слишком далеко от исходной: оценщик неидеально отражает вкусы людей, и если гнать его оценку до бесконечности, модель начнёт «взламывать» оценщика (over-optimization).
Есть нюанс. Её учили выдавать один самый «выигрышный» ответ, и ничто не поощряет её сохранять разнообразие. Поэтому вероятности, которые выдаёт такая модель, уже не очень осмысленны.
Это и был большой прорыв между GPT-3 и ChatGPT.
Куча технических тонкостей, всё плохо документировано. Лектор показывает реализацию, которую им пришлось писать, и говорит, что разбирать её не будет.
01:19:44 · DPO: простая замена PPO
Около года назад в Стэнфорде предложили DPO (direct preference optimization). Идея в том, чтобы повышать вероятность ответов, которые люди предпочли, и понижать вероятность отвергнутых. Под некоторыми допущениями лучшее решение у DPO и PPO математически совпадает, так что это правильный подход.
Студент спросил: почему тогда сразу не сделали так? У PPO есть и потенциальный плюс: модель-оценщик может размечать новые данные без участия людей. Но на практике DPO работает примерно так же, а устроен гораздо проще. Сейчас это стандарт в открытом сообществе и, по мнению лектора, во многом в индустрии.
Результаты по графикам: на задаче пересказа текстов (summarization) предобученные модели неплохи и растут с размером, SFT добавляет ещё, а RLHF даёт качество на уровне или даже выше человеческих пересказов. В их исследовании AlpacaFarm видно то же самое: скачок от предобученной модели к SFT и затем к PPO, причём PPO и DPO показывают одинаковый результат. Вывод: RLHF помогает, а DPO простой.
01:23:41 · Где брать оценки ответов: люди и LLM
Собирать такие данные с людьми сложно. Инструкции для разметчиков очень запутанные. Пример со слайда: вопрос «Расскажи о беспилотных автомобилях» и два ответа, оба нормальные. Какой лучше? Сразу не скажешь.
Проблемы человеческой разметки:
- Медленно и дорого.
- Люди плохо замечают ошибки по сути и цепляются за форму. Самое известное: люди выбирают более длинный ответ, даже если короткий лучше. На графике видно: чем больше RLHF, тем длиннее ответы модели. «Если тебя когда-нибудь раздражало, что ChatGPT отвечает очень длинно, это из-за RLHF».
- Важно, кто именно размечает: от выбора людей зависит, чьи вкусы будет отражать модель.
- Этика: разметчикам часто мало платят, и им приходится читать много токсичного контента, чтобы модель научилась его избегать.
Поэтому так же, как в Alpaca, людей попробовали заменить на LLM. Цифры: разметка людьми через Mechanical Turk стоила около 300 долларов за 1 000 примеров, а это ещё дешёвый вариант. При этом люди соглашаются с большинством других людей всего примерно в 66% случаев, при выборе из двух. Пятеро авторов статьи сами пробовали размечать после трёх часов обсуждения правил и набрали 67-68%. Модели оказались намного дешевле и совпадали с большинством людей даже чаще, чем отдельный человек. Причина: у людей большой разброс, а модель стабильна, хотя у неё могут быть свои перекосы. Сейчас LLM примерно в 50 раз дешевле людей и при этом лучше совпадают с мнением большинства. В открытом сообществе это стандарт, в индустрии используют и людей, и модели.
Про объёмы: для SFT обычно собирают 5 000, 10 000, может 50 000 примеров, для RLHF порядка миллиона.
01:27:41 · Как оценить ChatGPT
- Ошибку на проверочных данных не сравнить: одну модель учили через PPO, другую через DPO.
- Перплексия не подходит: после выравнивания модель уже не описывает распределение текстов, она оптимизирована выдавать один ответ.
- Вопросы очень разные: генерация, ответы на вопросы, пересказ и многое другое.
- Ответы свободные, хороших вариантов много, автоматически проверить трудно.
Решение: брать вопросы, которые реальные пользователи задают моделям, и просить людей выбрать лучший из двух ответов. То же самое, что данные для RLHF, только для оценки.
Самый уважаемый рейтинг называется Chatbot Arena. Случайные люди в интернете вслепую общаются с двумя чат-ботами, задают вопросы и выбирают лучший ответ. Сотни тысяч голосов складываются в рейтинг моделей. Минус: туда приходят в основном технари, поэтому много вопросов про программные ошибки и ИИ-инструменты. Другой минус: для ежедневной разработки это слишком дорого и медленно.
Поэтому снова заменяют людей на LLM. Так устроен AlpacaEval: на каждый вопрос есть ответ эталонной модели и ответ проверяемой, а GPT-4 решает, какой лучше. По всему набору получается доля побед (win rate), по ней строят рейтинг. Совпадение с Chatbot Arena 98%, прогон занимает меньше 3 минут и стоит меньше 10 долларов.
Минус: ложные зависимости (spurious correlations). Главная из них: LLM, как и люди, любят длинные ответы. Но человек на простой вопрос и пять страниц ответа скажет «нет, спасибо», а модель-судья будет и дальше предпочитать длину. Эксперимент: GPT-4 против самой себя по определению выигрывает в 50% случаев. Если в запросе попросить её быть многословной, доля побед вырастает до 64,4%. Если попросить быть краткой, падает до 20%. Огромный разброс из-за одной фразы в запросе. Решение в AlpacaEval: статистическая поправка на длину ответа. После неё многословность даёт гораздо меньше выигрыша.
01:33:55 · Вопросы: как маленький набор данных так сильно меняет модель
Студент спросил: как несколько тысяч примеров так сильно влияют на модель, обученную на триллионах токенов, и какие веса меняются? Ответы лектора:
- В индустрии меняют все веса модели. В открытом сообществе популярен метод LoRA, который меняет только часть (точнее, добавляет небольшие поправки к каждому слою).
- Данные не перемешивают с данными предобучения. Сначала предобучение, потом обучение только на новых данных. Представь: если долго учить модель на одном предложении с большой скоростью обучения, в итоге она будет выдавать только его.
- Удобно думать так: предобучение это стартовая точка для весов модели. После неё уже неважно, сколько данных было раньше, важно лишь, откуда стартуешь.
- В Alpaca данные прогоняли три раза (3 эпохи). Но главное тут эффективная скорость обучения, а число повторов вторично.
01:37:15 · Systems: почему всё упирается в железо
Вычисления сейчас главное узкое место. Почему просто не купить больше видеокарт? Они дорогие и дефицитные: даже с 10 миллионами долларов лучшие GPU сейчас не купишь. Плюс видеокартам нужно обмениваться данными между собой, а это время. Поэтому так важно грамотно распределять ресурсы и оптимизировать процесс.
Базовые факты про GPU:
- Процессор (CPU) заточен под скорость одной операции, видеокарта (GPU) под объём: одна команда выполняется на множестве ядер одновременно над разными данными.
- GPU оптимизированы под умножение матриц. Всё, что можно свести к умножению матриц, на них работает примерно в 10 раз быстрее остального.
- Скорость вычислений растёт быстрее, чем скорость памяти и передачи данных. Если не оптимизировать код, видеокарты большую часть времени простаивают в ожидании данных.
- Есть иерархия памяти: чем ближе к ядрам, тем память быстрее, но её меньше.
Метрика эффективности называется MFU (model FLOP utilization): какая доля теоретического максимума видеокарты реально используется. 50% это уже очень хорошо. У Meta на Llama было около 45%. Даже у гигантов данные не успевают подвозиться к вычислениям.
Два трюка, о которых успел рассказать лектор:
- Пониженная точность (low precision). Числа хранят в 16 битах вместо 32: данных передавать меньше, памяти нужно меньше, всё быстрее. Для глубокого обучения лишние знаки после запятой почти не важны, там и так много шума: обновить что-то на 0,01 или на 0,015, разницы почти нет. Стандартная схема (automatic mixed precision): веса хранят в 32 битах, перед вычислением переводят в 16, считают быстро, а обновляют веса снова в 32 битах. Иначе при очень маленькой скорости обучения обновления просто терялись бы.
- Слияние операций (operator fusion). Если написать в коде две операции подряд, видеокарта для каждой отдельно отправит данные из общей памяти в вычислительные блоки и обратно. Это расточительно. Слияние делает так: один раз отправил, сделал все вычисления, один раз вернул. В PyTorch для этого есть команда torch.compile, которая ускоряет модель примерно в 2 раза.
На остальное времени не хватило: разбиение на блоки (tiling), распараллеливание (parallelization), смесь экспертов (mixture of experts). Лектор только назвал их важными.
01:43:18 · Что осталось за кадром
Лектор перечисляет, о чём не успел рассказать: архитектура, использование моделей (inference), интерфейс (по его мнению, главной новинкой ChatGPT был простой интерфейс), мультимодальность, злоупотребления моделями, нехватка данных в интернете и законность их сбора.
Кому интересно копнуть глубже, он советует три курса Стэнфорда: CS224N (общая база и история), CS324 «Large Language Models» (углублённые лекции и чтение по всем темам этой лекции) и CS336 «Large Language Models from Scratch», где своими руками собирают собственную LLM. Последний курс, по его словам, потрясающий, но с очень большой нагрузкой.
Словарь терминов
- LLM (large language model): большая языковая модель, «мозг» ChatGPT, Claude, Gemini.
- Токен (token): кусочек текста, в среднем 3-4 буквы. Модель читает и пишет токенами, не буквами.
- Токенизатор (tokenizer): программа, которая режет текст на токены и даёт каждому номер.
- Авторегрессионная модель (autoregressive model): модель, которая пишет текст по одному токену, каждый раз опираясь на всё написанное до этого.
- Предобучение (pretraining): первый этап, модель учится угадывать следующее слово на огромном объёме текстов из интернета.
- Дообучение (post-training, alignment): второй этап, модель учат быть ассистентом: отвечать на вопросы, следовать инструкциям, отказываться от вредного.
- Веса (weights): внутренние настройки нейросети, которые меняются при обучении.
- Перплексия (perplexity): мера того, между сколькими вариантами модель «колеблется», угадывая следующий токен. Чем меньше, тем лучше.
- Бенчмарк (benchmark): стандартный тест для сравнения моделей, например MMLU.
- Утечка тестов (train-test contamination): когда вопросы теста попали в обучающие данные и модель их просто помнит.
- Законы масштабирования (scaling laws): наблюдение, что качество модели предсказуемо растёт с ростом данных, размера и вычислений.
- Параметры (parameters): число весов в модели, её «размер». Llama 3 400B значит около 400 миллиардов параметров.
- Chinchilla: исследование, которое показало оптимальное соотношение: около 20 токенов данных на один параметр.
- SFT (supervised fine-tuning): дообучение на примерах «вопрос и правильный ответ», написанных людьми или моделями.
- Синтетические данные (synthetic data): обучающие данные, которые сгенерировала другая модель.
- RLHF (reinforcement learning from human feedback): дообучение на оценках людей, какой из двух ответов лучше.
- Модель-оценщик (reward model): отдельная модель, которая предсказывает, насколько людям понравится ответ.
- PPO и DPO: два алгоритма для RLHF. PPO сложный, через обучение с подкреплением. DPO простой: повышает вероятность понравившихся ответов и понижает вероятность отвергнутых.
- Галлюцинация (hallucination): когда модель уверенно выдумывает неправду.
- Inference: использование уже обученной модели, то есть когда ты задаёшь вопрос и получаешь ответ.
Что из этого пригодится тебе, если ты не программист
- Модель угадывает продолжение текста. По своей сути LLM выбирает следующее слово по вероятности, слово за словом. Отсюда и разные ответы на один и тот же вопрос: каждый раз слово выбирается из распределения заново. Если первый ответ не понравился, попроси сгенерировать ещё раз.
- Модель может выдумывать, особенно ссылки и факты. Лектор прямо говорит: одна из гипотез в том, что модель приучили писать правдоподобные ответы, даже когда она чего-то не знает. Названия книг, цитаты, цифры, источники проверяй сам.
- Вся манера ответа задаётся примерами. Исследование LIMA показало: дообучение лишь объясняет модели, «каким автором быть», знания у неё уже есть. Для тебя это значит: покажи в запросе пример нужного стиля, формата или структуры, и модель подстроится.
- Длина ответа не равна качеству. Модели приучены писать длинно, потому что и люди, и модели-судьи на этапе обучения выбирали более длинные ответы. Если нужна суть, прямо попроси «коротко» или «в трёх пунктах». Как показал эксперимент с GPT-4, одна фраза про длину в запросе сильно меняет результат.
- Цифры и подсчёты лучше перепроверять. Модель видит числа кусками-токенами и не считает столбиком, как ты. Для расчётов попроси модель показать ход вычислений или проверь итог калькулятором.
- Рейтинги моделей нужно читать с осторожностью. Один и тот же тест, посчитанный разными способами, дал Llama 65B то 63,7%, то 48,8%, а тесты могут быть «подсмотрены» моделью при обучении. Лучший способ выбрать нейросеть под свои задачи: дать двум моделям одни и те же твои реальные задачи и сравнить вслепую, как это делает Chatbot Arena.
Практический бонус: разобрать лекцию руками Claude
Смотреть 1 час 44 минуты на английском не всем в кайф. Поэтому вот приём: пусть нейросеть разберёт лекцию за тебя. Открой Claude или ChatGPT и дай такой промпт:
Ты преподаватель, который объясняет сложное простыми словами. Я новичок в устройстве нейросетей. Объясни по шагам, что такое pretraining, SFT и RLHF, на бытовых аналогиях, без формул. В конце дай 3 вопроса, чтобы я проверил, понял ли я.
За минуту ты получишь свой личный конспект на понятном языке. А если смотришь лекцию, можешь скидывать в чат куски и просить пояснить непонятные места.
Задание на сегодня
Не откладывай, сделай прямо сейчас, это 10 минут:
- Открой лекцию по ссылке выше и посмотри хотя бы первые 10 минут.
- Выпиши 3 новых термина, которые услышишь.
- Скинь их в Claude с промптом выше и получи понятное объяснение каждого.
Всё. У тебя на руках уже есть мини-конспект по устройству нейросетей, собранный своими руками. Это и есть разница между «пользуюсь» и «понимаю».