产品战略专家梁宁确认出席AICon北京站,分享AI时代下的商业逻辑与产品需求 了解详情
写点什么

OpenBMB x 清华 NLP,如何玩转大模型

  • 2022-11-30
    北京
  • 本文字数:7580 字

    阅读完需:约 25 分钟

OpenBMB x 清华NLP,如何玩转大模型

GPT-3发布之后,人工智能领域将越来越多的资源和关注度投向了大模型。在国内,清华大学自然语言处理实验室和智源研究院语言大模型加速技术创新中心共同支持发起了 OpenBMB(Open Lab for Big Model Base)开源社区,专注于大模型的开放研究工作。作为项目主要参与者之一,清华大学计算机系博士后韩旭对这一领域有着一些独到的理解,他的研究经历与看法非常值得关注人工智能大模型研究的从业者参考。


为了帮助更多读者与观众了解人工智能大模型,InfoQ 极客有约与 OpenI 启智社区联合推出的系列直播栏目特别邀请到了清华大学计算机系博士后韩旭作客直播间,分享他的个人学习、研究经历,OpenBMB 社区,AI 学术研究路线等话题。InfoQ 将本次直播的内容编辑成文,希望关注人工智能领域的读者能从中获得有益的见解。

90 后清华“学霸”的成长经历


InfoQ:您在高一时,就拿到了 NOI 邀请赛的金牌,因此被保送到了清华大学计算机系,从本科到博士、博士后,您的求学之路可以说非常顺利,您怎么评价自己的学习风格,您是学霸类型吗?



韩旭: 我感觉我还是属于努力大于资质的人,没什么突出的特长,也没有什么短板。我蛮努力的,但对结果怎么样也不是特别执着,更在乎过程,大概是这样一种类型。


InfoQ:是什么让您萌生了对计算机专业的兴趣并锁定了自然语言处理、知识图谱、预训练语言模型这几个研究方向?


韩旭:我接触自然语言处理是在大一的时候。清华计算机系有一些学生计划会鼓励本科学生去接触实验室,我和班上另外三个同学去实验室做了一个叫“微博关键词“的应用,做出来后网上玩的人还挺多的。那是我第一次感觉,去分析人类语言可以做很多有趣味的事情,后面就开始接触自然语言处理的相关研究了。


研究自然语言处理后,我感觉对于人工智能来说,比较复杂的问题还是让机器理解语言,因为语言很抽象也和认知有很大关系。我当时认为机器对自然语言理解的能力弱,主要还是缺乏对知识的认识,加入知识对于计算机理解语言有很重要的作用,所以就开始研究知识图谱,把结构化的知识融入到语言理解当中。


2018 年后出现了预训练语言模型,它在大量学习基础数据后能够自动吐出结构化知识,而且很规整,不需要用太多的符号规则约束,让我有了一些新的认识。我认为可以围绕预训练模型去构建以模型为基础的知识仓库,可以通过一些方法去结合特定任务的数据,把有用的知识激发出来去实现下游任务,这个会是知识图谱之后,未来一个更通用的知识使用范式。所以这几年我也把研究的重心放在大规模预训练语言模型上,把它看作一个重要的知识载体。


InfoQ:我了解到,您在学业之外,在读博期间还担任清华大学计算机系的辅导员、本科生助教,也担任过计算机系学生科协主席等职位,还出版过专业书籍...感觉非常充实忙碌,比较好奇您日常是如何管理自己时间的,有没有觉得难以兼顾的情况?现在很多人会常常感到焦虑,在工作和生活中失去了平衡,不知道您是如何平衡好、安排好时间的?


韩旭: 做辅导员、助教帮助学弟学妹,主要还是受到我导师和实验室前辈的影响,他们之前都在系里做过很长时间的学生工作。另外这也是清华的一个传统,清华所有辅导员都是清华自己的博士生、硕士生给学生当辅导员。


但这个确实会给自己带来蛮大的时间压力。因为我有自己的家庭,北京通勤又很费时,这样只能提升自己的工作效率,碎片时间也尽可能利用起来,每天睡觉之前把自己第二天要做什么事情提前计划出来,实在做不完就真的只能加班了。不过我一般不太熬夜,年纪比较大熬不动了,还是老老实实睡觉,第二天早点爬起来干活。娱乐可以少一点,但不能不睡觉。


