VALSE

VALSE 首页 活动通知 查看内容

VALSE Student Club 听VALSE学生会员聊聊他AAAI杰出论文背后的故事

2023-3-13 18:03| 发布者: 程一-计算所| 查看: 925| 评论: 0

摘要: VALSE Student Club推出“成员风采展示”栏目,对取得重要科研成果或者获奖的学生俱乐部成员进行访谈。本期为该栏目的第一期,聊一聊新加坡国立大学博士二年级郑奘巍同学获得AAAI-2023杰出论文的心得和背后的故事。 ...

VALSE Student Club推出“成员风采展示”栏目,取得重要科研成果或者获奖的学生俱乐部成员进行访谈。本期为该栏目的第一期,聊一聊新加坡国立大学博士二年级郑奘巍同学获得AAAI-2023杰出论文的心得和背后的故事。本次访谈由北京航空航天大学程博文,郑瑞,以及新加坡国立大学王锴同学共同组织完成。



访谈对象简介:郑奘巍,新加坡国立大学二年级博士生,导师为尤洋教授。研究方向是高效深度学习和优化。论文 “CowClip: Reducing CTR Prediction Model Training Time from 12 hours to 10 minutes on 1 GPU” 获得 AAAI’23 杰出论文奖。



问:首先要恭喜你收获本次的AAAI杰出论文,要不先给我们介绍一下自己吧?


答:我目前是在新加坡国立大学攻读博士学位,现在是博士二年级,导师是尤洋教授,现在也是尤老师HPC AI Lab的一员。我目前的研究方向是模型训练的加速和计算机视觉,具体包括如何用大batch去学习,domain adaptation,或者是domain generalization相关的一些工作。我本科毕业于南京大学,之前有在加利福尼亚大学伯克利分校 (后简称UCB)有过一段交流访学的经历,这大概是我的个人情况。


图1 作者郑奘巍生活照

图片


问:关于CowClip工作能给我们做一个简单介绍吗?因为我们可能对推荐系统这块不是很熟悉。


答:这个工作主要是针对在推荐系统中,特别是在实际的业务场景中的一些问题而提出的。在以前,很多推荐模型还是在CPU集群上训练。现在随着GPU性能越来越好,当我们把推荐模型部署到GPU集群上的时候,会发现原来的batch size不能够把整个GPU的性能全部利用好。这样的话一方面会使得GPU的性能被浪费掉,另外一方面训练的速度还是没有得到提升。为此我们提出要用一个更大的batch size去提升对GPU性能的应用,包括去做一个提速。但是当我们把batch size提高了以后,首先确实观察到了速度的提升,但是这样带来的问题就是训练上很难保证有一个和之前相同的精度。那么我们的目标就是要在大batch size下用更好的算法去维持相同的精度,这个基本上就是我们工作的背景。最后我们提出了一个更优的超参调节策略和一个算法,也就是CowClip这样的一个梯度裁剪算法,共同去保持batch size变大之后的性能。


图片


问:非常感谢关于工作的介绍。接下来能给我们分享一下收获这次的杰出论文的感受吗?尤其是你觉得在最后呈现出来的工作中有哪些重要的因素使得这篇论文受到审稿人包括 AC的青睐,并且最后能够获得杰出论文的奖项?


答:首先先说说我的感受,当我知道这个消息的时候还是比较惊喜的,其实我一开始没有想到这篇文章能够获得这样的一个奖项。我之所以会这么想主要因为觉得我们做的CTR模型可能还是偏向于比较小众的领域。但是其实能获奖也就说明了这个问题它确实是存在的,也是目前大家在业界会比较关心的一个问题。然后开心的话是肯定的。我第一次在顶会上发表一作文章就能够拿到这样一个奖项,还是非常开心的。


对于我这篇论文我个人觉得会有以下几个点比较吸引到AC。


