最近在工业界与学术界,最热门的方向莫过于预训练语言模型。而具有百亿乃至千亿参数的大规模预训练语言模型,更是业界与学术界发力的热点。
但现在大模型的应用却有着较高的门槛,排队申请或需要付费的API、较长的模型响应速度、推理所需要的较为昂贵的算力资源……种种因素都影响着大模型的快速应用与落地。对于普通的研究者与开发者来说,大模型可以说是看得见,却很难摸得着。
近日,清华大学自然语言处理实验室团队与北京智源研究院联合发布了一款低资源大模型推理工具包BMInf,在最低配置为NVIDIA GTX 1060 6G的千元级显卡上便可以进行百亿模型的高效推理。BMInf全名为Big Model Inference,它具有如下特点:
1、硬件友好。BMInf最低支持在NVIDIA GTX 1060单卡运行百亿大模型,使用更好的GPU会有更好的运行性能。在显存支持进行大模型推理的情况下(如V100或A100显卡),BMInf的实现较现有PyTorch版本仍有较大性能提升。
2、开源共享。模型参数开源共享,用户在本地即可部署运行,无需访问或申请API。
3、能力全面。支持生成模型CPM1 [1]、通用模型CPM2 [2]、对话模型EVA2 [3],模型能力覆盖文本补全、文本生成与对话。
4、模型升级。基于持续学习推出百亿模型新升级CPM2.1,文本生成能力大幅提高
5、应用便捷。基于工具包可以快速开发大模型相关下游应用。
项目地址:https://github.com/OpenBMB/BMInf
对于大模型使用感兴趣的同学,快来试用体验吧!
使用方式
工具包的使用安装较为便捷,官方README里提供了pip、源代码与Docker三种安装方式。
图1 工具包三种安装方式
安装完成后,便可以通过运行examples里面的脚本来体验大模型的快速推理了。运行过程中工具包首先会自动下载模型,之后便能够为事先预设的句子生成预测的结果
图2 工具包运行演示
(样例可以说是紧贴时事了,不过模型为特定日门票的定价倒是便宜了一些)
除此之外,工具包还提供了基于三种模型的网页版展示Demo,用户可以方便地通过本地运行服务器来可视化地体验大模型的推理结果。目前Demo提供了三项功能,分别是文本填空、智能对话与故事生成,通过网站用户可以非常快捷地体验大模型的趣味应用。
图3 利用文本填空功能进行工具包起名
图4 以“哈利波特第一次去霍格沃茨魔法学校上学,地址在北京通州”开头生成故事
背后技术
项目的官方文档中以CPM2-11B(悟道·文源)模型为例介绍了工具包背后所用到的技术。
具体来说,CPM2-11B是一个巨大的预训练语言模型,它包含了110亿参数,总共的模型文件大小达到了22GB。对于一块普通的机械硬盘来说,光是读取这样大小的模型就已经会花费数分钟的时间,更不用说将这样庞大的数据放进内存和GPU中进行后续的运算。
在工具包的设计过程中,开发者预设了GTX 1060 6GB显存和16GB内存这样的最低配置要求。开发者使用了一系列的技术让一个大规模的预训练语言模型可以运行在一台普通的电脑上,并进行相关的推理运算。
模型压缩
如果不做任何特殊处理,运行一个22GB的模型需要一块显存大小至少为22GB的GPU。满足这样条件的GPU通常是很昂贵的(例如 V100 32GB, A100, RTX 3090,市场价均超过2万元),为了能让模型在更小显存的GPU上运行,开发者在保留模型原有结构的基础上,将模型中占比最大的线性层参数(占比99%)从16比特浮点数转换为了int8格式。为了让压缩后的模型更贴近于原来的效果,开发者在将参数转换后进行了几千次迭代的微调让模型适应新的参数精度,微调后的模型基本上已经达到了和原始模型相近的能力。在具体的PPL指标中,压缩后的模型相比于压缩前只相差了5~10左右。
显存调度
在使用了模型压缩技术后,原本大小22GB的模型被压缩到了11GB,对于NVIDIA旗舰级别GPU来说(如GTX 1080Ti, RTX 2080Ti),11GB显存已经是可以摸到的门槛了,但是考虑到在推理过程中还需要使用一些额外的空间来存储中间变量,这样的显存容量依然不够。另外,能够拥有这样旗舰级别显卡的个人用户仍然较少,像GTX 1060 6G这样甜点级的GPU有着更加广泛的市场占有率。
要让一个11GB大小的模型运行在显存容量只有6GB的GPU上,开发者使用了显存和内存的优化与调度技术。在运行过程中将需要用于进行运算的模型参数提前准备好并放置在显存中,而对于暂时不需要用到的部分,则放置在CPU内存中。
图5 模型中不同层参数的调度示意
在具体的实现过程中,开发者使用了两个独立的内存池,交替地用于计算和加载参数,并通过将计算的时间和参数加载的时间重叠来提升整体的推理效率。通过调整每次加载和运算的层数,可以将大模型适配到不同显存容量的GPU。实验表明,将更多的模型层驻留在GPU中通常可以带来更好的效率。在整个模型推理的过程中,瓶颈往往在于内存和显存的拷贝,这也是工具包之后会优化的方向。
性能测试
开发者在不同NVIDIA显卡上进行了百亿模型解码的速度测试。即使在1060显卡上,模型仍然能够达到1.6个字符每秒的解码速度,达到了类似于打字机一样的运行效率。拥有较强性能显卡的用户仍然会获得更快的解码速度。在支持直接运行大模型推理的显卡上(如单卡V100或A100),BMInf的解码速度仍明显优于现有的基于PyTorch的实现(注:该PyTorch实现仍使用公开版本模型参数)。
图6 工具包在不同显卡上的解码速度测试
参考文献
1. CPM: A Large-scale Generative Chinese Pre-trained Language Model. Zhengyan Zhang, Xu Han, Hao Zhou, Pei Ke, Yuxian Gu, Deming Ye, Yujia Qin, Yusheng Su, Haozhe Ji, Jian Guan, Fanchao Qi, Xiaozhi Wang, Yanan Zheng, Guoyang Zeng, Huanqi Cao, Shengqi Chen, Daixuan Li, Zhenbo Sun, Zhiyuan Liu, Minlie Huang, Wentao Han, Jie Tang, Juanzi Li, Xiaoyan Zhu, Maosong Sun. 2020.
2. CPM-2: Large-scale Cost-efficient Pre-trained Language Models. Zhengyan Zhang, Yuxian Gu, Xu Han, Shengqi Chen, Chaojun Xiao, Zhenbo Sun, Yuan Yao, Fanchao Qi, Jian Guan, Pei Ke, Yanzheng Cai, Guoyang Zeng, Zhixing Tan, Zhiyuan Liu, Minlie Huang, Wentao Han, Yang Liu, Xiaoyan Zhu, Maosong Sun. 2021.
3. EVA: An Open-Domain Chinese Dialogue System with Large-Scale Generative Pre-Training. Hao Zhou, Pei Ke, Zheng Zhang, Yuxian Gu, Yinhe Zheng, Chujie Zheng, Yida Wang, Chen Henry Wu, Hao Sun, Xiaocong Yang, Bosi Wen, Xiaoyan Zhu, Minlie Huang, Jie Tang. 2021.
团队招聘
BMInf由智源研究院语言大模型加速技术创新中心OpenBMB团队开发与维护,创新中心负责人是智源青年科学家、清华大学副教授刘知远。OpenBMB全称为Open Lab for Big Model Base,团队目前主要由清华大学自然语言处理实验室成员组成,团队过去两年中陆续推出了悟道·文源、CPM等知名大规模预训练语言模型(https://github.com/TsinghuaAI/CPM),受到业界的广泛关注与好评。 
智源研究院语言大模型加速技术创新中心OpenBMB旨在打造大规模预训练语言模型库与相关工具,加速百亿级以上大模型的训练、微调与推理,降低大模型使用门槛,在此基础上依托开源社区进一步推动语言大模型相关生态发展,实现大模型的标准化、普及化和实用化。在此欢迎广大志同道合的朋友加入创新中心和OpenBMB,共同探索大规模预训练语言模型加速技术,让大模型“飞入寻常百姓家”。
NLP系统工程师(全职/实习)
工作内容:
开发大规模预训练语言模型训练、部署、微调系统,主要涉及功能实现、性能优化、系统调优、硬件适配等工作。在工作的过程中,需要根据具体任务的需求,查阅相关资料和文献,并结合实际情况实现相应技术。
能力需求:
1. 熟练掌握C语言和Python;
2. 熟悉CUDA计算架构,拥有CUDA相关编程经验;
3. 了解NLP领域重要任务、主流模型结构;
4. 能够熟练阅读外文文献、文档和相关社区论坛内容,可以针对自己的需要检索并学习相关知识;
5. 有良好的沟通能力,工作积极主动,对大模型的应用感兴趣,能够与团队其他成员协作。
NLP应用工程师(全职/实习)
工作内容:
参与算法落地及对接工作,利用已有系统实现大规模语言模型在具体任务上的应用,并与产品开发人员完成相应的功能对接和调整工作。在工作的过程中,能够根据自己对产品的理解,主动探索或提出新的应用场景,并进行原型的实现。 
能力需求:
1. 熟练掌握Python; 
2. 有NLP领域相关开发或科研经验,了解NLP领域重要任务和主流模型,对预训练语言模型有深入了解; 
3. 能够根据自己的想法,自主检索相关文献,并设计合理技术路线; 
4. 有良好的沟通能力,工作积极主动,对大模型的应用感兴趣,能够与团队其他成员协作。
NLP数据工程师(实习)
工作内容:
根据研发人员的需求,收集、处理大规模文本数据,并构建相应数据集,用于支撑大模型的训练与应用。在工作过程中,能够主动挖掘数据价值,并能对数据进行一些基础特征的分析。 
能力需求: 
1. 熟练掌握C语言和Python; 
2. 能够完成常见的数据处理工作,例如:去重、去噪、HTML解析等; 
3. 对NLP领域有所了解,包括常用工具、常见算法等; 
4. 有良好的沟通能力,工作积极主动,对大模型的应用感兴趣,能够与团队其他成员协作。
WEB工程师(全职/实习)
工作内容:
参与开源社区相关应用和产品的开发工作,负责根据具体的产品需求实现相应功能。在工作过程中需要与NLP系统工程师进行对接,能够根据开发过程中遇到的问题进行合理反馈。 
能力需求:
1. 前端工程师需熟练掌握:Vue框架、HTML、CSS和Javascript; 
2. 后端工程师需熟练掌握:Java、Python以及相关语言主流的Web框架; 
3. 对于WEB开发中常见的问题或漏洞有所了解,能够自主检索解决常见问题; 
4. 有良好的沟通能力,工作积极主动,对大模型的应用感兴趣,能够与团队其他成员协作。
薪资待遇 
- 全职员工根据实际水平薪资15K-40K/月(税前); 
- 实习生要求每周至少投入两天时间,薪资300元/天; 
- 对于能力优秀、水平突出者,待遇面议,上不封顶。 
投递方式 
邮件标题请注明:智源大模型应聘_职位_姓名
🔍
现在,在「知乎」也能找到我们了
进入知乎首页搜索「PaperWeekly」
点击「关注」订阅我们的专栏吧
·
继续阅读
阅读原文