关于工作和生活平衡,我做平衡的方式就是不断做计划。有时候实在特别难受,也不要给自己特别多的压力,这时候就放松一下,多睡觉、看看书、出去玩一玩,给自己一个缓冲的空间。另外对于计划我一定严格执行。我把计划列纸上,做完之后就一条条划掉。做完事情再划掉还是很有快感的,这也算一种方法,这样你就有一种完成感,也有一种下一件事情开始的感觉。


做科研本身是没有尽头的,这时候你如果不给自己设置一些节点,人真的会非常难受。另外想玩的时候就要大胆玩,这是很正常的事情,本科时候我们宿舍四个人考试前都在打游戏。核心问题不在于你玩多久,在于你不能用玩来逃避。也许很多事情不想做,但玩过后还要逼着自己做,这是没办法的事情。


InfoQ:您在 2017 年本科毕业后直博,现在又继续攻读博士后。相信很多人会比较好奇,AI 博士是一个怎样的群体?


韩旭: 网上很多人感觉搞 AI 的都跟古代做巫师一样,就是天天调参,自己也不知道原理是什么。早期我也这样自嘲,就说自己是初级“炼丹师”,但我做多了发现其实不是这样的。


一个 AI 算法的模型设计、数据遴选等等是一个非常庞大的体系,不同时期大家做 AI 的思路也完全不一样,这背后有非常深厚的、来自各个学科的影响。比如,早期大家做 AI 受到上个世纪初分析哲学的影响,大家喜欢搞数理逻辑、符号推演,后面也有人去做控制论、专家系统,直到现在搞深度神经网络。


所以无论大家研究什么,背后都有各种各样的学科和复杂背景,有自然科学的甚至哲学的,最后都汇总到 AI 这里。我感觉,对于我们搞 AI 的人来说,核心还是怎么去赋予一个机器智能,并且把这个智能用在实际生活中,这是我们的终极目标。我们做的事情也就是一些通向这个目标的手段,其实也没有什么特别神秘的。


InfoQ:在清华大学自然语言处理实验室(THUNLP)工作是一种什么样的体验。您在博士期间的导师是刘知远副教授,在博士后期间的导师是孙茂松教授,您平时跟两位导师是怎么相处的?


韩旭: 我大一在实验室就感觉做 NLP 挺好的,后面就开始专注于这个研究方向。另外实验室的孙茂松、刘洋、刘知远三位老师都很好,对我留下来在实验室做研究的决定起到了很大影响。三位老师给我的感觉就是做事认真、待人谦和、非常努力,而且特别愿意帮助同学解决问题。


受老师影响,基本上就是进组之后,师兄师姐就“传帮带”。我很喜欢这种集体氛围,大家一起做一些事、互相帮助,我也愿意帮助别人、别人也帮助我,大家互相成就,挺好的。


InfoQ:您刚读博不久就收获了第 1 篇顶会,到博士 4 年级时,手里已有近 30 篇 AI 顶会论文。对于很多人来说,写论文是一件挺“痛苦”的事儿,您是怎么做到如此高产的;您有曾为论文‘抓狂’过吗?



韩旭: 这三十篇里面有一部分工作不是我主力做的,是我带师弟、师妹们做的。因为我是我导师的第一个学生,前面我是被师兄、师姐们领入门,现在师弟师妹就是我帮忙入门了。很多工作是我一开始跟他们一起讨论想法、实验方案等,论文是他们主力工作,我是给他们做指导打辅助的。


我本科第一篇文章就被拒了,主要是因为当时大家做知识图谱还是倾向于不用神经网络,因为它的效率和方法都存在问题。我做这件事情比较早,这个文章就感觉有点异端,老被“毙”。被毙几年后风向变了,后面这个文章就被录了。感觉在这方面,个人的努力是一方面,历史的进程可能是更重要的。


