← Росток Своя LLM с нуля Словарик Код EN

Глава 14 из 14 30 мин

Что дальше

Все версии Ростка в одном саду, законы, которые отделяют его от гигантов, и эксперименты, с которых можно начать уже завтра.

В этой главе

  • сравнить все модели курса на одной затравке и на одном незнакомом тексте
  • понять, что отделяет Ростка от передовых моделей и почему дело не только в размере
  • спланировать собственный эксперимент и знать, какие статьи читать дальше

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

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

Весь сад

Вот все восемь моделей курса — от буквенной биграммы из главы 1 до чат-модели из главы 12. Дайте им одну затравку и разбудите. У всех одно зерно случайности и одинаковые настройки выборки: температура 0,8, top-p 0,95. Чат-модель получает ваш текст как сообщение и отвечает на него, все остальные просто его продолжают.

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

Прочитайте грядки сверху вниз — и увидите весь курс в миниатюре. Биграмма выдаёт буквы правдоподобными парами, и только: что было две буквы назад, она не помнит. Буквенные сети из глав 4 и 5 уже пишут настоящие слова, потому что видят окно в три или восемь букв. Сеть на токенах из главы 6 мыслит целыми словами и их кусками, и окно в восемь токенов накрывает уже несколько слов. С вниманием (глава 7) модель может оглянуться на весь текст, а не только на фиксированное окно, а стопка из четырёх блоков (глава 8) уже удерживает целое предложение. Сам Росток, три с половиной часа учившийся на 330 миллионах токенов, ведёт историю дальше, и только чат-модель понимает, что её о чём-то спрашивают.

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

Удивление на букву из главы 2: чем меньше, тем лучше модель предсказывает текст. Правый столбец переводит его в перплексию — «эффективное число вариантов».

Первая ступень, равномерная догадка, — это $\ln 97 \approx 4{,}57$ ната: модель, которая ничего не знает, выбирает из 97 символов. Подсчёт пар букв (глава 1) опускает удивление до 2,36, и каждая следующая идея срезает ещё немного. Перплексия на букву делает это осязаемым: биграмма сомневается так, будто выбирает примерно из одиннадцати букв, а последние ступени — меньше чем из двух. Там, где на лестнице видны ранние контрольные точки Ростка из главы 10, заметьте ещё одно: в начале обучения большая модель хуже маленьких, уже доучившихся, и вперёд её выводят только данные и шаги.

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

Законы масштабирования

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

Чтобы сравнивать модели, нужна мера стоимости. Обучение стоит примерно

$$C \approx 6\,N\,D$$

операций, где $N$ — число параметров, а $D$ — число токенов обучения. Откуда шестёрка?

Теперь практический вопрос: при бюджете $C$ что выгоднее — модель побольше и данных поменьше или модель поменьше и данных побольше? В 2022 году Джордан Хоффман с коллегами из DeepMind подогнали функцию потерь сразу по обеим переменным:

$$L(N, D) = E + \frac{A}{N^{\alpha}} + \frac{B}{D^{\beta}}$$

Здесь $E$ — ошибка идеальной модели (в тексте есть неустранимая случайность), второе слагаемое — то, что модель теряет из-за малого размера, третье — из-за того, что мало прочитала. При фиксированном бюджете $N$ и $D$ тянут в разные стороны: модель больше — токенов меньше. Лучшая точка лежит в долине между ними. Вывод авторов — «правило Chinchilla»: растить модель и данные вместе, примерно по 20 токенов на параметр. Chinchilla на 70 миллиардов параметров, обученная на 1,4 триллиона токенов, обошла Gopher на 280 миллиардов, на который ушло столько же вычислений.

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

Выберите «Росток» и посмотрите, куда попадает зелёная точка: почти ровно на дно своей долины. Размер Ростка и 330 миллионов токенов мы выбирали, держа это правило в голове: 330 млн / 17,3 млн ≈ 19 токенов на параметр. А теперь выберите GPT-3: 175 миллиардов параметров на 300 миллиардах токенов, меньше двух токенов на параметр. По нынешним меркам модель была слишком велика для своих данных — именно на это и указала статья про Chinchilla.

