Este repositório contém o código oficial usado para experimentos de modelagem de idiomas no (s) artigo (s):
De maneira mais geral, isso pode ser usado como um kit de ferramentas de modelagem de idiomas em Pytorch para experimentar:
Transformadores padrão
Transformer-xl
Programadores rápidos de peso com diferentes regras de atualização e funções de atenção linear :
por exemplo, algumas combinações resultam em modelos conhecidos:
Esta repositoria contém duas implementações de pesos rápidos.
torch.autograd.Function personalizada.autograd.function (consulte Utils/fast_weight.py) Enquanto usamos apenas a implementação do CUDA para todas as nossas experiências finais (utilização de GPU mais rápida/muito melhor), a versão torch.autograd.Function pode ser útil para uma prototipagem rápida com novas extensões.
Este kit de ferramentas requer pytorch torch e ninja Ninja (para compilar os kernels Cuda).
As experiências para o artigo foram realizadas com Python 3.6 e Pytorch 1.4.0 (nota em 24 de agosto de 2023: o código também funciona com Python 3.11 e Pytorch 2.0.1+Cu117).
As versões mais recentes do Pytorch ainda não são bem suportadas por este kit de ferramentas que ainda usa torch.nn.DataParallel para treinamento multi-GPU. Se você realmente precisar usar uma versão mais recente do Pytorch, verifique a documentação para usar torch.nn.parallel.DistributedDataParallel . Esperamos consertar isso em breve, mas não podemos dizer exatamente quando.
O kit de ferramentas suporta pesos e preconceitos para monitorar trabalhos. Se você o usar, também instale wandb .
Essa reposidade contém muitas linhas de código tiradas e adaptadas das seguintes fontes:
Verifique os arquivos em example_scripts para obter instruções e exemplos gerais para treinar e avaliar 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}
}