关于神经网络,它怎么被大家接受的也是一个非常有意思的话题。神经网络在上世纪 80 年代甚至被认为是不可行的,前辈们是怎么坚持下来做这个东西到现在的,这是更值得我们学习的。做科研,你愿意花 20 年,30 年坚持一个你认为是对的,别人认为是不对的东西,这是非常不容易的。


另外我那时候,中顶会确实不容易,但现在就没这么难了。因为现在量也大,开国际会议本质上还是想让大家投顶会论文,互相有个见面机会聊一下,越往后论文发表更多的就变成学术交流性质。我感觉低年级同学想发论文挺合理的,保证自己毕业,让自己安心地去做后面几年更创新的工作是非常重要的事情。博士前期,做些基础工作让自己毕业不存在太大压力,博士后期可以尽情去做你感觉有意义的事情。你发表不出论文肯定不行,你发特别多论文,其实大家也不会有什么特殊的感觉。而且有时候重点也不在论文数量,更多的看论文质量吧。


我抓学术热点的方式就是“暴走式”,找一段时间大批量看很多论文。我会先找一两篇开宗立派的文章,再找哪些文章引用它们,看完之后对这个领域就能有一定的理解,就可以跳过很多琐碎工作直接看这几年大家在做什么东西。我感觉比起找学术热点,更重要的还是能厘清这个领域的发展脉络,在这个脉络上找到你能做的点,以及有意义的点。

OpenBMB 开源社区

InfoQ:本期极客有约是 InfoQ 与 OpenI 启智社区合作的。清华大学自然语言处理实验室和智源研究院语言大模型加速技术创新中心共同支持发起了 OpenBMB(Open Lab for Big Model Base)开源社区,您是这个项目的主要负责人之一,请您详细介绍下,这是一个什么样的项目?OpenBMB 社区的成立的背景是怎样的?


韩旭: 最近一两年大模型非常出圈,大模型虽然很厉害,但并不是所有人都能用起来。我们的统计数据显示,主流会议上发表的论文大约只有 4%的工作会用到规模较大的模型。大模型的参数规模带来了比较好的性能,但相应的也存在计算效率很低、计算代价很高的问题。无论是高校还是企业,都很难拿出这么多的计算资源来做大模型。


我们当时感觉大模型很重要,它很有可能是下一代的 AI 范式之一。因为大模型具有很强的通用性,可以把它看作是一个很大的仓库,我们可以把各种各样的知识存进去。这个仓库肯定越大越好,这样才能存下更多知识,然后就可以将知识激发出来去解决各种各样的下游任务。


但大模型的计算代价也很高,我们怎么能把大模型的计算成本降下来,让大家都能用起来,这就是我们搞开源社区的初衷。我们想要做一个开放的开源工具,让大家都能用起来,在家也能拿一块 GPU 运行一个相对来说比较大的模型。我们后续做的训练加速、模型压缩、高效微调等工作,也都是为了尽可能用最低的代价让大家把大模型用在各种业务场景和学术研究上。


其实现在很多同行也注意到这点,开展类似的研发工作。大家都意识到要把大模型变的实用化,必然要解决效率问题。我们也了解到,企业内部做推荐系统、搜索引擎等,更重要的是响应时间、吞吐量和计算成本等指标。大家都知道预训练模型很有用,已经把它运用在各种业务线上,但特别大的模型还没有大范围铺开,大模型的计算效率上还有很多事情需要做。我相信未来会有越来越多的大模型介入到生产生活中,现在确实还没有那么多,因为这些项技术和发现本身也才出来没多长时间。


我们的行业发展还是很快的,目前对于大模型计算效率这样的问题已经有了一些比较成熟的解决方案,能够把成本控制在比较能接受的程度以内,且性能可以维持在 95%以上。围绕大模型构建应用其实有很多思路可以尝试,比如用大模型搞出一个中心基础设施,用边缘计算提供服务。


InfoQ:OpenBMB 社区和我们经常听到的悟道大模型团队所做的工作有什么联系?


韩旭: 我们最早也是在悟道团队下面,叫悟道·文源,主要做中文模型。当时我们的模型和算法研究都是在智源的悟道团队支持下完成的。