import numpy as np # Chinchilla's fit (Hoffmann et al., 2022): loss from parameters N and tokens D E, A, B, alpha, beta = 1.69, 406.4, 410.7, 0.34, 0.28 def loss(N, D): return E + A / N ** alpha + B / D ** beta N, D = 17_309_056, 330e6 # Sprout C = 6 * N * D # training compute, in operations print(f"Sprout: C = {C:.2e}, {D / N:.0f} tokens per parameter") sizes = np.logspace(5, 13, 4000) # candidate model sizes for budget in [C, 1e18, 1e20, 1e22, 1e24]: best = sizes[np.argmin(loss(sizes, budget / (6 * sizes)))] tokens = budget / (6 * best) print(f"C = {budget:.1e}: best N = {best:9.3g}, D = {tokens:9.3g}, D/N = {tokens / best:4.0f}")

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

Ваш вычислительный бюджет вырос в 100 раз. Что делать по правилу Chinchilla?

C ≈ 6·N·D, а правило держит D/N примерно постоянным. Тогда и N, и D растут как корень из C: в 100 раз больше вычислений — это примерно в 10 раз больше параметров и в 10 раз больше токенов.

От Ростка до передовых моделей

Поставим Ростка рядом с одной из крупнейших открытых моделей, чей рецепт подробно опубликован, — Llama 3 405B (Meta, 2024):

РостокLlama 3 405Bразница
Параметры17,3 млн405 млрд×23 400
Токенов обучения330 млн15,6 трлн×47 000
Вычисления, операций3,4·10¹⁶3,8·10²⁵×1,1 млрд
Контекст, токенов512128K×256
Словарь8 192128K×16
Железоодин ноутбук, 3 ч 41 миндо 16 тыс. GPU H100

Разрыв в вычислениях — в миллиард раз. Но посмотрите, чего в таблице нет: архитектуры. Llama 3 — трансформер-декодер с RMSNorm, позициями-поворотами (RoPE) и слоем SwiGLU, совсем как Росток. Она предсказывает следующий токен и минимизирует перекрёстную энтропию, совсем как Росток. Различия начинаются там, где кончается наш курс. Вот главные направления — коротко.

Данные

На передовом масштабе данные — главное ремесло. Триллионы токенов берутся из интернета, книг, кода и научных статей, и большая часть работы — фильтрация: выкинуть повторы, спам и машинный мусор, оставить познавательное и хорошо написанное, уравновесить языки и темы. Код и математику добавляют сознательно: похоже, они помогают рассуждать. С каждым годом растёт доля синтетических данных — текстов, написанных другими моделями; наши TinyStories — ранний пример. Глава 9 — та же работа в масштабе ноутбука.

После предобучения

Базовая модель продолжает текст, а полезного помощника из неё делают потом. Сначала SFT на примерах хороших ответов (глава 12), затем обучение на предпочтениях: люди сравнивают пары ответов, и модель подталкивают к тем, что понравились больше, — через модель награды и обучение с подкреплением (RLHF, InstructGPT, 2022) или напрямую, функцией потерь по парам (DPO, 2023; см. заметку в главе 13). Отсюда вежливость, отказ от опасных просьб и привычка признавать неуверенность.

Рассуждения

Если модель выписывает промежуточные шаги, прежде чем ответить, она решает задачи потруднее — это «цепочка рассуждений» (Вэй и др., 2022). С 2024 года модели учат этому целенаправленно: обучение с подкреплением награждает за верный итоговый ответ в задачах, где верность можно проверить автоматически, — в математике с известным ответом или в коде с тестами, — и модель сама учится думать дольше, проверять себя и отступать, если зашла в тупик (DeepSeek-R1, 2025). Такая модель тратит вычисления не только на обучение, но и на каждый ответ.

Длинный контекст

Росток видит 512 токенов, современные модели — сотни тысяч. Для этого нужны три вещи: позиции, которые ведут себя разумно за пределами обучающей длины (растяжение частот RoPE, как в YaRN, 2023), внимание, которое не держит в памяти матрицу $T \times T$ (FlashAttention, 2022), и KV-кэш, который помещается в память (меньше голов для ключей и значений — grouped-query attention, 2023).

Смесь экспертов