一个是它想去解决的问题是真实存在的。只要是做我这个相关领域的人就会知道这个需求是真实存在的。之前NeurIPS很多审稿人其实不是做这一块方向的,为了防止他们不是很清楚这个方向,我特地在supplementary中介绍了很多相关的工作,包括CTR任务大概是个什么样的任务以及CTR任务的发展趋势。这样可以更好地去交代论文的背景,让不同背景的人来审我的文章时不至于非常的茫然。


第二点我觉得是method部分写得比较层层嵌入。因为我们其实相当于是在一个新的领域讨论一个老的问题。在CV和NLP领域已经有很多大batch的讨论了,但是我们用老的方法发现在新的领域并不work,然后我们就去寻找不work的原因。通过两个方面我们验证了背后原因的真实性:一方面是数学推导,另外一方面我们是根据消融实验做了一个toy dataset,这是比较让人信服的。基于得到的原因,从数学上我们得出要做一个超参策略的调整,并且从实验上我们也提出了一个新的算法。所以我个人认为method这一部分还是比较详尽的。


最后是实验性能。因为我们的训练时间降了很多,可以比较直观得看到速度的提升,让别人看上去会觉得比较厉害。


我觉得是这几个方面是共同吸引了 AC和审稿人的喜爱。


其实在AAAI的审稿意见里面,对于整个问题的motivation其实都没有再有challenge,并且对于 method的部分也表示认可。有疑问其实更多的还是认为我们的实验可能具有一些局限性,但是基本上就没有什么太大的问题了。


图片


问:下一个问题是能不能介绍一下工作的研究经历,因为我注意到这个应该是和字节跳动一起合作的工作。在研究经历中,不知道有没有什么难忘的事情。然后大家可能对其中的一些挫折或者比较艰难的过程会比较感兴趣。


答:我先说说研究经历和字节的合作吧。这篇文章之前是实验室和字节的合作项目。这个也是要感谢尤老师,因为他最出名的工作就是LARS和LAMB,在 CV上有很多的训练都是用LARS去完成的。因为字节内部发现大batch是可以获得很多的增益的,于是就有了大batch的需求。在需求明确后,就希望和尤老师这边合作,想去找一个方法能够扩大batch size。所以其实让我来做这个项目之前,这已经是一个很实在的需求了。当时我刚刚拿到尤老师offer,然后老师就给了我这个机会去和字节合作。然后从前年的7月份,一直到去年的5月份投NeurIPS中间应该是将近有一年的时间在做这个项目。


然后说难忘和挫折的话,其实我觉得说挫折其实也不算挫折,可能还是更多的是难忘,一个是说第一次在业界实习,帮助我补充了一下业界的视野。我发现在业界看待问题有的时候和学界还是很不一样的,特别是推荐系统。推荐系统广为诟病的一点就是很多在学界做的研究其实是没有办法在业界落地的。然后在业界对于推荐系统的精度要求非常高,因为它和业务是极其紧密绑定的,基本上万分之5的一个精度的上下都可以带来非常大的一个盈利上的差距。所以在业届调模型的时候都有点感觉能调好了就是在帮公司赚钱了。


关于挫折,第一点我想说的是其实我也是 valse student club的一员,我的背景还是一个CV的背景。所以我一开始做推荐系统的时候,也是一样比较迷茫的。我不仅要从头开始学推荐系统,tensorflow再加上字节内部的pipeline,还要去适应新的工作环境和新的研究背景。


其次是我觉得做研究用tensorflow对于当时的我这样刚刚入门的还是比较难受的。一个是配置环境就遇到问题了;另外一个debug的时候非常困难,所以一开始代码能力方面也是需要努力去继续学习的。


图2 作者在字节跳动实习期间