而 OpenBMB 更多是从框架角度出发,不是一个偏研究性质的东西,它会偏向工程实现更多一点。当时智源的加速中心给我们很多支持和帮助,让我们去做加速方面的工作,包括开发开源系统等。


InfoQ:OpenBMB 社区目前的大规模预训练语言模型库与相关工具都有哪些,具体的功能是什么?


韩旭: 我们在启智社区、GitHub 上都已经做了系列化的开源工作,现在基本上常见的功能都有,包括训练加速、模型压缩、高效参数微调、推理加速在内的一整套流水线。我们还有一个围绕 OpenBMB 的模型仓库,把一些常见的开源预训练模型都集中到里面,可以支持直接调用。


下一步我们也在增加各种各样的新功能,尤其是怎么让大家能够比较简单地把这些东西用起来,这是我们下一步着重关心的一点。我们也希望不断接受大家提出来的意见,往开源系统里添加新的功能。


我们希望将来做成一个大家共同参与训练的模型,它的底层框架也是用我们已经开源的框架去实现。我们做了很多优化,这些优化都会帮助我们降低计算成本,能够以较低的代价去训练 GPT-3 这样的超大模型。只有我们把它做得很快之后,围绕它才能做进一步的参数微调和推理。


InfoQ:大模型会不会导致更严重的数据偏见?


韩旭: 如果把模型当成一个知识仓库的话,如果直接扔进去处理不好的数据,很容易出现数据偏见、数据不安全的问题。现在也有不少研究人员专门在做模型杀毒、模型安全,目的就是为了防止大规模数据上预训练可能带来的数据偏见、模型不安全等问题。这方面我们确实还需要进一步去探索。


InfoQ:据了解,OpenBMB 社区已入驻并将其部分模型套件开源部署至 OpenI 启智社区,能否详细介绍下这方面的开源进展?今年,双方还将有哪些合作?


韩旭: 我们训练、压缩、微调、推理等全部流水线工具都在启智社区发布了,后面我们也会一直维护的。我们和启智社区合作的一个很重要的目标是把开源社区生态搞好,因为这对未来我们做 AI 以及其他相关领域的工作都是很重要的。


我们后期会依托启智社区本身的开源平台收集大家的使用体验,然后打磨我们的产品。我们的产品也会第一时间发布到启智社区上。启智社区也给了我们很好的平台支持,帮助我们把开源社区搭建出来,跟大家有更亲密的交流。


OpenBMB 和我们实验室的成果都是开源的,欢迎大家过来和我们一块做研究,你不用加入我们也能用我们的框架做一些事情。你感觉有些可以改进的点,可以提交给我们,我们把它合并进去,你就算是贡献者了。当然我们更欢迎大家投简历、实习,和我们一块来做研究工作。


InfoQ:超大规模模型的训练和推理会对深度学习框架带来很大的考验,对此,OpenBMB 有没有提出一些比较好的解决方案?


韩旭: 有几种方式,第一个就是基于设备去做混合精度。比如说大家一般都用 32 位浮点,我现在用 16 位浮点,这样不仅计算量降低了,而且能更好地利用 GPU 的计算单元来加速。


另外我们也做了一些算子重构和调度优化,能够把 GPU 和 CPU 都用起来,这些都是系统层面做的优化。算法层面也可以做优化,例如比较常见的模型并行、流水并行、数据并行,利用分布式的多台机器多张卡去做加速。


综合这些方案我们可以把训练成本降到很低。现在一百亿参数的模型,大约十万左右的成本能训练出一个还不错的模型出来。


InfoQ:OpenBMB 的技术和工具是如何解决超大规模的模型训练不稳定这一问题的?


韩旭:我们的解决方案是,所有模型都是头尾共享 Embedding,这样可以避免混合精度浮点计算带来的一些问题。然后是初始化,我们可以把部分参数数值的整体范围放缩下来,让模型变稳定。更“暴力“的方式就是多加一些约束策略,让模型在训练过程中不会“爆”掉。