Зачем задействовать все параметры на каждом токене? В слое «смеси экспертов» сеть прямого распространения делится на много «экспертов», а маленький маршрутизатор отправляет каждый токен к одному или нескольким из них (Шазир и др., 2017; Switch Transformer, 2021). Модель хранит много параметров, но на каждый токен тратит лишь часть: знаний помещается больше, а каждый токен обходится почти так же дёшево. Так устроены многие из крупнейших открытых моделей наших дней.

Зрение и слух

Картинки и звук тоже становятся токенами. Изображение режут на кусочки, отдельный кодировщик превращает каждый кусочек в вектор (CLIP, 2021, научил такие кодировщики сопоставлять картинки с подписями), и эти векторы попадают в тот же трансформер рядом с токенами текста. Для трансформера фотография — просто ещё один участок последовательности.

Инструменты и память

Модель не может знать сегодняшнюю погоду или надёжно перемножать двенадцатизначные числа, но может научиться звать того, кто может. Её учат выдавать специальные токены, означающие «позови калькулятор с такими аргументами» или «поищи в документах» (Toolformer, 2023), а результат дописывается обратно в контекст. Поиск по документам (RAG, 2020) решает ту самую проблему знаний из главы 13: не впихивать факты в веса, а показать модели нужную страницу в нужный момент.

Как измерить модель

Ошибка на отложенном тексте, как на нашей лестнице, — самая честная мера, но о том, умеет ли модель отвечать на вопросы, она говорит мало. Поэтому исследователи используют бенчмарки — наборы задач с известными ответами. Простейшим даже не нужно генерировать текст. У вопроса несколько вариантов ответа, и мы проверяем, какой из них модель считает самым вероятным, складывая $\log p$ по токенам варианта, — то самое удивление из главы 2, только со знаком минус. Так устроены HellaSwag (2019) с концовками бытовых сценок и MMLU (2020) в варианте с выбором ответа — вопросы по 57 школьным и университетским предметам.

Устроим саду Ростка маленький экзамен такого рода: двенадцать вопросов уровня детской книжки, по четыре варианта, правильный всегда среди них.

Каждая модель оценивает каждый вариант; её ответ — тот, у которого log p больше. «На букву» делит log p на длину варианта, «сумма» — нет.

Итоговый Росток и его чат-версия отвечают правильно на все двенадцать вопросов при любом способе подсчёта, четырёхблочная gpt-4 — на одиннадцать; способ подсчёта начинает менять результат у моделей поменьше. Попробуйте оба способа. Сумма $\log p$ даёт преимущество коротким вариантам: каждый лишний токен добавляет удивления. Деление на длину убирает этот перекос, но может внести обратный. Именно поэтому популярный lm-evaluation-harness показывает обе цифры. Вот тот же эффект в миниатюре — с «моделью» из пар слов, построенной по шести коротким предложениям:

import math from collections import Counter text = """lily was thirsty so she drank a glass of water . tom was hungry so he ate a big red apple . the cat drank a glass of milk . the dog drank water from a bowl . mom made warm soup . lily drank a glass of water and tom drank a glass of water .""" words = text.split() pairs, count = Counter(zip(words, words[1:])), Counter(words) V = len(count) def logp(context, option): """log p(option | context) under a word bigram with add-one smoothing""" prev, total = context.split()[-1], 0.0 for w in option.split(): total += math.log((pairs[(prev, w)] + 1) / (count[prev] + V)) prev = w return total question = "the dog was thirsty so it drank a glass of" options = ["water", "sand", "warm soup from a bowl", "milk"] for o in options: lp = logp(question, o) print(f"{o:>22}: sum {lp:6.2f} per word {lp / len(o.split()):6.2f}")

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

Заглянуть внутрь

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

