Глава 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 загрузится в браузер при первом запуске. Попробуйте:
Этот крошечный подсчёт — зародыш первой модели, которую мы построим в следующей главе. Код можно менять: вставьте свою фразу и запустите снова.
Что на самом деле выдаёт языковая модель, когда видит текст?
Модель выдаёт распределение вероятностей по всему словарю. Какой токен взять из этого распределения — отдельное решение, и принимать его можно по-разному.
Весь код курса — настоящий: это ровно те файлы, которыми обучали Ростка. Их можно скачать со страницы курса и повторить каждый шаг у себя.
Росток сейчас
У нас ещё нет ни строчки своей модели — только цель. Вот она: готовый Росток, дообученный разговаривать. Поговорите с ним по-английски — вот куда мы идём. К концу курса вы соберёте такого же и будете понимать, что происходит у него внутри на каждом шаге. Первый шаг сделаем в следующей главе: посчитаем, какая буква за какой идёт, и эта таблица станет первой версией Ростка, которая по-настоящему пишет.