上周五我们在特斯拉的AI Day上看到的可能是人类至今为止最叹为观止的AI和工程上的能力,还有努力(试着以平淡的口吻说,但内心深深被折服)。当然不是因为Tesla Bot,是因为自动驾驶和一般现实世界的机器人感知或规划任务,比人们普遍认为的要难得多。而且解决这些问题所需的算法、数据标注、仿真、推理计算和训练计算等方面的投入程度是短期内没人能做到的。但特斯拉让人们看到可能是有机会解决这个问题的。
包括神经网络架构和pipeline、自动驾驶计算硬件、用于训练的Dojo计算硬件、数据和数据标注、罕见边缘场景的仿真,上述所有内容的普遍应用超出了车辆自动驾驶的范围,达到了类人的形式。
如果不是AI领域从业者,AI Day大部分内容理解起来难度极大。读了很多科技媒体文章,还是一知半解。其中Lex Fridman的解读稍有些帮助。Lex Fridman是油管知名博主,也是AI领域的专家。也曾多次专访过Elon Musk和特斯拉团队的人,对特斯拉正在做的事有着深入的理解。以下是Lex Fridman对AI Day的一些亮点的总结。
神经网络
首先是神经网络,每一个环节都是非常困难的。但特斯拉出色的设计理念是机器学习技术领域的一次飞跃。
首先是在矢量空间预测,而不是图像空间。仅这一点就比计算机视觉的常规做法有很大的飞跃。计算机视觉通常在二维图像的图像空间中操作,但现实是三维的,在二维图像的投影上进行所有的机器学习是没有意义的。这似乎是理所当然的想法,但实现起来却极其困难。
其次是摄像头数据在探测前的融合,探测由多任务神经网络的不同头执行。目前来说,融合是在多尺度特征层面上进行的。同样,回过头来看,在所有的传感器上进行探测和机器学习是一个明显但非常困难的工程步骤,而不是单独进行并只结合决策。
第三是使用视频数据对矢量空间且对时间进行建模。在每一帧连接位置编码、多摄像头特征和自我运动学,使用一个特别酷的空间RNN(recurrent nueral network)架构,在车辆周围形成一个二维网格,其中网格的每个单元作为一个RNN。
另一个很酷的地方是,你可以在RNN特征空间里建图,也许还可以这个空间里做规划,这是一个迷人的概念。Andrej Karpathy好像也提到了一些未来的改进计划,在神经网络的早期进行融合。目前空间和时间的融合是在神经网络的后期,将融合提前可以进一步走向完整的端到端多模态驾驶,无缝融合整合多种来源的感知数据。
最后,根据AI Day的内容,目前神经网络用的最少的地方可能是规划。执行空间的最优规划是很难实现的,所以你必须想出一堆启发式的方法。你可以手动做,或者可以通过学习来做。因此,特斯拉提出的想法是使用神经网络作为启发式方法。以类似于在MonteCarlo树形搜索中使用神经网络作为启发式方法,让μ0和σ0玩不同的游戏,下围棋、下象棋。这可以让你在行动空间中大幅修剪搜索,获得一个不会卡在局部最优的计划,相当接近全局最优。
也许在所有的技术细节中,我们很容易意识不到这里有多少创新。在矢量空间中进行预测是非常创新的,当然你只有在拥有数据和标注的情况下才能做到这一点。但仅仅是迈出这一步,就已经跳出了目前计算机视觉的常规框架。然后是许多摄像头之间进行无缝融合,以一种与这些空间RNN可微的方式将时间整合到整个系统中。然后当然是使用这些漂亮的混乱特征,无论是在单个图像方面,还是在RNN方面,以神经网络架构作为启发式的规划…… 所有这些都是不得了的。
数据&数据标注另一个关键部分是数据和数据标注。
首先是人工标注。为了使在矢量空间预测的神经网络发挥作用,你必须在矢量空间进行标注。因此,你必须创建内部工具,特斯拉也确实采用了内部标注团队来使用这些工具,然后进行矢量空间的标注,然后将其投射到图像空间。首先,这节省了大量的工作。其次,这意味着你直接在进行预测的空间里进行标注。
显然,类似于自监督学习(self-supervised learning)的情况,自动标注是关键。特斯拉提出的一点很有意思,就是使用包括视频、IMU、GPU、odometry等在内的数据片段,在同一地点和时间为多个车辆生成静态世界和移动物体及其运动学的标签。
这真的特别酷。这些小片段,就是这些来自不同车辆的数据,而且它们某种程度下还互相标注。你把它们注册在一起,然后结合一个对特定时间特定路段的固定标注。这很了不起,因为车队越壮大,这种自动标注就越强大,你能通过这种方式捕捉更多的边缘案例。
仿真
说到边缘案例,这也是特斯拉使用仿真的原因,就是模拟罕见的边缘案例。这些边缘案例不会经常出现在数据中,即使该数据集增长的速度和规模已经很大。
此外,他们还用它来标注超复杂的场景。在这种情况下,对现实世界的数据进行精确的标注基本上是不可能的,比如一个有一百多个行人的场景。因此,神经网络架构和数据标注的创新真的是一个很大的飞跃。
Autopilot
然后是Autopilot计算方面的持续创新。
优化延迟问题的神经网络编译器,等等。
特斯拉展示了非常好的测试和调试工具,可以用于未来要部署的不同的候选神经网络,你可以把不同的神经网络放在一起进行比较。这就像是开发者用来部署神经网络的工具。
据说,目前有近一万个GPU用于不断地对神经网络进行再训练。忘了具体数字是多少,大概每一周或每两周,网络端到端会进行一次全面的再训练。
Dojo
另一个真正大的创新就是用于训练的Dojo计算机,当然它仍在开发阶段,会在未来部署。
Autopilot计算机是在车辆上进行推理,而Dojo是在数据中心来训练神经网络的。
有一个他们称之为Training Tile的东西,算力为9PFLOPS。它是由特斯拉自研的D1芯片组成的。每个芯片都有超快的IO,每个Tile也都有超快的IO。所以无论是D1芯片还是Tile,基本上可以任意数量地连在一起,每个都有电源和冷却装置。
然后他们连接了上百万个节点来建立一个计算中心,总算力为1.1 EFLOPS。
这是可以任意扩展的,好像是在争当全球最强大的神经网络训练计算机。
AI Day上展示的整个画面都是惊人的。因为,不管你怎么称呼它,特斯拉的AI机器可以任意改进,通过迭代的数据引擎过程,自动标注加手动标注的边缘案例,加上数据收集、再训练、部署。然后你再回到数据收集、标注、再训练和部署。只要你想,可以通过这个循环任意地提高网络的性能。大部分人都不太清楚自动驾驶问题有多难,这个循环可能也没有上限,但这整个循环太不可思议了。
整个努力令人惊讶的第二个原因是,Dojo本质上可以成为一种AI训练服务。因此,没有理由要把它专门用于自动驾驶计算机。他们描述了PyTorch在这些节点上部署方式的简单性,基本上可以把它用于任何类型的机器学习问题,特别是需要规模的问题。
Tesla Bot
最后,这一切令人惊讶的另一个原因是,神经网络架构和数据引擎pipeline不仅适用于道路和驾驶。它还可以在家里、工厂里使用,基本上可用于任何形式的机器人,只要有摄像头和驱动器,包括人形机器人。所以,Bingo,Tesla Bot。
这部分就不多说了,Elon实际介绍的内容也很少,在这个层面上除了技术问题可能涉及到的领域非常复杂,而且可能是比较未来的事,更多是象征性的意义。
AI Day基本上是AI最前沿技术的一次洗礼,本人大受震惊,智力上也大受挑战。愿这种技术和工程能力可以真正造福人类,而我们想不到的意外可能还在未来某个未知的地方,需要很多的努力。