Двумя её инструментами вы уже пользовались. В главе 7 мы смотрели на карты внимания — куда смотрит каждый токен. В главе 8 логит-линза (nostalgebraist, 2020) позволила прочитать остаточный поток после каждого блока так, будто модели нужно ответить прямо там. А вот что есть ещё:

  • Цепи. Элхейдж с коллегами (2021) показали, как разложить маленький трансформер на пути, по которым информация течёт от токена к токену, и нашли индукционные головы — пары голов, реализующие правило «если раньше за A шло B, после A снова предскажи B». Олссон с коллегами (2022) связали эти головы со способностью модели учиться на примерах прямо в контексте.
  • Зонды. Обучите крошечный классификатор на остаточном потоке: может ли он по векторам понять, вопрос ли это, весел ли герой? Если может, информация там есть — хотя модель не обязательно ею пользуется.
  • Разреженные автокодировщики. Нейрон редко означает что-то одно. Разреженный автокодировщик раскладывает остаточный поток на множество редко срабатывающих «признаков», и многие из них действительно удаётся истолковать (Брикен и др., 2023; Темплтон и др., 2024, — на модели промышленного размера).
  • Вмешательства. Самая сильная проверка: изменить что-то внутри и посмотреть, что изменится снаружи. Выключить голову, подставить в остаточный поток вектор из другого текста — и измерить, как поменялся прогноз.

Эксперименты для начала

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

Вот эксперименты, для которых хватит одного ноутбука и кода этого курса. Каждый — настоящий открытый вопрос в масштабе Ростка.

  1. Размер словаря. Постройте токенизаторы на 4 096 и 16 384 токена и обучите Ростка с каждым. Словарь побольше делает текст короче, но добавляет параметров в эмбеддинг и затрудняет выучивание редких токенов. Сравнивайте ошибку на букву.≈3,5 ч на запуск; сначала попробуйте быструю версию на 50 млн токенов
  2. Глубина против ширины. Разложите примерно одно и то же число параметров по-разному: 4 блока ширины 512, 8 блоков ширины 384 и 16 блоков ширины 256. Какая модель учится быстрее и какая приходит к меньшей ошибке?три запуска по ≈3,5 ч
  3. Свой закон масштабирования. Обучите модели пяти размеров, от ширины 128 до 512, каждую примерно на 20 токенах на параметр, и подгоните степенной закон к итоговым ошибкам. Ложится ли Росток на вашу прямую?≈13 ч в сумме, две трети из них — на самый большой размер
  4. Смесь данных. Обучите Ростка только на TinyStories, только на SODA и на полной смеси. Меряйте ошибку на каждом источнике отдельно и задайте получившимся чат-моделям одни и те же вопросы.три запуска; этап чата добавляет минуты
  5. Абляции. Убирайте по одной детали: QK-norm, RoPE (совсем без сведений о позиции), общие веса входа и выхода, SwiGLU (замените его обычным MLP). Сколько даёт каждая деталь в таком масштабе?≈30 мин каждая на 50 млн токенов
  6. Muon против AdamW до конца. Мы сравнивали их на 10 млн токенов (глава 10). Сохранится ли преимущество Muon на полном запуске или сойдёт на нет?два полных запуска
  7. Дистилляция. Обучите маленького Ростка, 6 блоков ширины 256, не на следующем токене текста, а на всём распределении вероятностей sprout-base (Хинтон и др., 2015). Обгонит ли ученик модель того же размера, учившуюся только на тексте?один запуск плюс прямые проходы учителя
  8. Буквы вместо токенов. Обучите Ростка на символах (словарь из 97) за те же вычисления. Насколько он хуже на букву и в чём именно ошибается?≈4× больше шагов на тот же текст
  9. Ранг адаптера и забывание. Обучите пиратский адаптер с рангами 1, 4, 16 и 64 и для каждого измерьте ошибку на пиратских данных и удивление обычным историям, как в таблице из главы 13.минуты на адаптер
  10. Охота на индукционную голову. Подайте Ростку случайную последовательность токенов, повторённую дважды, и найдите головы, которые на второй копии смотрят на токен, стоявший сразу после прошлого появления текущего.вообще без обучения

Сколько займёт ваш эксперимент? Планировщик оценит это по формуле 6·N·D и скорости вашей машины. По умолчанию в нём скорость самого Ростка на M4 Pro; свою скорость train.py печатает в поле tok_s каждые сто шагов.

Заготовки — эксперименты из списка выше. Двигайте ползунки, чтобы придумать свою модель: параметры считаются ровно по архитектуре Ростка (голова размером 64, ширина SwiGLU ≈ 8/3 ширины модели).

