指数级加速的BERT语言模型训练与推理方案
UltraFastBERT是一个开源项目,旨在通过创新的快速前馈(FFF)层设计实现BERT语言模型的指数级加速。项目提供了完整的训练代码,以及在CPU、PyTorch和CUDA平台上的高效实现。包含训练文件夹、各平台基准测试代码,以及UltraFastBERT-1x11-long模型的配置和权重,可通过HuggingFace轻松加载使用。研究人员可以方便地复现结果,并进一步探索该突破性技术在自然语言处理领域的广泛应用潜力。
论文"指数级加速语言建模"的代码仓库
https://arxiv.org/abs/2311.10770
training
文件夹包含2023年10月初克隆的crammedBERT仓库。进行了一些新的配置和小修改,以启用FFF的使用。提供了一个掩码实现(即一个FFF实现,它不提供速度优势,但通过掩码模拟选择性激活神经元),用于训练和下游微调。
benchmark_cpu
文件夹包含使用Intel MKL 2023.2.0实现的FFF推理加速CPU版本,以及传统FF层的基准DMM实现的C++代码。
benchmark_pytorch
文件夹包含FF和FFF推理的"原生融合"和"PyTorch BMM"实现的C++代码。
benchmark_cuda
文件夹包含FF和FFF的"朴素CUDA"实现的C++/CUDA内核代码。
UltraFastBERT-1x11-long的配置和权重可在HuggingFace上找到:
https://huggingface.co/pbelcak/UltraFastBERT-1x11-long
这些文件是使用training/load_local_model.py
并设置impl.push_to_huggingface_hub=True
生成并上传的。
UltraFastBERT-1x11-long作为一个模型,是我们对crammedBERT设置的小扩展的实例。
你可以直接进入training
目录,按照crammedBERT README中给出的步骤使用HuggingFace的AutoTokenizer
和AutoModelForMaskedLM
,不同之处在于你要使用UltraFastBERT-1x11-long,而不是crammedBERT。
创建一个新的Python/conda环境,或者使用一个没有安装原始cramming
项目任何版本的环境。如果你不小心使用了原始cramming仓库代码,而不是本项目/training
文件夹中提供的代码,transformers