机器学习大会印象

    天气变冷,桂花飘香,又一个秋天来了。上海的冬天阴冷潮湿,夏季酷热难耐,春季虽好但很短,唯有秋季不仅风轻云淡、景色怡人,而且可以慢慢品味,从9月开始,一般持续到12月底左右。

    这个周末因为有中秋假期,所以休息三天。三天里,第一天参加了机器学习大会,早上七点多出门,晚上十点多才回到家,足足在会场呆了一天,really a long day。第二天还是参加了机器学习大会,也是从早上到晚上,one more long day ^-^。

    多年来,参加的技术会议难以计数,而这一次我特别投入,几乎全程在场,很多年没有这样了。那么这一次为什么如此认真呢?

    第一个原因是想学习。首先想听听别人怎么想某某方向,怎么看待某某问题。对于有些问题,虽然自己也理解,也明白,但是还是想听听别人怎么说。另外,当然也想学到一些新的东西,弥补认识的不足。古人说,君子戒慎乎其所不睹,恐惧乎其所不闻。对于创业初期的我来说,这句话真的不过头,因为认识的不足就可能导致方向的错误。

    我听的第一场演讲是Michael Wong的,他是C++语言方面的专家,去年C++大会在北京见过他,给我很深的印象。而且他目前在做的事情和我做的方向有相同之处。他在语言层为AI加速,我在更低的推理引擎和硬件接口层面做加速。

    因为做的大方向一致,所以Michael的很多分享都说到我的心坎上。比如,在下面这张表中,Michael非常好的归纳了运行推理过程的几种不同做法,第一种是直接在Tensorflow/Caffe这些同时支持训练和推理的框架下运行,这种方法最简单,但是速度也是最慢的。第二种是导出给专门的推理引擎,比如OpenCV的DNN便属于此类,因为是专门为推理写的,所以速度一般要快一倍左右。第三种方法是编译优化,Michael所在的Codeplay公司便是做这个的,取名为SYCL(发音与SQL很像)。第四种方法是重写推理引擎,这是我(Xedge.ai)目前在做的。四种方法从上到下,复杂度不断提高,技术难度也在加大。

640?wx_fmt=jpeg    

    在第一天返回的路上,我的伙伴也夸赞Michael的归纳,我们一边走,一边大声叫好。再附上一张Michael讲解这张表时的照片吧。

640?wx_fmt=jpeg

    在Michael的分享中,还有一个内容让我拍案叫绝。那就是下面这张照片里的“星空图”。说“星空图”是比喻,因为看起来有点像。Michael自己也承认这张图太复杂了(too comlecated graph)。但我还是一眼就看懂了,因为我冥冥之中就希望看到这样一幅图,用来印证我的推测。

640?wx_fmt=jpeg

    先解释一下这个神秘的图吧。首先左侧的摩天轮是在AMD GPU上的测试结果,右侧是在ARM Mali GPU,也就是移动设备上的测试结果。外圈的白色数字是描述不同的模型,与一条从圆心的射线对应,射线的长度代表使用GPU加速这个模型的效果,白色圆形代表基准情况(1X),因此射线越长代表加速效果越好。明白了这些后,就可以得出很多宝贵的推理了。

    - 对于相同硬件配置,不同模型的加速效果是不一样的,对于有些模型很好,对于有些模型,使用GPU更差了。

    - 对于相同模型,在不同硬件上的加速效果也是不一样的,有的在AMD这样的大型GPU上好,有的在ARM这样的小规模GPU上好,原因当然也好解释,因为不同GPU的内存拓扑结构和缓存结构都不同。

    根据上面的结论可以进一步推出,很难找到一个适合所有模型和适合所有硬件的加速方案。或者说,这不是一个可以完全解决的问题。而是一个永远没有止境的问题。这样的方向才适合老雷啊,如果一下子就解决掉了,那还有什么意思呢?换句话来说,老雷关心的是永恒的问题,比如Bug/Debug,比如安全漏洞和安全,比如调优......还有么?哈哈,这些已经够忙活到五十岁了,其它的现在不能说。

    Michael Wong的演讲在我意犹未尽中结束了,提问环节我问了一个问题,问他如何看待NPU的影响,他的回答也让我非常满意,他很坦诚地说,NPU会努力做现在软件优化所做的,但是NPU的灵活性和可移植性会是弱项,根据他20多年的工程经验,他认为灵活性和可移植性也是非常重要的。

    第一天下午,给我很多感触的另一个演讲是袁老师的《大规模深度学习引擎的最优结构》。袁老师也在AI方向上创业,与我扎根边缘和终端不同,袁老师深耕的是云端,或者说是大规模分布式训练。在演讲中,袁老师分享了他的很多工作成果和感悟。

    袁老师演讲的风格也是我很喜欢的,先讲背景,回顾硬件方面的创新。他先介绍了Nvida的DGX-2系统——史上最强大的GPU工作站。16片V100 GPU高速互连,算力高达2-petaFLOPS。

640?wx_fmt=jpeg

    在介绍DGX-2时,袁老师特别强调了Nvlink——Nvidia的杀手锏,GPU互联技术。Nvlink可以在GPU之间提供高达超过百GB(B是字节)的数据带宽。并行计算中,多核之间的互连始终是个关键的技术,我在我后面的演讲中,也特别介绍了NPU中的互连挑战。

    除了DGX-2,袁老师还介绍了IBM的Power9。

