Базовая модель
Пре-обучение нейросети.
Цель данного этапа, дать максимальное количество знаний, насытить модель, чтобы у неё появилась широкая эрудиция.
Но откуда взять информацию, чтобы модель много-много знала и была супер эрудированная? 💁
Может дать ей почитать все энциклопедии мира?
В целом верно, но есть способ лучше. Максимально широкие, правда, не всегда глубокие знания, доступны бесплатно в интернете. Есть известный инструмент из веб-разработки — скрейпинг. Он-то нам и пригодится!
Формирование датасета.
Скрейпим весь интернет за рядом вручную прописанных исключений.
— Игнорируем 18+, темы по изготовлению взрывчатки, ядов, упоминанию кто ответственный за 11 сентября и т.д.
Таким образом, весь текст с попавшихся сайтов заносится в один .txt файл, игнорируя картинки и видео. Токенизируем результат и получаем наш датасет, фундамент знаний, эрудицию нашей нейросети!
И вот теперь можем начинать само пре-обучение.
Мы буквально настраиваем веса (значения нейронов) модели так, чтобы повышалась вероятность прогнозирования нужного токена.
Как это? 🤔
Представь, у нас есть не законченное предложение, в котором 2 токена уже известны. Надо понять какой третий.

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

В процессе анализа текстов из интернета, она, ну например, поняла что токен означающий «Ура» 🫡 появляется чаще всего. Она зафиксировала эту закономерность и по итогу пре-обучения, обновила вероятности.

Держу тебя за руку.
Где магия?
В датасет (текст из интернета) попало несколько параграфов про день победы. Модель на этапе пре-обучения поняла какие слова (токены) в этом предложении есть, изучила и запомнила их порядок, их смысловую связь в предложении. Векторная близость токена «Ура» и токена «Победа» повысилась.
То есть, модель настроила веса в матрицах эмбедингов так, чтоб повторяющиеся (применяющиеся, используемые, соотносящиеся) по смыслу слова имели большую вероятность прогноза рядом друг с другом.
— Предложения со звёздочкой, нормально если пока не понятно.
Фух 😳
Теперь если человек напишет «День Победы», токен «Ура» будет иметь наибольшую вероятность прогноза, потому что модель видела такое сочетание слов в датасете (скорее всего не раз) и веса модели в процессе пре-обучения уже настроены.
Такое улавливание смысла и изменение весов для повышения вероятности прогноза нужного по смыслу токену происходит для всего текстового массива вообще.
Данный этап занимает больше всего времени по сравнению с остальными и является самым дорогим. ‼️
Сам подумай, надо чтоб смысловая связь между токенами (словами) сформировалась вообще почти по всем используемым текстовым сочетаниям!
Ещё недавно, для выполнения этапа пре-обучения требовались месяцы беспрерывной работы кластеров GPU стоимостью сотни миллионов долларов.
А ведь ещё и за электричество платить ₽₽₽.
Вопрос о недавнем.
Из-за дороговизны, пре-обучение проводили раз в полгода или пару месяцев. Именно поэтому если 2 года назад мы бы спросили ChatGPT:
— “Какая завтра погода в Москве?”
он бы не ответил на вопрос, а выдал несуразицу (галлюцинировал). Потому что на этапе пре-обучения не было информации для ответа на этот вопрос.
— Хмм, а что будет если задать такой вопрос современной модели?
Фундаментально ничего. Модель также не может получить знания будущего на этапе пре-обучении. Но модель научили понимать, что ей не хватает знаний и автоматически делать поиск в интернете 😊
Замечали, как появляется вращающейся кружок и надпись “Поиск” ? 🔍
Процесс поиска занимает время и ответ модель даёт не так быстро, как обычно. Конечно, она буквально гуглит заданный вопрос, читает поисковую выдачу и на основе полученной там информации формирует ответ пользователю в диалоговое окно, с указанием использованных ссылок.
Итого.
Пре-обучение — фундаментальный этап, где модель получает свою эрудицию. Занимает очень много времени, в течение которого веса модели настраиваются таким образом, чтобы исходя из запроса пользователя, прогноз того или иного токена соответствовал лейблу — правильному ответу, увиденному в интернете.
Значит ли это, что модель готова общаться и выдавать человеко-понятные ответы?
— Нет.
Она ведёт себя как 2 летний ребенок, которому закачали в голову весь интернет.
Много знает, но мысли не формулирует, изъясняться не умеет. Как это выглядит?
Пообщаться с базовой моделью, прошедшей только этап пре-обучения можно тут.
(нужно регистрироваться)
А для того чтобы большая языковая модель начала общаться по человечески, нужен следующий этап: настройка под присмотром (Supervised Fine Tuning).
Об этом поговорим далее.