Hugging Face,这家以emoji“抱抱脸”命名的开源创业公司,以一种连创始团队不曾预料的速度成为了AI开源社区的顶级“网红”。目前,Hugging Face模型库在Github上获得了超过62,000个Star,14,000次forks,代码贡献者超1200人,每月被安装超100万次。就在5月10日,Hugging Face宣布C轮融资筹集了1亿美元,由Lux Capital领投,红杉资本、Coatue、Betaworks、NBA球星Kevin Durant等参与投资,目前估值达到20亿美元。由此,Hugging Face进一步在业内引发强烈反响。很多人好奇Hugging Face为何能一炮而红?凭什么受到资本青睐?故事还要从2016年说起,法国连续创业者Clément Delangue(曾创办笔记平台VideoNot.es,媒体监测平台mention以及被Google收购的移动开发平台Moodstocks等项目)和Julien Chaumond、Thomas Wolf一起创办了Hugging Face,并从Betaworks和NBA球星杜兰特等拿到天使融资,他们最开始的方向是做对话机器人,但跟当时很多做类似方向的创业公司一样,一直没有起色。直到2019年,为了训练聊天机器人的NLP能力,他们在GitHub开源了一个Transformers库,令人意外的是,在机器学习社区迅速流行起来,成为GitHub史上增长最快的机器学习库。无心插柳柳成荫,运气,有时就是这么邪门儿。不止于NLP库,Hugging Face也在逐渐变成机器学习领域的ModelHub中心。如今,Hugging Face已经共享了超100,000个预训练模型,10,000个数据集,涵盖了 NLP、计算机视觉、语音、时间序列、生物学、强化学习等领域,以帮助科学家和相关从业者更好地构建模型,并将其用于产品或工作流程。现在,他们发起的BigScience项目,吸引了超1000名研究者共同训练超大规模模型。作为一家商业公司,Hugging Face也从去年的30人扩张到了120多人,有超过10,000家公司在使用他们的产品和服务,其中付费用户超过1000。Clément认为,取得这些成绩的主要原因在于,Hugging Face弥补了科学与生产之间的鸿沟,通过搭建平台为开源界和科学界赋能,所产生的价值比通过搭建专有工具产生的价值要高上千倍,而很多开源软件和公司都没有做到这一点。某种程度上,Hugging Face是在构建机器学习领域的“GitHub”,让其成为一个由社区开发者驱动的平台。2021年6月,在机器学习播客《Gradient Dissent》中,Lukas Biewald与Hugging Face的CEO兼联合创始人Clément Delangue聊了聊Hugging Face Transformers库兴起的背后故事,揭示了Hugging Face快速增长的缘由,后者也分享了他对NLP技术发展的见解。以下为对话内容,OneFlow社区做了不改变原意的编译。Lukas:2019年,是什么启发你们要搭建这样的Transformers开源库?Clément:真实情况是,并没有考虑太多。当时我们使用开源库有一段时间了,在这个领域,总感觉我们是站在巨人的肩膀上在前进,许多人在从事科学研究时,已习惯了这样的方式。比如当你发表关于机器学习的研究时,可能更倾向于以开源而不是论文的形式发表。因此,从研发Hugging Face的第一天开始,我们就在开源库中进行共享。至于Transformers,它始于我们发布的TensorFlow版本的BERT。但联合创始人兼首席科学家Thomas说,我们也需要发布PyTorch版本的BERT。因此,很快,我们又开源了PyTorch版本的BERT,实际上那个仓库一开始的名字就叫PyTorch-BERT。渐渐地,使用它的人越来越多。几周后我们又发布了一个新模型,也许是GPT的初版,但它也是TensorFlow版本的,所以我们就想不如将它也添加进来,因为这两个模型的功能不同,擅长领域也不同,这样一来,人们能更好地试用两个模型。后来,我们又开始思考,如何才能让人们更容易地使用它们,就像现在一样有机性地发展。有研究人员会问,想发布一个新的模型,可以使用Transformers库发布吗?当然,我们很欢迎。渐渐地,这个库就像雪球一样越滚越大,并成就了现在的我们。Lukas:按你所说,人们都可以在这个平台上使用别人的模型,以及发布模型?Clément:没错。我们采用混合方法来构建技术,拥有用户需要开源的扩展性和像用户界面这样的实用性。我们支持的范围很广泛,不用申请就能在开源代码中做所有你想做的事,你甚至都不用去Hugging Face官网,直接可以在Python中用pip安装Transformers。如果你想要实现更多功能,可以来我们的平台寻找适合自己的模型。更棒的是,如果你是一名软件工程师、NLP新手或机器学习的新手,可以使用我们的训练和推理API来训练和运行模型,并且我们会主导这个过程,让你很容易就能上手SOTA模型。Lukas:一开始为什么要发布一些PyTorch版本的模型?你们是不是更喜欢PyTorch?Clément:是因为用户群体不同吧。我们一直热衷于将那些难以理解的、小众的东西推广给更多的人使用。所以我们认为,只有将那些少数人掌握的技术推广给更多人使用,才能真正最大程度地发挥技术作用,这也是我们的主要目标。现在有人使用TensorFlow,也有人用PyTorch,对我们来说,相比之下使用PyTorch的情况要多一点,PyTorch是一个很好的平台,我们想让它得到更广泛地使用。慢慢地,有时人们开始称我们为“PyTorch-Transformers库",觉得这对使用其他框架的用户太不公平。于是,我们又将Transformers扩展到TensorFlow上,并去掉“PyTorch-Transformers"名称中的PyTorch,使其可以同时在两个平台上使用。如果你使用过我们集成PyTorch和TensorFlow后的版本,你会发现现在的功能比之前分别在两个平台上时更全面。实际上,你可以在相同类型的机器学习工作平台中,分别利用其优势来完成你的任务。比如,当你想做架构工作时,PyTorch是个很好的选择,而当你想做某种部署服务时,你可以选择TensorFlow,因为它集成了很多在行业中经常使用的工具。在同一工作流程中,你可以先在PyTorch中建模,然后在TensorFlow中使用,充分利用不同平台的优势,同时规避它们的不足。Lukas:你们还有需要用到自己软件的时候吗?现在还会做Hugging Face自己的应用还是仅仅为他人研发这类工具?Clément:我经常使用我们自己的工具。我们研发的最受欢迎的应用是Write with Transformers文本编辑器,它由一些流行的Transformers模型提供技术支持。这有点像你在Gmail里写东西时的自动补全功能,但它更简单,更有新意,它现在的文本产出量应该相当于1,000本书。当你不知道该写些什么,用这个软件准没错。Lukas:根据你的观察,目前最流行的NLP架构是什么?NLP架构至今发生了哪些变化?Clément:通过观察下载量、模型的容量等等,就可以看出模型的发展状况如何。当一个新模型发布时,我们可以通过它的用户使用情况来判断它是否取得了成功。实际上,目前Github下载量排名第一的模型是DistilBERT(Hugging Face的Transformer模型之一)。DistilBERT是通过知识蒸馏从BERT中提取出来的模型,但在用途方面有很多不同。虽然它们仍然是一种通用预训练语言模型,但现在这些模型的发展越来越专用化,新发布的模型都在之前的基础上有了优化,性能变得更好。比如,该模型是针对短文本还是长文本?专注于生成任务还是分类任务?面向的是单语言还是多语言?你会发现,越来越多的专用模型正在出现。现在,人们不再判断哪种模型最好,而是根据自己的需求、针对不同任务来选择最适合的模型。Lukas:BERT和OpenAI的GPT有什么区别?Clément:GPT和BERT都是基于Transformer的模型,只是使用场景和架构略有不同。譬如,BERT做的是mask filling(遮罩词填充,即遮罩句子中的某些词语,令机器预测哪些词可以替代被遮罩的词语),而GPT做的是语言模型,预测句子中的下一个词语,这也解释了为什么GPT的文本生成能力比BERT更强。但GPT也有它的局限性,比如要做文本分类,GPT就不太合适。Lukas:你是否认为OpenAI没有完全公布GPT的权重?Clément:OpenAI让更多人能受益于NLP,我非常感激他们所作的贡献。我记得GPT和GPT-2中间还有几个开源的版本,这些都是基于Transformers的模型,很多公司都在使用。GPT-3是一个很好的模型,在文本生成方面非常有用,但现在大家用得更多的可能是GPT-2而不是GPT-3。也有团队正在复刻GPT,Eleuther团队发布了GPT-Neo,它和GPT-3的架构是一样的。GPT-Neo的模型大小跟OpenAI通过API提供的GPT-3差不多,GPT-Neo运行结果也不错。不少人也意识到,有了OpenAI的分享,大家能用NLP做的事情就更多,而且也能推动行业生态的发展,让更多人关注NLP。越来越多公司也开始使用GPT-3,但它一方面很烧钱,另一方面可拓展性比较低,不能根据自己的使用需求对它进行调整。如果使用别人开发的API,就很难在这上面建立自己的技术优势。我们自己的目标也是让NLP惠及更多人,很多公司先是用GPT-3来探索NLP,然后又转而使用我们的工具。但我相信也有不少公司是反过来的,一开始先用我们的开源工具,后来决定还是用一些更现成的工具,比如GPT-3、Google NLP服务、AWS Comprehend等。现在也有一些服务能让这些公司获得NLP API。总之,开源社区的能力是巨大的,我们都是这个不断壮大的生态中的一员,一切都欣欣向荣。Lukas:过去几年,你见证了NLP前沿技术的发展。随着模型越来越强大,越来越好用,你觉得它们的使用场景有变化吗?比如,有没有一些大家现在正在做,但几年前还没有做或者做不到的事?Clément:在现在使用Transformers的5000家公司里,大部分都把Transformers运用到实际生产中,这在5年前还没有做到。很多应用场景都是新的,要么是以前机器做不到的,由人工来做的,比如内容审核,还有机器的客户服务分类功能可以取代大量劳动力。Gmail的自动补全功能也非常厉害,它极大提高了工作效率,过去几个月里,这个功能让我写邮件时的工作量减少了一半。现在大部分的搜索引擎都依赖NLP技术和Transformer模型,改变了很多产品的构建方式。GPT-3模型把NLP技术推广到了创业领域,很多公司也开始利用NLP技术从零开始做产品。Google搜索可能是NLP技术应用得最广为人知的产品。我常常设想,今天的任意一家公司在当初创业时如果能拥有今天的NLP技术基础,情况会怎样?这些公司可以在很多地方做得不一样。比如DocuSign(电子签名企业,提供在不同地方通过不同设备对文件进行电子签名的服务)可以运用现在的NLP文档分析技术,它就可以对文件进行多种分析,可以自动生成一个“太长不看版”,会将合同里提到金额的部分标绿或标红。如果Twitter运用现在的NLP技术,它的推送信息流可以很不一样。它不会只给你推送当下的热点消息,而是会根据使用记录来呈现你可能感兴趣的信息,希望这样有助于减少偏见、暴力、种族歧视等其他不良行为。Lukas:大概在15年前,我接触到文本生成和NLP技术,有一点很奇怪,即便NLP技术这么先进,但实际应用还很少。我记得图灵测试是这样的:人类跟机器对话10分钟,通过机器的表现判断它是人还是机器,或许这就是AGI(通用人工智能)的表现。现在AGI也衍生出很多变体,我总觉得,有了GPT-3等文本生成模型之后,机器就能更成功地伪装成人类,但实际上,我没看到NLP应用到更多领域。Clément:我不太同意这一点。一说到NLP,大家想到的是Siri、Alexa等智能语音助手或者机器人聊天界面这种比较直观的场景,但在很多我们看不见的地方,NLP也发挥着作用。比如Google搜索,你可能不会察觉到现在的搜索结果和以前有什么不同,但它背后使用的NLP和Transformers技术,“润物细无声”地改善了用户体验。当然,目前的聊天机器人技术不够成熟,不能真正地帮人类解决实际问题。我也发现,人们对NLP的应用态度变得更加审慎和循序渐进了。Clément:看好。Hugging Face一开始想做一个可以跟人聊天的有趣的AI朋友,当时我们特别痴迷于NLP技术,想攻克这方面最难的问题,于是决定做开放域的对话型AI,让AI可以与人谈天说地,从体育比赛聊到感情问题等等,但没有成功。我想原因是时机尚未成熟,以现有的技术做开放域对话AI实在太难了。“跟人聊天”应该属于NLP的终极目标,因为这个过程需要同时进行很多个NLP进程,比如提取信息、理解信息、识别对话者意图、分析语句含义、理解对话者情绪,还要给这些进程排序等等。如果对话者的音调、语气变了,那又要分析其隐藏含义。现在的客服聊天机器人已经能很好地解决一些垂直领域的问题,但还需要相当长的时间才能让机器人做到像人类一样无所不谈,到那时,用户会深刻地感受到面前的机器人和以往不一样,仿佛有血有肉。最终,我们会成功做出更好的对话型AI。Lukas:NLP领域有没有被低估的话题?如果不做现在的工作,那你会从事哪个领域?Clément:这是一个好问题。前几周(2021年6月)我正在研究语音和文本的相互转换,这应该是几年前兴起的技术,但近来好像变成了一个小众而略显无聊的研究领域。好在,最近有一些研究团队给它注入了新的生命力,特别是Facebook人工智能实验室(FAIR)的Alexis Conneau团队研发了wav2vec,给Transformer模型带来了新进展。我对此特别激动,他们提升了语音和文本转换的质量,而且从英语扩展到了其他语言。如果能将NLP和语音文本转换结合起来,就可以颠覆很多产品。比如,如果Zoom能利用NLP技术推出语音转文本功能,就可以实现线上会议“自动鼓掌欢呼”;或者当Zoom识别到参会者说出“万岁/太棒了”这种词时,屏幕上就会自动洒落大量表示“欢呼”的表情符号。几周前,我们在Hugging Face办了一个活动,有300多位参与者为语音文本转换模型做出了贡献,涉及100种稀缺的语言语料。我相信,语音领域会有更多新突破,为我们解锁新的应用场景,建议多多关注这个领域。Lukas:在你看来,是什么促成了Hugging Face的成功?Clément:回头看看那些最流行的开源项目,你会发现它们都经历了很长时间的沉淀。我们在两年半前才发布了第一个版本,现在仍处于婴儿期,但Hugging Face Transformers绝对是GitHub上增长最快的机器学习库。现在,它在Github上已经获得了超过42,000个Star,每月被安装超100万次,有800人为Transformers贡献了代码(译者注:截止2022年5月,该库已获得超62,000个Star,代码贡献者超1200人),取得这些成绩的主要原因在于,它弥补了科学与生产之间的鸿沟,很多开源软件和公司都没有做到这一点。我觉得,与软件工程1.0或计算机科学相比——尽管计算机科学在名义上有“科学”二字,但它实际上并不是一个科学驱动的主题,看看那些优秀的软件工程师,并不会真正地去阅读、研究论文,也不会在计算机科学的“科学”方面循规蹈矩。而机器学习属于真正意义上由科学驱动的领域,这一切都源于世界各地几十个非常出色的NPL团队创建了BERT、T5和RoBERTa等很多模型。我们的Transformers库就是为这些研究者提供一个平台,去展示那些他们想要分享的模型,以及测试他人的模型,以此来深入研究这些模型的内部架构。同时,Transformers库旨在创建一个很简单的抽象体,让所有NLP领域的参与者都能够在研究人员发布模型后的几个小时内使用这些模型。每当研究者在Transformers库中发布新模型,就会产生神奇的网络效应。人们都关注着这些模型,谈论着这些模型,并在Transformers中测试这些模型。他们将其用于工作,投入生产,尽其所能支持这些模型。对于科学家来说,他们也很乐意看到自己的研究被看到、使用,影响着整个社会,反过来也会驱动他们想要创造和分享更多模型。这种良性循环会使我们的项目比传统的开源项目发展得更快,并且已经引起了市场和机器学习领域的共鸣。Lukas:一个模型从最初构想到最终投入生产应用,其中最意想不到的挑战是什么?用户使用你们的平台时还有没有什么困难需要解决,还是说这个平台可以开箱即用?Clément:机器学习模型与传统的软件工程有很大不同,很多公司都很难从后者过渡到前者。由于机器学习模型缺乏可解释性,所以很难预测模型的输出结果,也很难对模型进行调整;而软件工程师一直以来习惯了可以非常明确地界定他们想要的结果,因此,对他们来说这种思维转变非常不容易。我认为,对机器学习的理解是最难的部分,甚至比技术性问题还要难。从技术层面讲,很高兴看到模型做得越来越大,但投入生产应用还需要更多技巧和更大努力。我记得Roblox发表过一篇很好的文章(http://blog.roblox.com/2020/05/scaled-bert-serve-1-billion-daily-requests-cpus/),阐述了他们如何利用DistilBERT在一天内处理超过10亿次推理,但挑战依然存在,还需要提升基础设施能力。Clément:我始终秉持的一个观点是:在NLP或者机器学习领域,最坏的情况就是要与整个科学界和开源界竞争。我以前就是这样过来的。我是法国人,曾在巴黎一家创业公司做计算机视觉工作。在机器学习这么一个日新月异的领域,要与整个科学界和开源界竞争非常艰难。巨头公司或者大学里有上百个研究实验室,虽然可能不是每个实验室都比我们做得好,但竞争对手实在太多,压力巨大。你或许可以在一段时间内超越对手,风光一两天,但过不了多久可能就会被赶超。所以,我们现在不再试图竞争,转而选择为开源界和科学界赋能。通过开源模型,可以为架构和数据库的改进提供灵感。Elastic和MongoDB就是很好的例子,它们的事迹表明,初创公司可以通过某种方式为社区赋能,此种方法产生的价值比通过搭建一个专有工具产生的价值高出上千倍。你也不需要从创造的价值中获取100%的红利,而是可以只将其中1%的价值变现,维持公司的经营。但即便只是1%,也足够让你成为一家高市值的公司,MongoDB就是一个例子。Elastic和MongoDB都是以开源为核心,也都成功发展起来了,并且还能在市场中活下去。我相信,在机器学习领域也可以复制它们的模式,机器学习技术还处于早期发展阶段,但我相信很快要迎来它的春天,在未来5到10年,会有1到10家开源机器学习公司崛起。https://www.youtube.com/watch?v=SJx9Fsnr-9Q)
推荐阅读
深入理解生成模型VAE
DropBlock的原理和实现
SOTA模型Swin Transformer是如何炼成的!
有码有颜!你要的生成模型VQ-VAE来了!
集成YYDS!让你的模型更快更准!
辅助模块加速收敛,精度大幅提升!移动端实时的NanoDet-Plus来了!
SimMIM:一种更简单的MIM方法
SSD的torchvision版本实现详解
机器学习算法工程师
一个用心的公众号