人只不过是一根苇草,是自然界最脆弱的东西;但他是一根能思想的苇草. --- 帕斯卡
人类一思考,上帝就发笑 --- 米兰昆德拉
GTC是Nvidia组织的关于GPU技术的大会,随着深度学习的蓬勃发展,3D技术的演进及并行计算等已经慢慢地成为了较成熟的技术而较少地展示;更多的是AI及深度学习在各个领域,各个层面的布局、应用及展示。GTC的举办地从最开始的美国硅谷一个地方发展到现在的包括中国,欧洲,日本等7个地方。这次中国的GTC(11/20~11/22)从以往的举办地北京移师到苏州金鸡湖,参会人数破纪录的超过了5000人。带着一个并行计算演讲的任务,比较全情投入地参加了3天的大会,在此,做一些记录及思考,偏主观个人经验及感受,但也希望能给大家带来一点了解及思考。
1 自动驾驶的workshop
汽车是一个巨大的工业化产业,技术含量及附加值较高,覆盖的产业长,用户规模大且使用频繁,是很多大城市及国家的重点产业。同时,全世界每年都会有上百万人(WHO2015年报告为125万)因为车祸而死亡,相应的财产损失更是万亿级别(用汽车保费*车辆数等进行简单估计:))。因此,汽车自动驾驶可以算是当前人工智能领域最大的一个商业研发场景。在11/20的workshop中,Nvidia邀请了中国几十家自动驾驶相关厂商的上百人,包括上汽,吉利,小鹏等参加了这个"高端产品推介会”。在芯片领域,譬如早期显卡的笔记本市场,赢得的一个笔记本产品叫一个design win,在汽车自动驾驶领域,虽然更加复杂,Nvidia也正通过优秀的产品参考设计,举办类似的workshop等等,慢慢地在争取越来越多的汽车企业及方案提供商采样Nvidia的芯片及系统,下图是当前Nvidia公布的一些合作伙伴。
1.1 超强计算力的底层硬件
AI需要比较强大的计算能力,自动驾驶根据自动程度划分为L1到L5(完全不需要人的操作)5个等级,Nvidia提供的最新的AI平台着力于L2到L4的计算能力支持。根据不同的需求,它分为Xavier-S, Xavier和Pegasus 3个计算平台,具体的一些性能参数如下:
从上述性能可以看出,Pegasus平台比史上最强核弹V100的AI计算能力还要强悍1倍以上(因为op不是fp16等了)。
1.2 强大丰富的软件生态
硬件和软件是相互依存的,没有强大的软件,硬件的性能发挥不出来;没有丰富的软件生态,硬件也没有太多的发挥空间。在汽车自动驾驶领域更是如此。Nvidia是一家芯片公司,计算公司,但随着和汽车领域的相互合作(差不多3,4年左右的样子),对自动驾驶有了越来越深的理解。它把整个软件栈分为 Drive OS,DriveWorks和Driving Application3个层次,具体如下:
- Drive OS:最底层,也是通用Nvidia GPU的支持,包括driver,cuda,及TensorRT等,是必不可少的部分。
- DriveWorks:中间层,是对汽车这个特别场景设计的硬件适配层,汽车自动驾驶涉及的感知器件包括Radar, Lidar, IMU, GPS和CAN等,这一层有对于这些典型硬件的参考使用设计。这层用户可以使用自己的初始化程序及算法等;对于参考设计不支持的感知器件,也需要用户在这一层做针对性的设计。
- Driving Application:上层,主要是Drive AV和Drive IX。Drive AV负责感知车外的世界,譬如说周围的汽车,可行驶的路线及交通信号灯等;Drive IX负责感知车内的情况,主要是驾驶员的指令及状态等。这一层用户可以有更加个性化多样化的设计。
1.3 更贴切的设计理念
Nvidia根据在汽车自动驾驶上经验的不停积累,在解决具体的问题时,设计理念,思路等也有了一些转变:
- 最重要的是安全:早期的自动驾驶侧重在提供端到端的解决方案,就是根据汽车周围的各种环境情况,直接给出汽车的驾驶决策。现在发现,即使这种端到端的方案性能有可能是最好的,但肯定不是最合适的。自动驾驶是这么一个人命关天的大事情,而机器学习很多时候又有很多的不可解释性。因此,整体的解决方案,一定要做到可控并且让乘客可理解。所以,AI的结果,需要具体到周围(至少180度)的车辆,接下来要运行的path,前方的sign等等,需要给出具体的识别并且显示出来,让人也能理解它是怎么想怎么开的。
- 不仅仅关注外部:原则上自动驾驶只需要关注外部的环境就好,但在当前L2~L4阶段,也需要对车辆内部的信息进行响应,监控及反馈。譬如需要对司机的各种语音手势等命令做出恰当的反应,同时也需要对司机的状态进行监控及反馈,特别的司机是不是处在疲劳状态,眼睛是否在有效的查看行驶状态等等。
- 通过游戏等进行极限测试:现实中比较难以得到各种极端情况来测试自动驾驶系统的表现,可以通过游戏等场景来进行模拟测试,也测试为主,训练为辅(用游戏的场景来大规模训练不利于真实的场景)。游戏仿真包括SIL(software in loop)和HIL(Hardware in loop)两种。海量训练的数据基本还是用真实的数据,然后可以分阶段,早期有监督的还是需要采用大量的人(1000+)进行标注,到中后期以check及关注感兴趣区域为主,这时候可以用一些算法做辅助。
此外硬件安全也是特别重要的,Nvidia专门开发了IST软件不间断的对硬件进行safety测试。
1.4 用深度学习加强冗余设计
因为安全是至关重要的,很有必要进行多维度的冗余设计。在汽车驾驶过程中,最重要的2个点是:距离前方汽车的距离,及前方汽车和当前汽车的相对速度。普通的会用Radar,Lidar等进行测距,较常见的也会通过2个摄像头通过3维重建等计算距离,计算相对速度等。
但在现实情况中,有可能摄像头会有微小的上下左右的移动或者换动,一方面需要对这些硬件进行不定期的软件矫正等。另外一方面Nvidia给出了一些其它尝试,直接用深度学习网络识别得到距离和相对速度,从他们给出的结果来看,较近距离(<~60m)时网络识别还是比较准的。因此,在实际情况中,可以用多种方法进行投票,然后找一个相对合理又偏保守一点的结果。
2 GTC Keynote
黄教主的演讲历来是GTC的重头戏,在开场前30分钟,排队已经排成下图这个样子了,信仰:)。最终整个3000人的演讲厅无意外的座无虚席。然后Jensen的着装及演讲风格还是一如既往的(优酷的视频链接,从学口语及演讲角度也可以感受下),然后我个人的3点特别感受是:
2.1 AI在GPU上的应用
平时大家都是用GPU在其它的应用场景上做AI的应用,这一次,Nvidia在自己GPU渲染上也终于使用上了AI,并且效果还很不错(如上图)。这个技术叫做深度学习超级采样(DLSS)技术。基于 Turing 架构的 DLSS 由两个模型组成,其中一个模型经过训练后可根据原始图像生成超高画质图像,另一个经过训练后可实现超分辨率并以此作为输出。经由Tensor Core 的计算,RTX 系列显卡可以同时实现高画质和高分辨率。
AI做为一种基础的设施及能力(将来是要和最厉害的人在除了想象思考力之外的所有能力上比肩的),应该是可以在各个领域各个角落发挥出重要作用的!只要有价值。
2.2 CUDA平台
越来越多的人也意识到(Jensen印象中也提到过类似的),Nvidia之所以会在高性能并行计算,深度学习等领域取得如此巨大的成功,如果非要找最关键的一个点,那就是CUDA,它是和C/C++,python等一样可以为成千上万的人简单学习后就可以使用的一种并行编程语言及框架。特别的,它比较好的平衡了上层语音,底层硬件指令集及不同的架构等之间的关系而定义了ptx这一层,可以比较好的向前兼容,又能不错的向后扩展。
在这次GTC上,Jensen回顾了下CUDA的发展过程,差不多有12年的历史,从一开始的寥寥无几的下载到过去一年cuda的下载量达到了600万。一个小插曲:回忆Fermi/Kepler等架构时发觉听众没有反应,Jensen即兴用中文调侃了下,并且期待下一年的时候可以是“讲的是英文,听众听到的是中文”。现在机器翻译及NLP发展这么迅猛,包括阿里的天猫精灵,明年这时候机器自动翻译应该还真是很有可能。
2.3 其它挺震撼挺有意思的点
T4 inference的性能:如果只是一个数字(ResNet152 每秒识别1600多张图片),没有感觉。但如果识别具体的花,然后用满满的屏幕(15m*6m?)来展示性能对比时,还是很震撼的。所以,选一个具体常见的场景,并且进行可视化的展示是很有必要的,毕竟人是视觉情感动物:)。
加州自动驾驶:用Nvidia自己的整套解决方案,在加州进行了全程的自动驾驶并记录。这种富含信息(不仅仅是自动驾驶了一段路,而是路上所有相关目标的跟踪,规划等等)的demo,给普通人对自动驾驶极大的信心。因为看见,所以相信。因为更具体更全方位的看见,所以更容易坚信成熟汽车自动驾驶技术的马上到来。成本普及到普通的车?那应该还需要更长的一段时间。
跳舞的机器人及同步跳舞的Jensen/MJ/李小龙:机器人可以很流畅地跳舞,虚拟的人可以和另外一个人同步跳舞,挺好的一个展示。从这有带人工智能的机器人快要破茧而出的感觉。
3 数据中心和云计算基础架构分论坛
3.1 用GPU加速时序数据的分析和查询
在这个session中我present了过去半年我们和TSDB团队一个关于并行计算的成果。在时序场景中用GPU加速了时序数据查询及jason解析等,效果是原来CPU版本的~30倍,在此分享了一些通用的设计思想,具体的可以在ATA基于CUDA的应用加速方案设计方法找到。其中有一个和AI的思考点是:
- a. AI本质上是把传统方法的60/80分提高到90/98分;
- b. 在某些领域,因为这种提升,实现了从偏人工到偏自动化,从不可用到可用,可以理解为0到1的突变;
- c. 但AI本质上还是一种提升精度/准确性等的方法,在部署到实际的应用场景中时,性能是特别重要的点,并行计算(先抛开硬件)还是特别重要的。
3.2 基于高效视频计算框架的云端视频结构化分析平台
优酷的盛骁杰同学做了这个分享,优酷已经开发出了AI视频异构计算框架,包括视频图片的下载,解码,图像的处理,及一些AI的应用等。一些AI应用包括对视频进行自动化的分类,内容理解,对海量小视频进行质量估计等等。
优酷有海量的视频数据,并且也有用户的评论信息等,是有非常多的内容挖掘分析等的AI场景。
3.3 AI硬件基础设施
百度研发了AI异构硬件GPU盒子X-MAN,采用了单机16卡,液冷散热等;训练集群超过数万显卡。华为有发布面向数据中心的G5500异构服务器,支持8卡V100或32块P4,支持一键切换异构拓扑;面向园区等设计了G2500智能分析服务器,存储容器达240TB。腾讯美团科大讯飞等也有类似的基础设施。
3.4 其它
DaoCloud致力于用容器构建AI计算平台,使用AI有主机、虚拟机和容器3种方式,容器越来越成为主流计算架构。下图比较通俗易懂的说明了容器的好处,需要有额外的Docker这一层但没有了庞大的虚拟机OS那一层,可以进行秒级的新任务部署。但怎么在一片卡上同时运行2个容器?这还是公认的技术痛点和难点。
百度已经有把AI用在汽车车损的AI协助理赔上;在用AI分析足球赛也有不错的成果,回头球赛的精彩信息编辑等AI应该完全可以胜任,也简单展示了用AI给球员的表现进行打分的逻辑等。怎么进行AI训练呢?结合已有的海量足球视频,再加上搜索技术,进行进球等的子任务训练,然后融合等,避免或减轻了海量的视频标注。
4 其它
计算平台的叶帆同学介绍了PAI-Blade,对模型进行剪枝、模型压缩、算子优化及int8技术等等,对线上的inference有了显著的性能提升。
腾讯介绍了强化学习在游戏中的应用,包括围棋,设计类游戏及即时战略类游戏。回头游戏的电脑会越来越难打:)。另外,强化学习在游戏中还是比较能够发上力,因为不管feedback需要延迟多久但肯定还是有最终结果(可以用来构建groundTruth),在实际的业务场景中,要思考怎么找到合适的groundTruth。
好吧,也就差不多这么多了,耐心看完的同学,请点个赞:)。