В эксперименте с дистилляцией меняется только функция потерь. Вместо перекрёстной энтропии с одним правильным токеном ученика сравнивают со всем распределением учителя, смягчённым температурой $T$ (глава 11):

import torch.nn.functional as F def distill_loss(student_logits, teacher_logits, targets, T=2.0, mix=0.5): """Hinton et al. (2015): learn from the teacher's soft probabilities and the real text.""" V = student_logits.size(-1) student, teacher = student_logits.reshape(-1, V), teacher_logits.reshape(-1, V) # one row per token soft_teacher = F.softmax(teacher / T, dim=-1) log_student = F.log_softmax(student / T, dim=-1) kl = F.kl_div(log_student, soft_teacher, reduction='batchmean') * T * T # averaged over tokens ce = F.cross_entropy(student, targets.reshape(-1)) return mix * kl + (1 - mix) * ce

Множитель $T^2$ сохраняет масштаб градиентов мягкой части, когда вы меняете температуру. Всё остальное — train.py без изменений плюс один прямой проход учителя под torch.no_grad() на каждый батч.

Что почитать

Статьи — первоисточники этой области, и большинство читается легче, чем принято думать. Вот те, на которых стоит этот курс, по темам и с главой, где мы встретили каждую идею. Читать по порядку не нужно — начните с той, где речь о том, что удивило вас больше всего.

Основы

  • 1948A Mathematical Theory of Communication, Клод Шеннон.Энтропия и удивление — и первые языковые модели: Шеннон порождал «английский» по статистике букв и слов, совсем как наша биграмма. Главы 1–2.
  • 1986Learning representations by back-propagating errors, Румельхарт, Хинтон, Уильямс.Обратное распространение ошибки. Глава 4.
  • 2003A Neural Probabilistic Language Model, Бенджио и др.Окно из слов, эмбеддинги, скрытый слой — наши MLP. Главы 4–5.
  • 2013Efficient Estimation of Word Representations in Vector Space, Миколов и др.word2vec: смысл как геометрия. Глава 5.
  • 2014Adam: A Method for Stochastic Optimization, Кингма, Ба.И его исправление с раздельным затуханием весов: Decoupled Weight Decay Regularization, Лощилов, Хуттер (2017). Глава 10.
  • 2016Neural Machine Translation of Rare Words with Subword Units, Зеннрих, Хэддоу, Бёрч.BPE для языковых моделей. Глава 6.

Трансформер

  • 2014Neural Machine Translation by Jointly Learning to Align and Translate, Бахданау, Чо, Бенджио.Рождение внимания. Глава 7.
  • 2015Deep Residual Learning for Image Recognition, Хэ и др.Остаточные связи. Глава 8.
  • 2017Using the Output Embedding to Improve Language Models, Пресс, Вольф.Общие веса входа и выхода. Глава 8.
  • 2017Attention Is All You Need, Васвани и др.Сам трансформер. Главы 7–8.
  • 2019Root Mean Square Layer Normalization, Чжан, Зеннрих.RMSNorm. Глава 8.
  • 2020GLU Variants Improve Transformer, Шазир.SwiGLU. Глава 8.
  • 2021RoFormer: Enhanced Transformer with Rotary Position Embedding, Су и др.RoPE. Глава 8.

Языковые модели и масштаб

  • 2018Improving Language Understanding by Generative Pre-Training, Рэдфорд и др.GPT: предобучение на тексте, потом настройка.
  • 2019Language Models are Unsupervised Multitask Learners, Рэдфорд и др.GPT-2: одна модель, много задач без специального обучения.
  • 2020Language Models are Few-Shot Learners, Браун и др.GPT-3 и обучение на примерах прямо в запросе.
  • 2020Scaling Laws for Neural Language Models, Каплан и др.Степенные законы. Эта глава.
  • 2022Training Compute-Optimal Large Language Models, Хоффман и др.Chinchilla и 20 токенов на параметр. Эта глава.
  • 2023TinyStories: How Small Can Language Models Be and Still Speak Coherent English?, Элдан, Ли.Почему маленьким моделям подходят простые данные. Глава 9.
  • 2024The Llama 3 Herd of Models, команда Llama, Meta.Рецепт передовой модели, описанный необычно подробно.