我们发现训练大模型的坑还是挺多的,比如说大模型很容易陷入某些特别的 Pattern,如果你的数据里面确实有一些难以发现的特定的 Python 的话。另外,如果模型数据里噪声很多的话也不太好,在训练之前还是需要对数据进行仔细清洗。


这就回到我之前说的问题,就是你看起来是个很简单的事情,实际上操作起来可能很复杂。比如,训练一个大模型,需要数据收集、数据清洗、计算加速,从各个方面上来看,这都是一个非常体系化的事情,已经不是一个人能从头到尾做完的事情。我们需要一个团队,在团队里每个人都有自己的分工,最后才能把事做成。这也是我们为什么要做开源社区,希望大家一块来做开源工作的重要因素。个别人的力量总归是小的,集体的力量会比较大一点。


InfoQ:去年,预训练大模型可以说是 NLP 领域最为耀眼的成绩。预训练大模型在今年的发展进展如何?您觉得,什么可以算是今年 NLP 领域最大的技术进展/突破?


韩旭: 去年大家会更多地关注参数大不大。现在的话,大家可能会感觉参数规模不是最重要的,更多地去关注功能是不是通用,模型是不是更智能、更认知。很久之前,我们一直在讨论是不是需要把知识图谱这种符号性知识和深度学习这样的数据驱动模型融合在一起。一些大模型的最新工作给了我们一个新思路,就是,数据库还是数据库,知识图谱还是知识图谱,我们不是把这些东西都学进大模型,而是让大模型能提供对各种你要做的事情的行为模式建模能力。大模型对我们的行为建模,就能学会操控各种各样的东西,这对我们未来去实现通用智能是很重要的启发。

个人规划与对后辈的建议


InfoQ:我们最后一部分来和老师谈一谈对于未来的规划。首先一个老套的问题,老师一直以来有没有人生格言或者座右铭?有哪些话想对同侪或者后辈说的话(建议也好,共勉也好)


韩旭: 因为我比较喜欢看历史书,我特别喜欢的一个历史人物是诸葛亮。从小到大我的人生格言就是诸葛亮给他儿子的一句话,静以修身,俭以养德,非淡泊无以明志,非宁静无以致远。我认为他很了不起,即使在一个黑暗时代即将来临的前夕也是向可能的光明方向走。虽然他最后没有成功,但他至少奋斗过。


我感觉我个人、我们组有多少成就都不重要,重要的是这个圈子整体有很高的水平。我做开源也是希望大家越来越多地用起来,我们一起可以为这个社区做更多努力。当然也希望大家更关注我们大模型的相关工作,也欢迎大家和我们一起来做事情。但我们更多地还是希望大家用我们的工具去做自己的工作,在自己的领域也能做出非常好的成果。


InfoQ:请问老师,是不是大企业或者大研究院比在学校实验室更容易做出更有突破的成果?


韩旭:公司的好处显而易见。公司资金会更多,更偏向业务,有更多的业务数据,计算资源也更多,但相应的约束也会更多。


我是在高校做博后,未来可能还是更倾向于做老师、做研究员。我总感觉在企业里面你做科研,还是会有很多很现实的压力会限制你在业界做一些事情。高校相对来说是互补的。高校计算资源没那么多,但是高校相对来说没有那么多对业务的要求,你能更多地做一些偏预研性质的东西。高校老师的经验会更足,对研究方面也会更有经验一点。


所以你在高校做研究,还是在企业做研究,两边都有局限性。你可以做个比较,选择出你想要的方案。这里没有最好的道路,可能只有适合你的才是最好的。


InfoQ:接下来请老师聊一聊在学研方面,未来对自己有什么规划?是否考虑过毕业后的从业规划?


韩旭: 因为我现在是博后,这段工作更多是把大模型做实用化一些,做开源社区建设,做实用化的工具。博后之后当然更倾向于找教职做老师。我还很喜欢当老师的,精神上会更愉悦一点。高校的工作节奏感觉没有企业那么明确,高校很多时候都是突然一阵子来好多事情,有时候也感觉挺累的,但是在这个过程中,尤其跟年轻同学接触的过程也还是很快乐的,我还是很愿意去当老师的。另一方面,将来也不排除去业界找工作吧,这个东西很难讲。就像我刚才说的,你得考虑个人的奋斗,也得考虑历史的进程。但从我内心来讲,我还是更愿意去做老师、做教职的。

