Обратите внимание: эта работа может стать достаточно серьёзным испытанием. Здесь не будет проверяться качество получаемых моделей, но могут задаваться вопросы касательно кода и используемых подходов.
Задание
- познакомиться с моделями в архитектуре Transformer;
- реализовать с использованием слоёв из PyTorch decoder-only модель (GPT);
- обучить модель для генерации продолжения истории по её началу.
Ход работы
- Воспользуйтесь набором данных Tiny stories. Это короткие истории на английском языке с ограниченным вокабуляром, полученные с использованием ChatGPT. Датасет уже разбит на обучающую и тестирующую выборки, используйте их. Можете использовать любой другой датасет, состоящий из текстов на естественном языке.
- Загрузите данные с использованием torchdata. Выполните токенизацию и нумерацию токенов с использованием torchtext. Разделите каждую историю из набора данных на начало и конец (можно на равные части).
- Выполните padding последовательностей (чтобы все последовательности были одной длины). По желанию сформируйте батчи (можно “скармливать” последовательности по одной для упрощения задачи).
- Реализуйте Decoder с использованием любых слоёв фреймворка PyTorch. Запрещено использовать nn.Transformer из torchtext. Можно реализовать самовнимание с одной головой для упрощения задачи. Объедините несколько декодировщиков в одну модель.
- Выполните обучение модели. Оцените результаты инференса на нескольких примерах из тестирующий выборки. Попробуйте генерировать собственные истории!
Критерии приема работы
- набор данных загружен и обработан с использованием torchdata и torchtext;
- реализована decoder-only модель в архитектуре;
- модель обучена и протестирована (критерий засчитывается, если обучение проходит без ошибок; на качество не смотрим).
Материалы