640?wx_fmt=jpeg

    大约去年这个时候吧,我在北航边上的致真大厦里,和FaceOS的伙伴们,一起近距离观察过Power9的服务器,当时印象很深,跑了几个测试,感觉很强大,当然噪声也非常大,我第二次去的时候,就搬走了。Power9的特色除了有蓝色巨人的独特处理器外,还有很牛的互连技术。根据wikipedia的数据,多项指标都与Nvlink相当。

640?wx_fmt=png

(https://en.wikipedia.org/wiki/NVLink)

    在介绍了硬件背景后,袁老师转变方向:DGX-2虽好,但是太贵,也缺少弹性,话锋转向分布式训练框架。

    在切换到软件话题时,袁老师说出了我心中的一个强音。硬件再好,“也需要更好的软件”。是啊,没有好的软件,硬件的使用率会很低,白白浪费。


(插入此辐插图多次都失败,不知为何,可能是AI识别引擎发现敏感内容,AI的误判何其多也,也罢)

    

    接下来,袁老师很详细地介绍了名为OneFlow的分布式训练系统。介绍了其中的关键技术,包括跨机器通信,以及任务分割,去中心化,降低任务依赖性等等。特别给我印象深的还有袁老师的公司名,一流科技。真是好名字,加油!

    

    第一天中,我还听了其它几个演讲,包括来自香港大学的Michael Kuo所讲的医学影像识别,以及格灵深瞳的自动训练系统。为了避免流水账风格,不详细介绍了

    

    第二天上午的重头是Michael Jordan的keynote。乔丹教授因为培养了吴恩达这样的AI领域风云人物而著名。

    乔丹教授的演讲分两个部分,第一个部分是机器学习的经典方法。他先回顾了机器学习的大致发展历程,从上世纪90年代开始,每10年一个间隔。

640?wx_fmt=jpeg

    因为深度学习太著名了,很多人甚至忽略了机器学习的其它方法。回想我当年翻译《机器学习》那本经典教材时,神经网络只是其中的一个部分,虽然是比较重要的部分,但是篇幅只是全书的十分之一吧。

640?wx_fmt=png

    乔丹教授在介绍机器学习的多重决策方法时,举了一个生动的例子:花生米与过敏的关系,很生动。

640?wx_fmt=jpeg

    主题演讲的第二个部分是UCB的分布式训练系统:Ray。

640?wx_fmt=jpeg

    下面的照片是乔丹教授在解说Ray系统的架构图。   

640?wx_fmt=jpeg

    下午的演讲中,给我印象很深刻的有顾骧(读乡)老师的《工业互联网中的深度学习》,他介绍了如何使用深度学习技术来辅助检修飞机发动机。

    去年曾经在GE上海site的一楼展厅近距离看过飞机发动机,当时就感觉很震撼。这一次,在顾骧老师的演讲中,进一步大开眼界,看到了飞机发动机的内部叶轮。

640?wx_fmt=jpeg

    “君子戒慎乎其所不睹”,那么睹前所未睹是非常开心的。

    看到正常的发动机叶片已经大开眼界,但还没完,还有出了问题的叶片照片。

640?wx_fmt=jpeg

    上图右侧两张是有问题的。


    这次两天全程参与的另一个原因是,我也有分享任务。我讲的是边缘端优化,其实很大篇幅介绍了TPU的内部设计、指令集和软件栈,并且花较大篇幅讨论了TPU中的多核互联问题。

640?wx_fmt=png

   很多人都听说过TPU,但是TPU的内部设计却不清楚。或者说,关于TPU/NPU的内部设计,今天还是很敏感的技术话题。   

    AI的大爆发,为处理器的大规模并行提供了一个强需求。这将把处理器的并行度提到一个新的高度。今天,CPU的核数是1或者两位数,GPU的数是三位数,TPU内的核是五位数(65535个)。多核带来的直接挑战是互连问题。为了说明这个挑战,我特别回顾了CPU领域的QuickPath和XEON Skylake引入的环形互连总线。 

640?wx_fmt=png

    软件方面,TPU使用的是复杂指令集,CISC。这个选择背后蕴藏的深层道理是CISC指令集需要复杂的编译器,但是宁可在编译阶段多花时间,让编译器寻找最佳的并行方案编码到指令中,目的是执行时速度快,硬件简单一下。

    这意味着NPU的编译器将是有挑战的一个新领域。这也是xedge.ai在努力的一个方向。

    总的来说,NPU不是银弹。NPU是为了提高速度,这要求硬件结构相对固定,加速效果才好,但这样就会损失通用性。而增加通用性后,就会增加软件层的复杂度,增大额外开销,降低速度。这几个因素交织在一起,相互制约,我把这个制约关系简称为NPU的齿轮定律。

640?wx_fmt=png

    

    在古老的文化经典《荀子》中,开篇第一句话就是学不可以已。意思是学习应该永不停歇。套用大会上的一句话,AI时代,机器每天都在学习,何况人类呢?

    总结一下吧,两天的会议收获还是很大的,一是遇到同行而产生共鸣的快乐,自古便有高山流水觅知音的佳话,在互联网时代,行业细分的厉害,遇到一个有共同语言的同行,思想产生共鸣是很难的一件事。另外,学习到了新知识,老友相聚,认识新朋友也是很快乐的。



***********************************************************

正心诚意,格物致知,以人文情怀审视软件,以软件技术改变人生。

欢迎关注格友公众号

640?wx_fmt=jpeg


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值