00:05
哎,大家好,哎,我是谢毅,我来自于英特尔亚太超大规模云计算部门啊,今天我给大家带来的主题是不做调参霞,构建高效的云端AI应用。嗯,如果说起英特尔,大家第一个感受就是这是一家芯片制造公司,可是大家知道吗?在英特尔我们有一一万七千面的软件工程师,那么这个规模其实放到全世界,那他也是个顶级的软件公司,那么这么多17000名的这个软件公司,他们在做什么?那其实就是我们在做围绕着英特尔CPU周边的产品,构建了一个强大的A的啊,包括AR在内的一个软件站,比如说像数据中心啊,我们有非常这个丰富的这个啊软件站啊,为大家提供这个啊服务,所以今天呢,呃,我给大家带来的这个主题呢,主要包括下面这个几个方面,第一个会介绍大家这个我们英特尔在A软件站以及我们CP的这个产品图,后面呢,会是如何去利用这种BF16和in特八量化的这个数值精度来帮助我们做AI的产品优化。
01:16
那我们知道其实英特尔在工具链上面有个非常强大的这个产品,那么如何去利用英特尔丰富的这种工具链产品来加速我们AI的软件开发,最后是一些案例的一些分享。呃,如果在AR的领域呢,那现在比较成熟的一个啊,这个产品的软件站主要是CPU和GPU这两大类啊,呃,我们知道,那如果说硬件算来说,那有一些什么GPP,包括一些加速卡,那么现在国内也非常啊火,这个特别是从两年前啊开始,我们有无数个本土的初创公司在做这个AI的这个加速卡,但如果说起软件的这样来说,那成熟的只有这两家,那英特尔是,呃,这个提供CPU上面最强大的这个软件对战,那么大家这个耳熟能详的从底层的这个软件库,我们有像one dn MK啊等等这些底层库,再往上是我们的ten flow,那英特尔呢,有。
02:23
一个非常巨庞大的团队在做ten flow,基于CPU的这个软件的这个优化,包括这个upream的这个工作,那当然这个open v呢,也非常的这个这个著名啊,这个应该很多做相关推理的工作都知道这样的一个产品,那在这个中间镜跟框架之上呢,Intel尔提供了一系列的这个工具,比如说我们怎么去啊,帮助大家做量化,一个叫Intel尔newal compressson这样工具,还有Intel model zone呢,提供了一系列的优化过的这个模型来给大家使用。所以啊,我们这边还有一些没有提到的,像啊v tu啊啊等等啊,在后面我们会讲到。
03:09
在这个我们大家知道这个数值精度跟我们AI的推理跟训练的效率它是正相关的,呃,最成熟的这样数值精度是IP32,那么它现在是在这个training跟里面都是默认的一个数值精度。此外呢,我们还有 Bf16 FP16 in特八和in特16这一些量化的这个数据帧,那么呃,对 Bf16来说,它的呃数值长度只有FP32的一半,但它的优势在于呢,它的表达范围跟FP32是一样,也就是我们可以看到它的指数部分都是八个bit,那也就意味着AP32可以表达的一个数值,那在BF10我们同样可以表达,只是它尾数部分呢,比IP32要少,我们只要做个阶段就可以了。而除了这个BF16外的几几种数值格式,比如像IP16 in特16和in特八,因为它的表达范围跟IP32和in特BBF16是不一样的,所以我们需要去做一些量化的工作。
04:14
OK,那所以呢,这个如果想大家想要得到一个比较好的一个啊,这个性能,那么BF可能是大家比较好一个选择,因为这时候你其实你不用。做量化的工作,那如果BF16仍然达不到你的需求性能需求,那往往你就要使用更低的一个进度,比如说像特八,甚至现在我们还有一些厂商的研究INT4。呃,我们英特尔呢,做了大量的一个实验,那实验的结果呢,表明BF的进度呢,跟IP32呢,几乎它是一致的,那这边我们采用了一些啊,这个市面上比较成熟的网络,像五零啊,利用DS two啊,以及GMT,呃呃,结果下来这个精度是没有什么问题的。
05:05
那如果BF16满足不了要求,那么你可以使用这个in特八这样子一个啊低精度来做,把一个AP32的模型转成英特八呢,其实这本身是不难的,那难点是在于如何在只有啊1/4精度的情况之下,我们如何去保证我们的结果是没有问题的,那么我们可以一系列的手段,像对称量化啊,基于这个圈的方向的这个卷积全年级的量化,还有一些像啊精度要求比较高,我们可以使用IP32和特八的混用,以及我们感知量化训练等等,那么大家可能比较可能会担心啊,我们有这么多的这个呃优化的手段,那对于我工程师来说,对于我们的这个同学来说,这难度可能太大啊,大家不用担心,那英特尔提供了一系列的这个低进度推理工具包,来帮助大家来实现这些啊,量化的这个手段。那后面呢,我们会具体介绍一下如何去做。
06:02
那在介绍之前,我们先看一下英特尔志强产品线的这个AI的路线图啊,我们知道在数据中心啊,志强产品线的绝对是这个基石啊,给这个我们广大的这种应用提供了啊最强大的支持,可能大家手上经常玩的像微信啊或者王者啊这种游戏啊,社交啊,亦或是很多这种视频软件,那么其实它背后都有无数个这个强的产品线在支撑着大家的这个啊顺滑的这个使用啊使用感受,那么英特尔在AR上面呢,在2020年我们啊release了第二代的可扩展处理器,也就代号为CA这款产品,那么在这代产品上面呢,我们支持了啊,英特尔的这个英特八的这个数据类型,也就是所谓的V。那在2021年,那就去年我们有两代产品开发release出来,一个是啊库,一个呢是is,那么它们之间的差异是库是基于14纳米啊,Isceic是十纳米,但是库上有一个BF的数据精度。
07:09
啊,我们都叫做第三扩展处理器,那么在今年2022年啊,我们会release下一代第四代啊强可扩展处理器平台,那么在这平台上面,我们在上面跨时代的这个有了一个新的数据,嗯,数据类型我们叫做MX,那么这个指定精度呢,它是,呃,在BF16和英德八这两个数据精度上面呢,把性能提高了这个八倍。假如我们简单的算一算啊,如果一颗CPU它的IP32的,嗯,这个算力是啊,五个T的话,那么英特八呢,就是啊四五二十20个T,那再乘以八的话,就160个T,那么如果是个双路服务器的话,我们就可以达到320个T的这样算力,那么大家可以想象一下,320个T几乎可以和现在当前的这种AI的加速卡或者GPU是在同一个等级上面了啊啊,所有的这一切都是在嗯,不需要去外插一个GPU卡或者加速芯片的基础之上就可以做得到。
08:14
那么也就意味着我们很多以前需要去额外的一个GPU来做的这个AI完全可以在CP上去实现。那我们知道其实在于呃,AI的应用上面,这个计算是一个瓶颈,那另外一个就是就是内存,那我们也会有一个HM的skill来帮助大家去解决内存上面的一个问题。呃,那么刚刚我们提到了这个BF1BF16和英特八,那如何去使用我们BF16和英特八呢?我们知道其实在这个开发上面,硬件成本只是啊一部分,我们知道我们现在软件工程师非常贵啊,我们不可能让一个软件工程师去花半个月有一个月更长的时间去学习一个新的这个编程方法,那对于无论对于个人来说,还是对于公司来说,这都是很难接受的,那么英特尔呢,给大家这个考虑了这一点啊,提供了一个完善的这个软件解决方案。
09:14
我们先看一下这个如何在套里面啊,齿轮这边幺六。这几年这个进步非常之大,大有赶超ten flow的一个趋势,那么此前在前几年的这种战国时代,我们还有much,我们还有这个等,那么到目前为止,基本上已经收敛到这个ten这两大框架,那在里面我们如何去,我们知道左这呢,给了我们一个感受,就是在性能以及我们用性里面呢,我们需要去到个平衡纵轴呢,意味我的用性,应用性就意味着我是不是做upstream,如果我的所有的优化都已经这个upst streamam到我们的它系的官方code里面,那我对于我使用者来说,我只要下载这个官方code就可以解决了,那呃,Performance呢,是横轴,就意味着当然performance越高越好了。
10:09
但我们知道这个开源社区啊,是个大宅门啊,不是想就可以,比如说的这个是Facebook Facebook它有自己的一个考量,比如说他要考到所有的硬件的支持,如果只是在啊英特尔的硬件上支持了我们这些指令级,那么在其他的厂商不支持,那他可能会有一些考虑,是不是我需要去在mainstream里面去把这个integrate进去。那英特尔在为了考虑这就兼顾我们的这个啊up以及我们的性能技术之上呢,我们开发了一个in特尔extension for partto的这样一个插件,那在这个插件之上,你只需要做这么几件事儿,第一个先去下我们partto的官方扣,然后再下载我们的一个插件extension for,而且这些都是做。
11:02
做过了相应的这个适配,比如说的某个版本就会有对应的啊Intel extension的某个版本跟他相match,那然后在你用户的代码里面,你只需要增加两行code的啊,一个呢是导入啊,我们的part ex part extension,第二步加一个这个optimize的这个指定我的数据精度是BF16啊就可以了啊,非常的这个简单和易用。下面的这个呃,Link啊,我们的GI的地址可以上去看一下。那说完这个,如我们在ten flow里面去使用这个其实也是非常简单的,在ten我们已经做到了,这个E里面就官方code的都已经支持了,你所需要做的呢啊,只是需要去这个打开相关的开关就可以了,那我们支持这个cars s以及任意图的这个模型,那么在这三种框架之下,你只需要根据我们这个红色框框里面所做的这个事情,啊,把它这个稍加修改就可以去使用蝙F6。
12:11
那当然我们这里面还支持了这个BFFP16,呃, Bf16和FP32之间的这个转换,因为我们在某一些层级上面对精度要求比较高,那么我们就可以使用这个IP2和 Bf16的混合。呃,这是我们BFL的一个测试的一个结果,那在我们第三代可扩展处理器上面呢啊,我们能够拿到这个在三种这个模型啊,这个DRM和101里面,我们拿到从40%-64%不等的这样一个性能,那么这个对于我们开发者来说啊,我只需要修改两三行代码就可以拿到百分之啊50以上啊的这样50左右的这个性能提升,这还是非常合算的。
13:00
呃,那么如果BFL仍然满足不了你的要求,毕竟它的这个宽度还是16个bit嘛,那么你可以选择更加低精度的这样的一个啊数值精度,比如说像INT8,那么in特八呢,这个呃只有in特呃只有BF一半,那么如何在这个嘛只有一半的情况之下来实现我们的精度要求呢?啊这个会是有一些难度,那大大家不用担心啊,英特尔有一个呃工具叫做newal compressor的这样一个量化工具,那么它的一个原理就是我们使用一个叫枚举的这个这轮重举的一个方法,我们不断的这个输入一些这个输入的这个啊参数不断的跳,然后一直一直达到你这个预设的一个精度损失为止,当然你一开始需要去预设的,比如说1%的一个性能损失啊,进度损失,那么我们就一直按照百分之一来听,直到听到为止,如果听不到了,我们可能会就会改变一些部分层级的一个。
14:01
精度,比如说刚刚我们提到的,我们在某一些部分精度里面,我们可以使部分层级可以使用AP32或者 Bf16的这个精度来替代八,来达到一些这个这个精度跟性能之间的一个平衡。而且我们这个工具呢,是ten是的结合的。那下面这张图呢,就给大家说一下这个,呃,这个精度跟性能之间的一个啊,评估的一个结果,那横轴是这个啊,性能损失小于零就是啊,就就是有损失,那么大于零就是没有损失反而有所提升,那么纵轴呢是它的一个。呃,性能的一个提升。那我们可以看到。绝大部分的啊,几乎啊,这个每个蓝色的点就意味着一个模型啊,大家可以看到应该有啊几十上百个模型吧,几乎所有的模型都是在1%的损失之内啊,其中大部分都集中在0.5%之内,那么这个对于我们的像CV类的这个产品,那么基本上都没有问题,那在我们以很多这个音频里,比如说像TNLP,我们有大量的实验证明也都是没有问题的。
15:19
啊,那嗯,刚刚我们提到啊,如果你想要使用BF16亦或是INT8,那你还是需要去下载一些,这个是不论是插件也好,还是一些工具也好,那么可能大家觉得还是不太过麻烦,那不用担心啊,其实英特尔呢,这个跟腾讯一起合作,我们在这个啊基于腾讯虚拟机实例上面,我们创建了一些啊虚拟机的这个啊image,那么啊,就刚刚我说的BL6和八,我们都有对应的image,比如说BF16,我们叫英特尔BF16工具啊特八就是new,那么有了这两个image之后,我如何结合腾讯云上的这个虚拟机实例啊去部署呢?啊你只需要三步,第一步呢,你选择合适的腾讯云的虚拟机实例,像S5S6只分别是啊这个啊库和我们的S这两代产品,刚刚我们提到的啊,第三代扩展处理器,然后呢,你就选择我们虚拟机的镜像。
16:19
就是我们右边啊,这张图里面说的这两个link啊,只要选择这两个镜像,然后第三步就是点击确认就可以完成部署了。啊,非常的简单。那么下一步呢,我们会介绍一下英特尔在这个啊工具链上的一些开发,就是大家在开发硬件的时候啊,开发软件软硬件的时候,通常有一个这个困扰,就是我不知道我系统的性能平定在哪里,就是我首先要知道它问题在哪,我才知道去怎么去提高它的性能,那么呃,英特尔呢,会有一系列的软件站啊,软件工具链会帮助大家做这个事情,那第一个呢,就是微啊,可能在很多人都知道这个微profile这个工具啊,几乎是软件开发者居家生活之必用啊,那么在这里呢,我们有非常多的这个,这个虽然这是一个工具啊,但是它里面有很多的功能,比如说啊,我怎么去找到系统的热点,找到系统热点的意思就是。
17:18
找到我消耗CPU时间最多的这个啊,这个这个函数,因为我们知道,如果你优化一个函数啊,这个函数整个占比只是1%,那你哪怕你把它整个消掉,那也没有什么意,所以我们一定优化是优化在我们的hot,就是热点函数才有意义,然后呢,我们也会告诉你啊,这个可疑的这个点啊,比如说我发现啊某一个函数它的CPI过高,那么我们就会去告诉你,提醒你啊,你这个地方是需要去优化。第三个呢,是啊,我们甚至可以告诉你哪一行代码,它的memory的这个消耗啊,就是内存消耗过大啊,都会给你一个相关的提示。我们还可以基于这种微架构的一些分析,以及memory access这种分析来告诉你我整个系统的平均在哪里,是计算上面呢,还是在内存的这个访问上面,那么对于内存访问我们还会细化到你是cash Miss过多,还是我DM的这个啊存啊出现了问题,所以所有这一些都可以在这个强大的工具里面得到一些这个题啊验证,当然我们还支持我们一些GPU啊,一些这个啊,对于一些hpc的一些分析,我们都是有对应的一个啊场景。
18:32
后面呢,我们会给大家一个子如何使用这快速系统的热点,那上这张图就是我们抓一结果,大家可以看到啊,我们是按照这个hospital bottom up,就是啊,把最热的这个函数列在最上面啊,以此类推,比如说这great interect这个函数,它的这个消耗的CPU时间是四秒钟,那是最大的,那我们就要看是不是需要去优化的,并不是意味着我的CPU耗消耗的时间越多,它就一定需要优化,因为本身我这边就是这个使用量最大,也不一定它就有问题,那反而在一些,比如在这里我们看到啊,这边的这个啊。
19:14
这个粉色的这个框,那么就SP time,就是我们自选索这段时间啊,有两秒钟,那这里面呢,我们就会啊,把它这个高光会告诉你啊,这个地方应该是有问题的,那么你就应该有意识的去看一看这块是不是需要去优化它。那么你,呃,如果想看到这个,因为这里面还是比较相对来说,虽然我们把所有对战都已经列出来,还是比较聪明的,你甚至可以双击这个代码去看到我对应的source code是哪一行,就在这里啊,你就可以看到,哎,我这边消耗了两点几秒的时间,那这两点几秒在哪一行code里面啊,这个消耗的呢?在这里面就可以看到。然后你这个你还可以快速的去对应这个我的这个这个啊汇编代码啊,也可以去看到。
20:01
那么如果我汇编出了问题呢,这个呃,我对汇编不够了解,那你也可以右键去查考查看我们的指令的参考手册,所以啊,能想到都给大家这个想到。那下面一个呢是呃,我们如何去,呃,刚刚我们V呢,是帮助大家分析我们的热点在哪里,那分析热点之后,我到底这个热点函数还有没有优化空间。呃,如何去优化,那么这就是我们下面一个工具给大家啊,这个提供的这个这个性能我们叫做优化策略手in特尔d adviser自动分析,那么我们知道呃的意思是什么,就是我系统的这个,我们刚才也提到系统的通常两个,一个是我们的memory,就是内存啊,包括我们的cash,第二个就是我们CPU的这个计算力算力,那在这两个里面呢,我们会一个系统一旦确定了,那基本上这个我们就可以画出这样一个如FLY的一个图,那在这个斜线的这个以下。
21:06
那意味着这时候呢,其实memory,也就是我这个时候,其实整个系统是被这个。啊,内存帮助的啊,不是计算,等到了内存你大大到一定程度的时候,那么这就是系统的瓶颈就在于我的计算上面了,当然我们不仅仅画出这个针对DM的,我们还可以去,我们还画出了像L3L2和L1,就是我们的三级缓存,嗯,这个意思是什么呢?就是你如果你发现你的这个系统这个内存有问题,那么你可以去优化它,你可以让它根据我们叫流水线的结构,可以把这一些塑料房的内存呢,把它变到cash里面去,那这样子的话,它的这个马上它的这个带宽就上来了,那就会这个达到更好的这个计算的这个算力。那么这里面看到有个红色的点和一个绿色的点,那红色的点的意思是什么呢?就是标准证明有问题,这个圈越大,那么它的问题就越大。
22:05
所以这时候你应该就想到我在这里面我应该优化这样一个啊,这样子一个循环或者或者算子吧,那么英特尔深圳呢,会告诉你在这里你下一步的优化的方法是什么。那有了这样一个的工具啊,你就可以知道哪些点是可以优化的,而且哪些点是优化,比如说我们旁边这个绿色这个点,它很,那它的这个,呃,确实它呢跟塔还是有些距离的,但是它本身的算力占的很小,所以我们也告诉你,其实在当前的情况之下,它是不值得优化的,当然如果你把你红色这个点优化到极致,那么有可能它这个绿色点就会变大,也会变红,因为这个时候它所占的比例就会变大,那所以呢,呃,这个对于我们开发者来说,这非常好用,这下面这呢是呃,法国空客公司的实验室给出来的啊,因为他非常兴奋,英特尔有这样的一个工具来帮助你,告诉你你的整个的。
23:05
空间在哪啊?Step去优化我们的memory,去优化我们的这个量化。呃,现在我们可以给大家分享一个案例啊,我们如何使用我们刚刚提到的这些啊框架的优化来帮助我们这个优化在CPU上面的一个啊AI的应用,呃,这是一个视频编解码的一个应用,那么我们知道啊,在视频编解码里面呢,如果这个CPU可以做,GPU也可以做,甚至一些ipg加速卡也可以做,那么CPU上的最大的一个优势呢,是在于啊,我们的这个啊质量会更高。那么但是呢,即便是在CPU上编码,那近几年啊,我们的视频前处理啊,变得越来越重要,比如说我们说的这个短视频增强,会增加一些这种啊,炫酷的这种功能啊,比如说美白啊,什么色彩增强,降噪啊,这个超分啊等等,那么这些目前呢,都是,呃,都是用AI在做的,整整个这个一类的发展方向就是用I代替传统的数值方法,那么即便你整个这个编界码是在AR上面做的,那这一块也由于这个AR的算力要求比较高嘛,我们也需要一个额外的GPU来帮助在做这个AI一部分。
24:31
那我们要,那是不是我们可以有一个方法呢,来帮助我们大家把这一部分呢,也从GPU的集群来到CPU之上,那是可以的,那我们啊,如果可以的话,那就会极大的。降低我们的运维成本也可以,我们的这个开发成本也会啊同步的一个下降,因为你这时候你不再需要额外的一个GPU的集群。那我们怎么去做的呢?啊,我们就使用了entire extension for pio啊这样子的一个啊插件啊,它要做的事情有两有两大块吧,第一个呢,我们做了一些啊算子的融合啊,包括一些图优化,然后我们也使用使用了BF16的这样子的一个数值精度,那通过这些这个优化之后呢,我们把本身运行在GPU之上的这样的算法来迁移到那个CPU之上。
25:20
在保证精度上精度的基础之上呢,实现了我们实时转码的一个服务啊,极大的提升了我们的一个性能。啊,那这个我的这个技术分享就到这儿了,下面一部分呢,是啊,我应这个腾讯咱们的这个啊,这个举办方的一个要求啊,给大家这个讲讲啊,对职场的一个啊看法啊,其实这个我自己是非常诚惶诚恐啊,作为一个这个软件的老兵啊,我是零六年的这个硕士毕业了,今年已经工作16年了啊,我完整的经历了中国的互联网厂商的这个蓬勃发展。
26:01
但是我到如今仍然没有实现财务自由啊,所以呃非常惭愧啊,没有这个这个多少经验给大家分享,但呃我非常愿意呃跟大家说说我自己的一些想法,因为呃我一直在外资公司里面这个工作,那么呃从软件开发来说,我们经历了整个这个软件的开发热点,我们刚毕业了的话,可能Windows的这个驱动啊非常火热,然后又经历了像Linux驱动在后面到安卓的应用开发,再到今天的我们这种啊如日中天的AR开发,那么我们经历过非常一波又一波的这种开发热点,那么我如何在这个各个这个长这个这个阶段能够保持自己的竞争力,那如何成为这个行业里的这个领袖啊,或者技术力的,呃,就是每个人都渴望成功啊,包括我自己在内。那么在呃。在在做职业生涯的初期啊,我也经常这个这个秉烛读啊,去阅读了很多这个成功学的这个书籍,像什么卡莱基成功学案例如何这个七个习惯帮助你这个成为一个优秀人士等等,那我也希望某一天这个在一个这个雷电交加的夜晚啊,我可以像王阳明一样,这个悟道得到一个呃。
27:25
这个是这葵花宝典啊,Sorry,不是葵花宝典啊,这个什么秘籍让我这个顿悟,但实际上没有啊,到今天所有的那些书籍上面写的是啥,我一点也不记得了啊,我只是,呃,记得当年我的大学的老师跟我说过一句话,如果你想在一个领域里面成功。你只需要三个行,第一个呢是自己行,第二个是有人说你行啊,第三个是说你行的人要行啊,只有15个字啊,其中大部分还是重复的啊,非常简单啊,直到现在我记得非常非常的老,那么自己型这个很简很很容易理解,打铁还自身硬吧,那么如果你这个天资聪慧,这个天赋异禀,那当然这不是问题,那如果你不是智商一般,那么你可以通过自己的一些嗯,刻苦努力也可以,也可以行。
28:18
那么呃,剩下两个就是你的情商了,要有人说你行,尤其在现在这个社会里面啊,比较内卷,那么没有人说你行,那你是万不行的,说你行的人行,当然这个是更重要了啊,如果哪一天小马哥走到我的这个工位上面,拍拍我的肩膀说,哎,小谢,你很棒啊,我看好你哦,那么我相信这个这个我的这个前途一定非常光明啊,所以嗯,管理好自己,管理好你自己的这个朋友圈啊,非常非常的重要。呃,很多同学呢,也在这个,呃,担心啊,这个做软件开发的人就是吃青春饭的,那么呃,到了35岁之后,我还在这个行业里面有竞争力吗?
29:03
那么这个啊,其实我跟很多同学探讨这个问题啊,我认为这不是问题,呃,这是一张这个我们我的一位领导给我看的啊,这个子他在一个纸箱里面,看样子他的这个神情非常惬意啊,很舒服。那么,呃,我们领导用这句话来告诉我们什么呢?你需要去跳出你的舒适圈,你作为一个子,你的这个。天地应该是这个广阔的这个草原或者山丘啊,不是这这个纸盒子,那么呃,舒适圈是这个是一个温水煮青蛙的事情啊,一开始可能你还有一些想法,但是慢慢慢慢着你的这个这个这个锐气啊就被消耗殆尽,慢慢你觉得哪怕这样子一个小小的纸盒子,让你觉得也非常的开心,也非常的这个舒适,呃,不是要劝大家要去跳槽啊,我要换个领导或者怎么着啊,更多的是实让大家有这样子的一个危机意识啊,当你觉得自己啊,所有的这个啊,一切都在尽在掌握的时候,那么你要问问自己,是不是危险就在你身边了,因为你到了35岁,如果你做的事情仍然跟刚毕业这个两年,三年五年的同事没有什么差异的时候,那你的薪水又是别人的两倍,那么你想象一下你的危危机在哪里啊?所以呢,你到了。
30:28
一定的年纪,你的这个贡献不一样。你不可能说我到了35岁,我还跟我的这个呃,年轻的同事去拼,熬夜去拼,嗯解bug,那你一定是这个没有优势的。所以你需要找到自己的适合自己的一个新的一个方向和这个啊去。好,那我今天的分享就到这里啊,非常感谢腾讯同学的这个邀请啊,也期待这个我们的每位同学都能有一个美好的未来。
31:01
谢谢大家。
我来说两句