이 저장소에는 논문의 언어 모델링 실험에 사용되는 공식 코드가 포함되어 있습니다.
보다 일반적으로, 이것은 Pytorch의 언어 모델링 툴킷으로 사용하여 실험을 수행 할 수 있습니다.
표준 변압기
변압기 -XL
업데이트 규칙이 다르고 선형주의 기능이 다른 빠른 웨이트 프로그래머 :
예를 들어, 일부 조합은 잘 알려진 모델을 초래합니다.
이 repositiory에는 빠른 가중치의 두 가지 구현이 포함되어 있습니다.
torch.autograd.Function (Utils/Fast_weight.py 참조) 우리는 모든 최종 실험 (더 빠르거나 훨씬 더 나은 GPU 활용)에 CUDA 구현 만 사용했지만 torch.autograd.Function 버전은 새로운 확장 기능을 사용한 빠른 프로토 타이핑에 유용 할 수 있습니다.
이 툴킷에는 Pytorch torch 와 Ninja ninja (Cuda 커널을 컴파일하기 위해)가 필요합니다.
이 논문에 대한 실험은 Python 3.6 및 Pytorch 1.4.0으로 수행되었다 (2023 년 8 월 24 일 참고 : 코드는 Python 3.11 및 Pytorch 2.0.1+Cu117에서도 작동 함).
보다 최근의 Pytorch 버전은 여전히 멀티 GPU 교육을 위해 torch.nn.DataParallel 사용하는이 툴킷에서 아직 잘 지원되지 않습니다. 최신 버전의 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}
}