最后一点的话是这个项目的二作是新加坡国立大学 (后简称NUS)的一个本科生,然后也是尤老师让我带的第一个实习生。其实我带他时候还是比较忐忑的,就是我不知道能不能跟他一起合作好。当时我也会比较积极地去找他,有的时候会跟他一起讨论。那时候在 NUS因为一些联网的原因,我就去借用他宿舍楼下的自习室,跟他一起在那边做实验。不过最后也算是完成了这个工作,也算是没有浪费他的时间,所以我心里还是比较开心的。这个算是这篇工作的研究经历中的一个难忘的事情。


图3 论文一作 (左一)和二作 (左二)


问:还了解到这个工作之前在NeurIPS有一次投稿,但是分数可能不是很好,那么在转投AAAI之后,对于审稿人的意见有什么样的回复,然后对于相关的缺点又有什么样的改进,能够让一个之前可能并不是特别令人满意的工作最后被大家认可并得到了杰出论文的奖项?我觉得这样的一个改进还是非常值得去讨论的。


答:其实关于NeurIPS这一点,当时审稿人给了4466。


我先说一下两个4分的审稿人吧。他们主要还是对问题的出发点,也就是问题的重要性进行了质疑。可以明显看出来,他们应该至少不是从事CTR Prediction这个小领域的,可能不是很了解这个背景。他们两有共同提到一个问题,说现在大模型非常火热,那么随着大模型的崛起,GPU资源其实会被大模型占用了很多,这种情况下就算没有大batch, GPU资源其实已经能被利用的很充分了,那么是不是大batch其实就是一个伪命题,不是一个很重要的问题。对于这个问题,其实我觉得他们其实算是想得比较深远。但是不管怎么样,我们其实看到随着大模型的崛起,我们的算力也在不断的增强。所以我们可以继续看同时期的模型和计算资源,我们会发现大batch其实还是需要的。就算是在训练GPT,比如说GPT2或者GPT3的时候,设置的batch size也并不小,所以我觉得这个的需求是肯定存在的。另外一方面,更实际的来讲,对于很多公司,甚至是字节这样的大公司,它们用的还是最传统的双塔结构,因为在CTR Prediction这个任务,比如说推荐视频,推荐商品给你的时候,他其实还是会考虑到就是说用户的兴趣变化,比如说一这个人我一段时间内的兴趣变化,它还是会有对你的推荐是有帮助的,这个时候的话,比如说你transformer这种模型去考虑用户的就说上下文结构,去考虑它一段时间内购买的sequence其实是会有帮助的。但是其实对于广告来说的话,其实就算你加入这种考量,它的一个帮助也没不一定会有那么大。对于大部分公司特别是小公司,它们其实没有足够的资源或者说数据去支持这么大的模型。所以对于这样的公司来说,如果能通过大batch充分利用这些资源的话,提升其实是非常大的。这是对这两位质疑的回应。


另外两位6分的审稿人一位就明显是做CTR的,他对我们论文中提到的一个背景表示很赞同。他就认为大batch确实是一个业界现在需要的方向。但是他提出了对数据集的担忧。他觉得我们只在两个公开数据集上做了一下测试,可能不够全面。这一点我们也是承认的,所以之后我们补了半个数据集,直接在 Criteo的基础上做了一个sequential的Criteo。原来的Criteo一共有7天的数据,sequential的Criteo就是把前6天的数据取出来去预测最后一天,这个勉强能算是一个弥补吧。另外一位审稿人做的方向也很明显,他是做优化的,所以他的问题就非常理论。他直接把算法看成是优化算法。他提出来的意见是虽然算法的效果很好,但是论文中好像没有对算法进行收敛性证明。事实上数学证明还是有一定难度的,特别是基于Adam优化器的证明。但是因为我们这个工作其实是基于很多前人的工作去做的,而在这些工作其实都有对收敛性进行讨论,所以我们最后补了一个Proof Sketch。


总而言之,针对4位提到的意见,我们论文中其实都有一些修改。但是其实改动没有特别大,很多都是在强调我们任务的重要性,然后调整一下章节段落,简单补一些实验和证明。所以最后投AAAI的时候也没有去做过多的修改。