嘉宾介绍


韩旭,清华大学计算机系博士后。师从孙茂松教授与刘知远副教授,主要研究方向是自然语言处理、预训练语言模型、信息抽取。在 ACL、EMNLP、AAAI 等自然语言处理与人工智能国际会议上发表论文 20 余篇,根据 Google Scholar 统计论文总引用超过 3000 次。参与开源 OpenKE、OpenNRE 等工具包,在 GitHub 上累计获超过 10000 星标。曾获清华大学“国家奖学金”、“蒋南翔奖学金”、“钟士模奖学金”、清华大学优秀博士学位论文等荣誉,入选 2022 年博士后创新人才支持计划。

2022-11-30 16:543649
用户头像
刘燕 InfoQ高级技术编辑

发布了 1112 篇内容, 共 533.3 次阅读, 收获喜欢 1976 次。

关注

评论

发布
暂无评论
发现更多内容

【LeetCode】逆波兰表达式求值Java题解

Albert

算法 LeetCode 28天写作 3月日更

配置引起事故复盘

风翱

3月日更

避免失控:谈谈人与人交往中的恶

boshi

职场 心理 七日更

TCP 三次握手与四次挥手

insight

TCP 3月日更

基于SpringCloud,支持安卓、IOS、包含前后端等等完整网约车项目

Java架构追梦

Java 架构 面试 SpringCloud 网约车项目

所谓生产力

ES_her0

3月日更

好想做个女孩子,编程第一步,女装身上穿

GitHub指北

寻找被遗忘的勇气(二十)

Changing Lin

3月日更

这份1307页Android面试全套真题解析,源码+原理+手写框架

欢喜学安卓

android 程序员 面试 移动开发

分享18个常用的ECMAScript 6代码片段

devpoint

reduce URL参数解析 Form表单数据解析

这些面试题你会吗?6年菜鸟开发面试字节跳动安卓研发岗,复习指南

欢喜学安卓

android 程序员 面试 移动开发

一口气面了腾讯两个部门!

我是程序员小贱

3月日更

GitOps | 一种云原生的持续交付模型

xcbeyond

CI/CD gitops 3月日更

《Redis 核心技术与实战》学习笔记 05

escray

redis 学习 28天写作 3月日更 Redis 核心技术与实战

《码农歌》

臧萌

加班

2021年Java春招高级面试指南(1到5年Java面试者必备)

比伯

Java 编程 架构 面试 程序人生

数据库备份真的很重要!很重要!很重要!

xiezhr

oracle sql MySQL 运维 数据备份

远程协助软件向日葵分析

lenka

3月日更

打通Jira与钉钉和企业微信不再难

跟YY哥学Jira

钉钉 Jira 企业微信 automation

十步输出设计文档

鲁米

设计实践

C++线程池ThreadPoolExecutor实现原理

Linux服务器开发

c++ 后端 线程池 Linux服务器开发 Linux后台开发

我在阿里实习做开源

apache/dubbo-go

微服务 程序人生 云原生 dubbo dubbogo

源码分析-Netty: 高性能之道

程序员架构进阶

Netty RPC 源码剖析 28天写作 3月日更

一些人的某些目标

sadhu

生涯规划 职业规划 个人提升

苹果笔记本充不进电的解决方案

石云升

电脑故障 28天写作 3月日更

还有高仿项目吗

GitHub指北

正则表达式的使用与匹配原理解析

Guanngxu

正则表达式

MySQL如何选择主键

架构精进之路

MySQL 3月日更

蚂蚁二面:MQ消费端遇到瓶颈除了横向扩容外还有其他解决办法?

中间件兴趣圈

面试 RocketMQ 消息中间件

初识Golang之调用方法

Kylin

3月日更 Go 语言

Wireshark数据包分析学习笔记Day17

穿过生命散发芬芳

Wireshark 数据包分析 3月日更

OpenBMB x 清华NLP,如何玩转大模型_AI&大模型_刘燕_InfoQ精选文章