Обучение и генерация

  • 2017Mixed Precision Training, Микевичюс и др.Обучение в 16-битных числах. Глава 10.
  • 2019The Curious Case of Neural Text Degeneration, Хольцман и др.Почему жадный выбор зацикливается — и top-p. Глава 11.
  • 2022FlashAttention, Дао и др.Внимание без матрицы T × T в памяти.
  • 2024Muon: An optimizer for hidden layers in neural networks, Келлер Джордан и др. (пост в блоге).Оптимизатор, которым учили Ростка. Глава 10.

Дообучение и выравнивание

  • 2015Distilling the Knowledge in a Neural Network, Хинтон, Виньялс, Дин.Дистилляция. Эта глава.
  • 2021LoRA: Low-Rank Adaptation of Large Language Models, Ху и др.Глава 13.
  • 2022Training language models to follow instructions with human feedback, Оуян и др.InstructGPT: SFT и RLHF. Главы 12–13.
  • 2023Direct Preference Optimization, Рафаилов и др.Обучение на предпочтениях без обучения с подкреплением. Глава 13.
  • 2023QLoRA: Efficient Finetuning of Quantized LLMs, Деттмерс и др.Дообучение больших моделей на одной карте. Глава 13.

За пределами Ростка

  • 2017Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer, Шазир и др.Смесь экспертов.
  • 2020Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks, Льюис и др.RAG.
  • 2021Learning Transferable Visual Models From Natural Language Supervision, Рэдфорд и др.CLIP: картинки и слова в одном пространстве.
  • 2022Chain-of-Thought Prompting Elicits Reasoning in Large Language Models, Вэй и др.
  • 2023Toolformer: Language Models Can Teach Themselves to Use Tools, Шик и др.
  • 2025DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning, DeepSeek-AI.Рассуждения, выученные из наград за верные ответы.

Оценка и интерпретируемость

  • 2019HellaSwag: Can a Machine Really Finish Your Sentence?, Зеллерс и др.
  • 2020Measuring Massive Multitask Language Understanding, Хендрикс и др.MMLU.
  • 2020interpreting GPT: the logit lens, nostalgebraist (пост в блоге).Глава 8.
  • 2021A Mathematical Framework for Transformer Circuits, Элхейдж и др.
  • 2022In-context Learning and Induction Heads, Олссон и др.
  • 2023Towards Monosemanticity: Decomposing Language Models With Dictionary Learning, Брикен и др.
  • 2023Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena, Чжэн и др.

А если хочется ещё раз посмотреть, как модель собирают руками, но в другом темпе, — видеокурс Андрея Карпатого Neural Networks: Zero to Hero и его репозиторий nanoGPT идут дорогой, очень похожей на нашу.

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

Росток сейчас

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

Помните, с чего всё началось? Когда вы пишете любому чат-боту, на той стороне раз за разом повторяется одна-единственная операция: модель смотрит на текст и угадывает, что будет дальше. Теперь вы знаете, из чего складывается эта догадка: из пар букв, которые мы сосчитали и превратили в вероятности; из удивления, ставшего функцией потерь; из терпеливого спуска с горы; из внимания, которое оглядывается на весь текст; из двадцати тысяч разговоров, научивших модель говорить в свой черёд. Гиганты собраны из тех же деталей. И когда в следующий раз большая модель ответит вам, вы будете знать, что происходит на той стороне.

Поговорите с Ростком напоследок — любым из трёх его голосов. А потом откройте код курса, посадите своё семечко и посмотрите, что из него вырастет. Спасибо, что растили Ростка вместе с нами.

Главы

  1. 0 Знакомство
  2. 1 Считаем буквы
  3. 2 Мера удивления
  4. 3 Градиентный спуск
  5. 4 Обратное распространение
  6. 5 Эмбеддинги
  7. 6 Токены
  8. 7 Внимание
  9. 8 Трансформер
  10. 9 Корпус
  11. 10 Обучение
  12. 11 Выборка
  13. 12 Разговор
  14. 13 LoRA
  15. 14 Что дальше
    1. Весь сад
    2. Законы масштабирования
    3. От Ростка до передовых моделей
    4. Как измерить модель
    5. Заглянуть внутрь
    6. Эксперименты для начала
    7. Что почитать
    8. Росток сейчас