我个人感觉不同的会议其实对于论文的偏好还是蛮不一样的,像NeurIPS对文章理论性会更关注一些,并且审稿人的方向可能也会分散,不会有那么多集中做CTR Prediction这一方向的去做审稿,但是AAAI的审稿人大多都是做相同方向的。因为我一开始也是做CV的,其实也不是很清楚推荐系统投什么会议比较好。后来组里来了一位之前做推荐的博士生就告诉我如果是做推荐系统应用的,就不应该去投NeurIPS。要么投AAAI,要么就投 ICDE数据挖掘的会。所以如果想中论文的话,投什么会也是有讲究的。


图片


问:论文为什么取现在的名字?


答:这个背后还是有一定讲究的。首先看“from 12 hours to 10 minutes”,直接把训练的时间放在题目中其实是尤老师的一贯的风格,例如尤老师的成名作Large batch optimization for deep learning: Training bert in 76 minutes和100-epoch imagenet training with alexnet in 24 minutes。所以推特上有评论说我的题目就是“You-Style”。其实一开始我起的题目不是叫这个,后来是尤老师跟我讨论以后把它改成了这个样子。这个题目我个人认为其实是有利有弊的。好的地方就是它非常的亮眼,从12小时到10分钟就是非常直接。就算不是做这个领域的人看到了也会说眼前一亮,感觉效果非常好。但是其实它也有一定的弊处。首先是从某种程度上有点标题党的嫌疑。因为从12小时到10分钟其实只是一个数据集上的效果,没有那么具有广泛性。所以放在论文标题中,也有它的一些还需斟酌的地方。


这个论文标题中的每一个部分我们都还是想了比较久的。可以再看一下中间的“Reducing CTR Prediction Model Training”。一开始我们其实在想到底要不要把这个放上去,要不要告诉大家我们这个是CTR Prediction Model Training。因为之前我们可以说training bert ,training imagenet。Imagenet是取了一个数据集,bert是取了一个模型的名字,但因为取的是数据集和模型名,这让任务更加具体了,限定了任务的范畴,我觉得对于后面的时间来说是更加具体更好的。而我们的既不是数据集,也不是模型名,而是一个大家好像不是那么熟悉的一个任务的名字CTR。所以我们当时就在犹豫。踌躇再三我还是决定直接放这个任务的名字上去。


后面的“on 1 GPU”一开始也是没有的。一开始我们也在讨论在一块GPU上到底是一件好事还是一件坏事。后来想一想其实一块GPU是为了公平比较。只要一块GPU其实是利于大家复现的。能复现大家会更感兴趣,所以就把“on 1 GPU”也放上去了。


方法名CowClip是我拜托一个共同作者起的名字。我一开始起的名字是没有特征,也没有特点的,感觉就是adam前面加几个单词这种。本来我在文章中是把每个ID对应的embedding的部分叫做一行,一行是row,但是row就凑不出单词了,后来为了凑出cow这个英文单词,我就把行改成列了,这也是起名字的时候的一点小趣味。


图片


问:以你对推荐系统的研究经验,尤其是CTR Prediction这块,你觉得在这个任务或者是相关任务上,有哪些提升的空间和后续的研究方向呢?


答:其实对于这一点,当时写论文的时候我已经在论文附录中写了Furture Wook。我在里面比较详细地把我当时觉得之后可以做的方案都列出来了。


具体而言的话,第一点,我觉得如果想要部署到业界,最重要的工作其实是把单卡扩展到多卡。


第二点是可以继续扩大batch size,如把我们的128K扩大到256K或者更多。继续扩大batch size又有两个可以值得研究的小点。一方面和数据集有关。如果数据集不够大,但是batch size扩大得很大,其实就相当于慢慢地从SGD算法就变成GD算法了。在这种情况下的优化会越来越难,大batch碰到了它的优化上限。那么在这种情况下能够去做一些什么样的优化是值得研究的。另外一方面是对于更大的数据集,特别是业界推荐系统这个方面一些非常大的数据集 (可惜很多时候业界数据集是拿不到的),如果想在这上面继续去扩大batch size,怎么样能保证大batch下的性能?


