nanoGPT: токены и данные на примере shakespeare_char

Урок 9 из 16 курса «Нейросети с нуля: по открытому коду Андрея Карпати»: неофициальный курс AI University по открытому коду (MIT). Урок входит в платный доступ; первые уроки курса бесплатно.

О чём урок

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 делает всю подготовительную работу перед обучением…

План урока

  1. Что такое nanoGPT и зачем начинать с символов
  2. prepare.py: от текста к словарю символов
  3. Почему bin-файлы и np.memmap, а не просто список чисел
  4. get_batch: один вызов, block_size задач
  5. Конфиг train_shakespeare_char.py и configurator.py
  6. Запуск на практике
  7. Наш пример: готовим собственный текст
  8. Попробуйте сами

Урок входит в полный доступ. Полный текст и видео открываются после оплаты. Первые уроки каждого курса бесплатны.

Полезные гиды