Ce référentiel contient le code officiel utilisé pour les expériences de modélisation du langage dans le ou les documents:
Plus généralement, cela peut être utilisé comme boîte à outils de modélisation des langues à Pytorch pour expérimenter:
Transformers standard
Transformateur-xl
Programmeurs de poids rapide avec différentes règles de mise à jour et fonctions d'attention linéaire :
Par exemple, certaines combinaisons entraînent des modèles bien connus:
Cette dépôt contient deux implémentations de poids rapides.
torch.autograd.Function (voir utils / fast_weight.py) Bien que nous n'ayons utilisés l'implémentation CUDA que pour toutes nos expériences finales (utilisation de GPU plus rapide / bien meilleure), la version torch.autograd.Function peut être utile pour un prototypage rapide avec de nouvelles extensions.
Cette boîte à outils nécessite torch Pytorch et ninja (pour compiler les noyaux Cuda).
Les expériences du papier ont été réalisées avec Python 3.6 et Pytorch 1.4.0 (note le 24 août 2023: Le code fonctionne également avec Python 3.11 et Pytorch 2.0.1 + Cu117).
Les versions plus récentes de Pytorch ne sont pas encore bien prises en charge par cette boîte à outils qui utilise toujours torch.nn.DataParallel pour une formation multi-GPU. Si vous devez vraiment utiliser une version plus récente de Pytorch, vérifiez la documentation pour utiliser torch.nn.parallel.DistributedDataParallel à la place. Nous espérons que nous le réparerons bientôt, mais nous ne pouvons pas dire exactement quand.
La boîte à outils prend en charge les poids et les biais pour surveiller les emplois. Si vous l'utilisez, installez également wandb .
Cette reprise contient de nombreuses lignes de code prises et adaptées des sources suivantes:
Veuillez vérifier les fichiers sous example_scripts pour les instructions générales et les exemples pour former et évaluer les modèles.
@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}
}