Этот репозиторий содержит официальный код, используемый для экспериментов по языковому моделированию в статье:
В целом, это может быть использовано в качестве инструментария для моделирования языка в Pytorch для экспериментов с:
Стандартные трансформаторы
Трансформатор-XL
Программисты быстрого веса с различными правилами обновления и линейными функциями внимания :
Например, некоторые комбинации приводят к хорошо известным моделям:
Эта репозитивность содержит две реализации быстрых весов.
torch.autograd.Function (см. Utils/fast_weight.py) В то время как мы использовали реализацию CUDA только для всех наших окончательных экспериментов (более быстрое/гораздо лучшее использование графических процессоров), версия torch.autograd.Function может быть полезна для быстрого прототипирования с новыми расширениями.
Этот набор инструментов требует torch питла и ninja ниндзя (для компиляции ядра Cuda).
Эксперименты для бумаги проводились с Python 3.6 и Pytorch 1.4.0 (примечание 24 августа 2023 года. Код также работает с Python 3.11 и Pytorch 2.0.1+Cu117).
Более поздние версии Pytorch еще не поддерживаются этим инструментом, который по-прежнему использует torch.nn.DataParallel для обучения с несколькими GPU. Если вам действительно нужно использовать более недавнюю версию Pytorch, проверьте документацию, чтобы использовать torch.nn.parallel.DistributedDataParallel . Мы надеемся, что скоро это исправим, но мы не можем точно сказать, когда.
Инструментарий поддерживает вес и предубеждения для мониторинга заданий. Если вы используете его, также установите wandb .
Эта репутация содержит много строк кода, взятого и адаптированного из следующих источников:
Пожалуйста, проверьте файлы в соответствии с example_scripts для общих инструкций и примеров для обучения и оценки моделей.
@inproceedings{schlag2021linear,
title={Linear Transformers Are Secretly Fast Weight Programmers},
author={Imanol Schlag and Kazuki Irie and J"urgen Schmidhuber},
booktitle={Proc. Int. Conf. on Machine Learning (ICML)},
address = {Virtual only},
month = jul,
year={2021}
}
@article{irie2021going,
title={Going Beyond Linear Transformers with Recurrent Fast Weight Programmers},
author={Kazuki Irie and Imanol Schlag and R'obert Csord'as and J"urgen Schmidhuber},
journal={Preprint arXiv:2106.06295},
year={2021}
}