第三点是我们的setting使用的是 adam optimizer加上L2-regularization。而事实上业界除了adam以外,另外一个embedding层常用的optimizer的是adagrad。业界为了减少访存压力,有的时候也不会去做L2-regularization。那么在这种情况下怎么样去调节超参是需要研究的。


第四点是在数据量极大的情况下,每个数据其实只能够训练一遍,不能像训练ImageNet一样去过好多个epoch。在这种one epoch training的情况下,我发现大batch training在第一个epoch会有一个很明显的下降。不过其实这也很正常,因为当使用一个更大的batch size,update的数量变少了,在前期训练都不稳定的情况下,步长走再大,也很难获得跟小batch一样的效果,所以这也是一个值得讨论的地方。就是说怎么样在one epoch training这种setting下去做large batch training。


最后一个是我们这个方法最本质的是针对embedding层中出现的一些现象做了一些调整,而其他领域也有embedding层,比如NLP。那我们是不是也可以把这个方法推广到NLP的embedding层中。


主要我就是列了这5个方向。


图片


问:之前你也提到说和伯克利那边的老师有一些合作。伯克利那边也都是一些很有名的教授,你觉得跟他们合作,包括你现在在新加坡跟尤老师一起工作,你觉得这些对你的研究产生了哪些影响?比如研究方向选择之类的。


答:我先说UCB的教授吧。我当时是在Alberto Sangiovanni老师的组里做的,本来说是去做暑期研究的,结果正好赶上疫情,所以只能做远程的。我感觉UCB里我接触的教授都是比较那种自由,包容的。举个例子,比如说尤老师就让我去做自己感兴趣的方向,没有必要一定要老师给你定一个方向去做。包括我去Alberto组里的时候,Alberto教授也没有什么硬性的要求,相当于是比较放养的。这样的方式对于博士生来说可能是有利有弊的,比如说对我来说,到现在为止都没有固定博士的研究方向,做的研究方向比较杂。好处的话可能是自己可以对什么感兴趣就去做什么,可以激发你科研的动力。这个好处其实大家应该都比较清楚,就是一个nice的教授不会让你感到非常push。


在UCB是Alberto教授下面的岳翔宇博士 (目前在香港中文大学)帮我入门的科研,我也是跟他发了第一篇文章。所以我觉得如果有一个博士生带着做科研的话,一开始会轻松很多,并且岳老师确实是一位很负责的老师。另一方面因为虽然Alberto本身不是做CV的,是做电路设计的,但是由于种种原因,组里不少中国人都还是做CV的,所以我其实跟像 Trevor Darrell和Kurt Keutzer的组里的人其实会接触比较多。当时我发的第一篇论文Trevor和Kurt都有指导。虽然没有见到真人,但是可以看到这两位老师都会打开overleaf,帮我们把整篇文章都梳理一下,还会做批注,我觉得还是很认真的。


还有一点我觉得也特别好,感觉他们组他们有一个风气就是文章没中之前先不要挂到arxiv上。因为很多审稿人看到Trevor和Kurt可能会有先入为主的好感。这样的话对审稿是比较公平的,我感觉这也算是他们一个高风亮节吧。


尤老师和我刚刚提到的UCB的风格也是很像的,我个人感觉可能是因为他也是从ucb毕业的原因,所以会有类似的指导风格。还是挺nice的。


图4 作者在新加坡国立大学担任助教工作

图片


问:你是什么时候开始接触计算机方向的?


