Este repositorio contiene el código oficial utilizado para los experimentos de modelado de idiomas en los documentos:
En términos más generales, esto se puede usar como un kit de herramientas de modelado de idiomas en Pytorch para experimentar:
Transformadores estándar
Transformador-xl
Programadores de peso rápido con diferentes reglas de actualización y funciones de atención lineal :
Por ejemplo, algunas combinaciones dan como resultado modelos bien conocidos:
Este repositorio contiene dos implementaciones de pesos rápidos.
torch.autograd.Function personalizado (ver Utils/fast_weight.py) Si bien solo utilizamos la implementación de CUDA para todos nuestros experimentos finales (utilización de GPU más rápida/mejor), la versión torch.autograd.Function La versión de función puede ser útil para una prototipos rápidos con nuevas extensiones.
Este kit de herramientas requiere Pytorch torch y ninja Ninja (para compilar los núcleos Cuda).
Los experimentos para el papel se realizaron con Python 3.6 y Pytorch 1.4.0 (nota el 24 de agosto de 2023: el código también funciona con Python 3.11 y Pytorch 2.0.1+Cu117).
Las versiones más recientes de Pytorch aún no están bien respaldadas por este kit de herramientas que todavía usa torch.nn.DataParallel para el entrenamiento multi-GPU. Si realmente necesita usar una versión más reciente de Pytorch, consulte la documentación para usar torch.nn.parallel.DistributedDataParallel en su lugar. Con suerte, arreglaremos esto pronto, pero no podemos decir exactamente cuándo.
El conjunto de herramientas admite pesos y prejuicios para monitorear trabajos. Si lo usa, también instale wandb .
Esta repetición contiene muchas líneas de código tomadas y adaptadas de las siguientes fuentes:
Verifique los archivos en example_scripts para obtener instrucciones y ejemplos generales para capacitar y evaluar modelos.
@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}
}