项目介绍: HAT (Hardware Aware Transformers)
项目概述
HAT(Hardware-Aware Transformers)是一个创新的项目,旨在为自然语言处理任务提供高效的硬件适应型Transformer模型。该项目通过对超级Transformer网络(SuperTransformer)进行专门的搜索,以硬件延迟反馈为指导,为每种硬件找到最快的模型(SubTransformer)。这样的搜索成本比传统方法降低了10000倍以上。HAT模型在无需牺牲性能的基础上,实现了高达3倍的速度提升和3.7倍的模型尺寸缩减。
项目优势
- 快速高效:HAT模型显著提高了训练和推理的速度,同时大幅减少了模型大小。
- 硬件适应性强:针对不同的硬件架构进行特别优化,通过最小化的搜索机制,实现最佳性能。
- 丰富的资源支持:提供了基于PyTorch的代码和50个预训练模型,方便研究人员和开发者快速上手。
- 新闻报道:HAT项目被多家知名媒体报道,如VentureBeat和MIT News,以表彰其对提升AI技术效率和减少碳足迹的贡献。
安装与使用
安装步骤
您可以通过以下步骤从源代码安装来进行本地开发:
git clone https://github.com/mit-han-lab/hardware-aware-transformers.git
cd hardware-aware-transformers
pip install --editable .
数据准备
对于不同的任务,HAT提供了数据集的下载和预处理脚本。可以选择自行预处理数据,也可以下载预处理好的数据以节省时间。
测试模型
HAT提供针对机器翻译任务的预训练模型,方便用户进行评估。通过运行相应的脚本,可以测试模型的BLEU分数、计算延迟以及衡量模型的大小和计算量(FLOPs)。
训练步骤
-
训练超级Transformer:这是一个包含多个共享权重的子Transformer的超级网络。默认情况下,WMT任务会使用8个GPU进行训练,IWSLT任务则使用单个GPU。
-
进化搜索:在训练好的超级Transformer中进行进化搜索,这个过程会凭借硬件的延迟约束进行。通过训练延迟预测器,可以快速获得准确的延迟反馈。
-
训练搜索得出的子Transformer:最后,对搜索得到的特定子结构Transformer进行从头到尾的全面训练。
测试与性能评估
训练完成后,可以通过提供的脚本对模型进行一系列的性能测试,包括BLEU分数、延迟、模型尺寸和FLOPs计算。
技术依赖
HAT依赖于如下主要技术:
- Python 3.6或更高版本
- PyTorch 1.0.0或更高版本
- configargparse 0.14或更高版本
- 对于新模型的训练,还需要NVIDIA GPU和NCCL库
相关研究
该项目与多项高效深度学习的工作有联系,比如MicroNet、Lite Transformer、AMC、Once-for-All和ProxylessNAS等,这些研究致力于提升模型效率和加速。
项目信息
如果对此项目有任何疑问,欢迎联系王汉睿(Hanrui Wang)并通过电子邮件或GitHub问题进行讨论,同时热烈欢迎贡献代码的请求。
项目许可
HAT项目按MIT许可证开放发布,可以自由使用和贡献。
致谢
感谢fairseq作为本项目的基石支持,提供了强大的工具链和框架。
这个项目通过硬件感知的策略为自然语言处理领域带来了新的视角,使得Transformer模型的应用在多种硬件条件下更加高效和经济。