答:要说接触的话其实我大一大二的时候就有所耳闻。因为我本科是南大的,当时我还特地买了一本周志华的西瓜书。那个书我觉得写得其实蛮好的,只是不太适合入门。这本书在你有一定基础的时候再阅读会很好,但是我当时就是用那本书入的门。然后我还去听了当时周老师讲的机器学习导论,那个时候开始对机器学习感兴趣。大三的时候,借助南大的郑钢奖学金,我得到了去 UCB合作的机会,到了UCB以后我就跟着学长开始做CV了。


其实我一直听别人说CV很卷,所以一开始是没有想做CV的。但是因为当时郑钢奖学金里面的机器学习项目只有一个,而且这一个正好是CV的,正好就申请了。这也算是一个巧合,但是做下来体验还是蛮好的。


图片


问:可以基于你过往的研究经验,对大家说说在研究上的一些建议吗?刚才其实也注意到你是从CV背景突然转到推荐系统方向的,可以说说你当时是如何快速入门一个新的方向的吗?


答:我个人也不敢说什么经验,因为我本身才博士二年级。如果一定要给一些建议的话,我想对一些没有想好到底是去业界还是去做科研的本科生说,只要你想去做科研,与其在那边纠结,不如说真的去做科研体验一下,体验个半年。对于之后的你来说,这半年并不会占用你多少时间,即使以后不做科研了,它也会是一段宝贵的经验。如果最后真的去做了科研,那这段经历会有很大的帮助。对那些想快速上手科研的同学我的建议是可以先去看看网上一些非常热门的课程,比如说吴恩达老师的教程。如果你的学校里没有相关的课程,可以去看一些比如非常火的网上会报道的代码库,你可以把它扒下来,自己去读一读,然后去运行一下代码去感受一下。这是一开始的一个感性的认识,然后你可以去联系一些导师。如果有些时候导师不能够手把手带你的话,你也可以去联系一些博士生。有些博士可能会想找一些学生合作。这样我觉得对于快速上手科研会是一个很好的帮助。


至于我是如何从CV转到推荐系统的,其实我觉得最重要的还是读。我当时一开始进字节的时候也感觉里面讲的很多概念我都是云里雾里的,都不是很清楚。然后我首先买了那种速成教学,当时买的是一本推荐系统的白皮书,它正好是我们组的leader写的。我就是从那本书开始学的。对基本概念有一个大概的认知了以后,就去看字节的模型的代码,把代码中的每一个部分都大概弄明白。对网络结构有一定了解之后,我就把之前CV中大batch的方法先用在 CTR上,或者说推荐系统上面看它的效果。如果发现效果不好的话,再一步步去分析效果不好的原因。这就是我整个的思路。


特别鸣谢本期访谈主要组织者:

月度轮值AC:盛律 (北京航空航天大学)

主办组织:VALSE Student Club


活动参与方式

1、VALSE每周举行的Webinar活动依托B站直播平台进行,欢迎在B站搜索VALSE_Webinar关注我们!

直播地址:

https://live.bilibili.com/22300737;

历史视频观看地址:

https://space.bilibili.com/562085182/ 


2、VALSE Webinar活动通常每周三晚上20:00进行,但偶尔会因为讲者时区问题略有调整,为方便您参加活动,请关注VALSE微信公众号:valse_wechat 或加入VALSE QQ S群,群号:317920537);


*注:申请加入VALSE QQ群时需验证姓名、单位和身份缺一不可。入群后,请实名,姓名身份单位。身份:学校及科研单位人员T;企业研发I;博士D;硕士M。


3、VALSE微信公众号一般会在每周四发布下一周Webinar报告的通知。


4您也可以通过访问VALSE主页:http://valser.org/ 直接查看Webinar活动信息。Webinar报告的PPT(经讲者允许后),会在VALSE官网每期报告通知的最下方更新。


小黑屋|手机版|Archiver|Vision And Learning SEminar

GMT+8, 2024-11-21 22:57 , Processed in 0.014275 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

返回顶部