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

Глава 0 из 14 15 мин

Знакомьтесь: Росток

Языковая модель — это машина, которая угадывает следующее слово. Посмотрим, как она это делает, и договоримся, что будем строить.

В этой главе

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

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

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

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

Машина, которая продолжает текст

Представьте, что вы читаете фразу и она обрывается: «Жили-были дед да…». Вы почти наверняка продолжите: «баба». А фразу «Вечером я пошёл в…» можно закончить по-разному: «магазин», «кино», «парк». Одного правильного слова здесь нет — зато есть ощущение вероятностей: какие продолжения подходят лучше, какие хуже.

Языковая модель делает то же самое, только явно и с числами. На входе у неё текст, на выходе — список всех кусочков текста, которые она знает, и у каждого число от 0 до 1: насколько вероятно, что следующим будет именно он. Все эти числа в сумме дают единицу.

Побудьте моделью

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

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

Заметьте две вещи. Во-первых, Росток почти никогда не уверен на 100%. Даже после «Once upon a time, there was a little» он оставляет место и для «girl», и для «boy», и для «dog». Во-вторых, его догадки разумны. Никто не объяснял ему грамматику или сюжеты сказок — он просто прочитал сотни миллионов слов и запомнил, что обычно идёт за чем.

Языковая модель не знает «правильного ответа». Она знает распределение: сколько шансов у каждого кусочка текста стать следующим.

Слово за словом

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

Попробуйте сами. Нажимайте «Бросить кубик», чтобы Росток выбрал слово случайно, но с учётом вероятностей, — или выбирайте продолжение сами, нажимая на строки.

Каждая строка — вариант следующего токена и его вероятность. «Самый вероятный» всегда берёт верхнюю строку, «кубик» тянет жребий.

Вы, наверное, заметили, что иногда на выбор предлагается не целое слово, а его кусочек или знак препинания. Модель работает не со словами, а с токенами — частыми кусочками текста. У Ростка их 8 192: частые слова целиком, вместе с пробелом перед ними (« the», « happy»), части редких слов, знаки препинания, цифры и несколько служебных меток. Как получается такой словарь, разберём в главе 6.

А почему бы всегда не брать самое вероятное слово?

Попробуйте нажимать только «Самый вероятный»: получится самая предсказуемая история на свете — про девочку Лили и её большой красный мяч, — и каждый раз ровно одна и та же. Маленьким моделям из первых глав приходится хуже: если всегда брать верхнее слово, они быстро начинают ходить по кругу. Люди ведь тоже не всегда говорят самое предсказуемое. Немного случайности делает текст живым, а слишком много — бессвязным. Как найти баланс — температура, top-k, top-p, — расскажет глава 11.

Что внутри

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

Самое удивительное в этой схеме — то, чего в ней нет: ни правил языка, ни словаря значений, ни списка фактов. Только 17 миллионов чисел — параметров — и простая арифметика: умножить, сложить, взять экспоненту. Всё, что Росток «знает», хранится в значениях этих чисел. А подбирает их обучение: мы показываем модели текст, смотрим, насколько она ошиблась, и чуть-чуть подкручиваем каждое число в сторону правильного ответа. Десять тысяч раз подряд.

Насколько он маленький

17 миллионов — это много или мало? Для сравнения — знаменитые модели последних лет. Каждая точка на картинке — один Росток.

Мы выбрали такой размер нарочно. Модель на 17 миллионов параметров можно обучить за одну ночь на обычном ноутбуке — Росток учился 3 часа 41 минуту на Mac с чипом M4 Pro, — и она достаточно лёгкая, чтобы работать в браузере на телефоне. При этом принципы у неё ровно те же, что у гигантов: тот же трансформер, те же приёмы обучения, то же дообучение для разговора. Разница в масштабе, а не в устройстве.

Честно о границах: Росток умеет писать простые истории, поддерживать болтовню, шутить на уровне детской книжки и находить добрые слова, когда вам грустно. Он плохо считает (спросите его «What is 7 plus 5?»), путает факты (вполне может сообщить, что столица Франции — Рим), не знает новостей и понимает только английский. Всё это — прямое следствие размера и данных, и к концу курса вы будете точно знать почему.

Как устроен учебник

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

  • Виджеты — с ними можно играть: двигать ползунки, нажимать, выбирать. Почти все они считают по-настоящему, прямо на вашем устройстве.
  • Заметки — «Математика», «Python» и «Исследователю» — для тех, кто хочет копнуть глубже. Их можно пропускать.
  • Код на Python. Многие ячейки можно запустить прямо на странице: Python загрузится в браузер при первом запуске. Попробуйте:
text = "once upon a time there was a little girl" counts = {} for letter in text: counts[letter] = counts.get(letter, 0) + 1 # the five most common letters for letter, n in sorted(counts.items(), key=lambda kv: -kv[1])[:5]: print(repr(letter), n)

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

Что на самом деле выдаёт языковая модель, когда видит текст?

Модель выдаёт распределение вероятностей по всему словарю. Какой токен взять из этого распределения — отдельное решение, и принимать его можно по-разному.

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

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

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

Главы

  1. 0 Знакомство
    1. Машина, которая продолжает текст
    2. Побудьте моделью
    3. Слово за словом
    4. Что внутри
    5. Насколько он маленький
    6. Как устроен учебник
    7. Росток сейчас
  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 Что дальше