О чём урок
nanoGPT, третий проект курса, устроен иначе, чем micrograd и makemore: это не учебная игрушка, а компактная, но полноценная реализация GPT, на которой можно и отладить идею за десять минут на CPU, и дотренировать настоящую GPT-2 на кластере GPU. Прежде чем говорить о внимании и трансформерных блоках, нужно разобраться, откуда вообще берутся числа, которые видит модель. В этом уроке мы проследим весь путь от сырого текстового файла до тензора x, y, который получает нейросеть на вход: словарь символов, кодирование, бинарный формат на диске и сборку случайного батча. После урока вы сможете подготовить для nanoGPT произвольный текст на русском языке и объяснить, почему в одном примере длины block_size скрыто сразу block_size обучающих задач.
Неофициальный курс AI University по открытому коду (MIT). В уроке приводится код из karpathy/nanoGPT © Andrej Karpathy, лицензия MIT; комментарии переведены на русский, объяснения написаны нашей командой. Курс не связан с автором кода и не одобрен им.
nanoGPT, модель и цикл обучения, занимают два файла: model.py около 300 строк и train.py примерно такого же размера. В этом нет упрощения в ущерб качеству: тот же код, только с другими числами в конфиге, воспроизводит GPT-2 на 124 миллиона параметров. Разница между игрушечным запуском и настоящим обучением на видеокарте, это разница в конфигурационном файле, а не в архитектуре.
Начинать с полноразмерного текстового корпуса и подсловной токенизации неудобно: нужно скачивать гигабайты данных, обучать токенизатор, ждать часы, прежде чем увидеть первый результат. Поэтому первая связка в nanoGPT, это shakespeare_char: около мегабайта пьес Шекспира, прочитанных посимвольно. Такой датасет помещается в оперативную память целиком, модель на нём переобучается за несколько минут даже на CPU, а весь путь данных виден и прощупывается руками. Это удобный полигон, чтобы разобраться в токенах и батчах, прежде чем переходить к self-attention в следующем уроке.
Файл data/shakespeare_char/prepare.py делает всю подготовительную работу перед обучением…
План урока
- Что такое nanoGPT и зачем начинать с символов
- prepare.py: от текста к словарю символов
- Почему bin-файлы и np.memmap, а не просто список чисел
- get_batch: один вызов, block_size задач
- Конфиг train_shakespeare_char.py и configurator.py
- Запуск на практике
- Наш пример: готовим собственный текст
- Попробуйте сами
Урок входит в полный доступ. Полный текст и видео открываются после оплаты. Первые уроки каждого курса бесплатны.