发布于: 修改于: 雪球转发:3回复:2喜欢:6

$特斯拉(TSLA)$ (谷歌翻译) 特斯拉Dojo超级计算机解释了—如何实现完整的自动驾驶AI (By Maarten Vinkhuyzen):

特别感谢Lieuwe Vinkhuyzen检查了关于构建神经网络的这种非常简化的观点并没有偏离现实。

特斯拉迷们回声室的居民定期听到有关特斯拉Dojo超级计算机的消息,几乎没人知道它是什么。我第一次知道是在2019年4月22日的特斯拉自治日提到的。最近,Georg Holtz,Tesmanian和Elon Musk本人的一些评论为该项目提供了一些启示。

每个人可能并不熟悉“ dojo”一词。它是日本武术的学校或培训机构。

道场埃隆·马斯克(Elon Musk)一直在谈论的也是一种培训学校,但仅限于计算机。它将成为专门设计用于训练神经网络的超级计算机。

如果您知道NN,ASIC或FPGA代表什么,请跳过说明。它们并不是本文的真正组成部分,而是对没有IT背景的人们有用的基本信息。

神经网络的解释

只要有可用的计算机,从像房子一样大的巨型真空管机器开始,就有程序员试图使它们像人一样变得智能。那些“ AI”(人工智能)的最初版本确实很原始。 (外出时,请问:外面在下雨吗?答案是“是”时,请打伞。否则,请不要打伞。这当然是在英国的AI程序中)。它主要由IF…THEN…ELSE…语句的长列表组成。

随着编程技术的发展,我们得到了带有大型规则表的基于规则的程序,其中包含主题专家的答案,这些问题专家连续几天被问到他们所知道的知识以及如何得出结论。这些被称为“知识程序”,有些甚至可用。

当程序员试图制作一个表现得像人的程序时,神经学家正在研究人脑的工作方式。他们发现大脑由通过线(轴突和树突)连接到其他神经元的细胞(神经元)组成。利用这些线程,神经元以电或化学方式向那些其他细胞发送信号。这些脑组织被称为生物神经网络。

这些生物神经网络成为最有雄心的基于计算机的人工智能开发人员使用的模型。他们试图在软件中复制人脑的功能。这是数十年的绊脚石,障碍,失败以及缓慢而稳定的进步的开始。 “人工神经网络”(在IT和计算机科学中简称NN)成为人工智能程序中功能最广泛的。

这些NN和更传统的编程知识程序之间有一个很大的区别。传统编程使用IF-THEN-ELSE结构和规则表。程序员决定对给定事件(输入)的反应(输出)。

NN的行为未编程。就像生物学的NN一样,它是通过经验训练的。未经培训的NN程序一无是处。它从训练过程中馈入的成千上万个样本中提取“正确”和“错误”示例的特征。所有这些特征都为其重要性分配了权重。

当训练有素的NN收到新事件时,它将其分解为可识别的特征,并基于这些特征的权重来决定如何对事件做出反应。通常几乎不可能跟踪事件导致特定反应的原因。预测对事件的反应将变得更加困难。

空的NN(空白)不是AI。经过训练的NN可以成为AI。当知识程序以可预测的方式对编程事件做出反应时,训练有素的NN以原始方式对未知事件做出反应。该反应应在我们认为“良好”反应的参数范围内。这给测试训练有素的NN带来了全新的挑战。它已经变成了AI,是否足以将一些任务委派给它?

ASIC说明

当大多数人想到计算机或电话时,他们隐约意识到里面有一块东西使它打勾。这块被称为“芯片”。对于更先进的技术,是CPU,它代表中央处理单元。

这是现代技术奇迹。它可以计算所有需要计算的内容。但是,就像十项全能运动员或瑞士军刀一样,它也不是最好的。早期,开发了专用的辅助芯片-小型芯片可以非常好,非常快地完成一件事。它们是键盘控制器,用于求和的数字协处理器,用于绘制屏幕的图形芯片,以及用于更多功能(例如声音,加密,输入输出,网络,无线信号等)的芯片。它们一起被称为专用集成电路,简称ASIC。他们可以比CPU更好,更快地完成任务,并释放CPU来执行所有其他未委派给ASIC的任务。

使这些专用芯片快于CPU速度怪兽的原因是,CPU执行的软件被只能执行其设计指令的硬件所取代。一套指令(又名算法)在拥有自己的硬件时可以快上千倍。

在作为自动驾驶仪HW3.0核心的特斯拉设计的全自动驾驶(FSD)芯片中,大约有六条指令集被执行数十亿次。这些被专用电路所取代,这些专用电路使Tesla FSD芯片的运行速度比任何非旨在运行Tesla Neural Network的芯片都要快。

特斯拉数据中心,神经网络是在大型超级计算机上训练的,该超级计算机太大了,无法容纳在汽车或大型半卡车中。它占用一栋建筑。为了训练神经网络,必须在此超级计算机上执行数万亿次其他指令集。正如Elon所说,在专用电路上执行这些指令可以将这些指令的执行速度提高几个数量级。

FPGA说明

制造芯片非常昂贵-如此昂贵,以至于AMDNvidia等公司不再制造自己的芯片。外包给专门的铸造厂。如果代码中的错误已硬连线到您的芯片上,则在将芯片在铸造厂烘烤后,您可能已经将几亿美元变成了纸镇。不是最好地利用您的钱。

为了确保所设计的芯片按预期工作,您需要在制造之前对其进行测试。这就像在制作布丁之前先品尝一下。这不简单。

有一种特殊的芯片,称为“现场可编程门阵列”(FPGA)。这是一个令人印象深刻的名字,我不知道这意味着什么或它们如何工作。我大致知道他们可以做什么。

烘烤后,可以将这些FPGA配置为其他硬件布局。可以使它们表现得像算法在芯片中硬编码一样。当您需要提高ASIC的速度但实际的ASIC太昂贵或制造时间太长时,可使用FPGA。 FPGA的速度不如专用/烘焙的ASIC,但仍然比运行软件快很多。它们主要用于高度专业化机械中的小批量生产,研发和原型制作。

通过使用FPGA,您可以对要设计的芯片和计算机进行“概念验证”,并调试要硬编码到其中的代码。这大大降低了制作百万美元纸镇的机会。

埃隆·马斯克(Elon Musk)最近表示,其Dojo超级计算机现已准备就绪,可运行0.01%,并有望在一年内投入使用。该评论不仅令人困惑。在短短一年内达到0.01%并准备达到100%?那没有加起来。当工作了两三年后,如果您的收入为0.01%,您是否会在不到一年的时间内完成其他99.99%的工作?

新信息表明,有0.01%的评论是关于用于验证Dojo超级计算机设计的工作原型。 Dojo原型正在使用FPGA(现场可编程门阵列)芯片。

Elon将FPGA原型计算机描述为仅预期Dojo计算机大小的0.01%。我认为0.01%的字眼比实际尺寸要大。与一年后的Dojo相比,这只是一台非常小的计算机。

在负责开发Tesla FSD(又名Autopilot)系统的研发部门中,不仅有约200名Jedi大师从事Autopilot软件的工作,而且还有一百多名硬件工程师负责构建Dojo超级计算机。 (请参阅CleanTechnica的独家文章“特斯拉自动驾驶仪创新来自约300名绝地工程师团队—采访埃隆·马斯克。”)

Dojo超级计算机面临的挑战是产生的热量,必须从存储系统转移到计算机内部存储器的数据量以及NN培训软件的执行速度。不应暂停执行以等待从存储系统传送新数据。为了解决热量和数据传输问题,他们只需要大量资金就能实施当今市场上最好的解决方案。本文是关于软件执行速度的问题。

用C编程语言编码的算法与使用芯片中的晶体管硬编码的相同算法的执行速度差异很大。硬编码算法的速度可以快一百到一千倍。这并不意味着Dojo计算机一天就可以训练一个神经网络(NN),而使用优化的C代码的相同大小的计算机则可能需要3年的训练时间。所有其他限制仍然适用,并且许多代码仍将存在于在常规硬件上运行的软件中。当Dojo投入生产时,特斯拉有望透露培训的加速程度。

Tesla Autopilot是一种NN,它使用Tesla收集的大量数据在大型数据中心进行培训。道路上所有配备了FSD软件的特斯拉汽车(处于活动状态或在阴影模式下运行)都会记录交通状况。可用于训练NN的情况将被匿名化并上传到Tesla数据中心。 NN学习了驾驶方法后,便会使用空中(OTA)更新技术将其下载到汽车上。

长期以来,我一直试图了解什么是NN,以及训练NN意味着什么。它与程序员通常编写的程序不同。而是没有将其动作和反应编程到其中。它使用在培训期间创建的规则和参考示例来评估输入数据。

我认为起初它是一个庞大而空的程序,用于执行没有规则或引用数据的规则。规则和数据的所有占位符尚未填写。训练后,它成为一个程序,可以在其预期功能范围内执行类似人的任务。

AI领域的专业人员将所有版本称为NN。为了清楚起见,在训练之前,对于已经非常复杂的软件,我将术语神经网络用于“空白表”状态。我将AI用于受过训练的NN,经过训练后可以执行其预期的功能。那些无法完成预期工作的受过训练的NN只是失败的尝试,适合于教教员什么无效,他们必须在其中改进NN软件或训练数据集。

NN noobs,对我们来说,最好的可视化方法是将其视为具有许多标签的大型空白电子表格,但尚未定义。有大量的公式库,可以使用许多数据类型,以及强大的宏语言。

训练NN类似于使用专门的程序和庞大的数据存储库来填充电子表格。该程序用于从数据中提取信息,进行汇总,关联,查找常见方面,寻找因果关系,然后将这些方面存储在单元格中。接下来,该程序将使用公式定义单元格之间的关系,添加用于解释结果的规则,并根据您可以输入的参数生成报告和图形。

这个基于电子表格的程序中的内容不是训练中使用的数据,甚至不是数据的汇总。它不是培训中使用的所有这些示例的巨大存储库。那就是建立一个标准的数据仓库并使用普通的报告技术。

培训所要做的就是将数据变成规则和描述。一些规则比其他规则更重要,并且某些描述优于其他描述。没有人类程序员编写这些规则或说明或计算其重要性。这是将人类婴儿变成有能力的成年人的相同训练。

根据电子表格的填充和配置方式,它可以是总分类帐系统,库存系统,股票交易或营销系统,也可以是进行政治活动或玩StarCraft的出色工具。这取决于用于训练数据的好坏数据示例。系统将执行的操作取决于用于训练它的数据。

训练NN使其成为功能性AI的一个例子:目标是发现可用作医学的新分子。首先选择所需大小和复杂度的空NN。然后收集数千个经过测试的化学式,在本示例中为100,000个分子的式。其中一半具有积极作用,被标记为“好”,另一半被标记为“不好”。

随机使用90%的示例来训练NN。然后向其补充其他10%的指示以确定正确的标签。当NN粘贴与大多数测试集的先前测试中发现的标签相同的标签时,您就可以使用AI。否则,您可能需要更多数据,更大或更小的NN或构造不同的NN。冲洗并重复。

为了进行测试,使用了与训练不同的数据集。 NN不包含其训练材料的压缩数据集,其索引和组织方式可以快速查找与物质关联的标签。那将是数据仓库或另一种数据库查询。 AI可以将学习到的规则应用于新情况。这就是为什么您使用培训中未使用的测试数据的原因。这里描述的是最简单的测试方法。对于大型和复杂的系统,存在更加复杂和苛刻的测试方法。

在您的车中,AI与用于训练网络的Moloch在不同的计算机上运行。区别只是规模之一:运行AI的Tesla HW3.0 FSD计算机安装在仪表板后面。它实时处理来自传感器的输入,并以比人类更快的速度决定适当的动作。

具有所有支持网络和存储功能的Dojo超级计算机需要建筑物中的数据中心。训练NN的系统不能向NN软件提供PB甚至EB级的数据,而是执行PB或TB的数据,并执行训练算法。汽车仪表盘后面的FSD计算机中没有足够的数据量或处理能力。只有训练计算机从中提取的规则才是训练有素的NN(自动驾驶仪AI)的一部分。

当人类程序员更改大型软件系统时,目标是更改尽可能少的代码,并且不更改其余代码的工作方式。该测试基于准确了解哪些代码已更改以及哪些代码未更改的基础。为了验证修改后的代码和所有旧代码是否仍能按预期工作,程序员使用单元测试,回归测试和一系列其他方法来确保修改不会在预期的更改之外改变系统的功能。

训练的NN的规则和关系的结构是未知的。因此,程序员不能更改它们。更改NN的唯一常用方法是将其擦干净,使用新功能的示例扩展训练数据集,并从零开始使用新数据集训练NN。每次更新,对AI的每次更正都会重复此循环。新数据可能会影响训练过程中的所有规则制定,远远超出其预期的功能。可以将其视为扔在水中的石头的涟漪效应。因为在每个更新周期之后通常会有一个全新的AI,所以必须测试其所有功能。

这是人工编程和用计算机训练NN之间的最大区别。您不能直接修改错误的代码行—至少重建了系统的大部分。测试更改同样更加复杂。

经过三天的训练,著名的《星际争霸》 AI可以击败99.8%的人类玩家。但是建立数据集和设计NN花费了三年时间。在这三年中,在最终培训课程的结果足够好之前,有许多培训和测试周期。 FSD AI更为复杂。它被训练有更多的数据。它必须使用Elon最喜欢的表达方式进行开发,其速度要比StarCraft AI快几个数量级。否则,将是下一个十年,如果不是下个世纪,那么FSD和robotaxis将会成为现实。

最初,2D静止帧是FSD AI的传感器输入。当这些框架的可用性不够好时,当它们达到了此类数据所能达到的最大极限时,特斯拉便转向了更好的输入。接下来可能是将多个帧拼接到一个全景视图。拼接之后,将软件生成的激光雷达点数据云添加到帧,以创建3D图像。每次改进之后,数据可以达到的另一个局部最大值。传递这样的局部最大值需要更好的输入和更强大的NN。通过增加时间,我们现在将4D视频数据输入到AI。

在达到局部最大值之间,存在许多标记和扩展训练数据集以及改进NN软件的迭代。这是一个改进,训练,测试的循环,不断增加的数据集被输入到越来越复杂的软件系统的训练算法中。测试从在一条高速公路的车道行驶到从始发地到目的地的多条高速公路以及整个城市的驾驶演变。

Dojo可能不仅将成为培训师,而且还将成为在模拟测试路线上行驶数百万英里的平台。模拟还不足以进行培训,但是从真实数据中得出的复杂情况对于在Alpha和Beta版本的真实测试之前进行初始测试可能非常有用。

图片由Kim Paquette提供

FSD软件的第一个早期Beta版本已发布给选定的一组客户进行测试。将其称为FSD系统的0.92.n.nn版本。

该FSD系统几乎功能完整,但是所有功能都需要大量改进。 FSD不是一个整体系统。它由执行不同功能的许多部分,协作和交流的部分组成。许多部分本身就是神经网络。

现在将Beta进行测试并希望在一年之内拥有一个工作系统,与需要Dojo计算机进行开发之间似乎存在矛盾,该计算机最早将在一年内上市。

完整且可以在一年内工作的系统将是仍然需要监督的系统。这将是很好的,甚至是惊人的。这将不是完美的。将其视为0.97.n.nn版本。为了进一步改进,收益递减法则需要付出更大的努力才能实现可靠性的不断提高。

一个好的驾驶员要遵守规则,并且是可以预见的。交通法规有许多差异:在道路的右侧或左侧行驶。您应该保持车道还是向右行驶。例如,在右侧超车会导致您在荷兰的驾驶执照费用降低。这不仅仅是停车或超速等简单的交通违法行为。有不同的习惯-在荷兰,您在通过速度标志后会调整速度,在德国,您会在到达标志之前进行调整。

当汽车可以从洛杉矶到纽约或从华盛顿西雅图到佛罗里达的坦帕时,特斯拉还没有完成FSD的开发。那甚至还不是一般司机的水平。在所有情况下,FSD AI都必须优于99.999%的驱动程序。在那之后,它必须学会在所有(略微)不同的规则,法规和习俗中,在大约200个辖区内驾驶。

特斯拉的FSD未来,仍需进行大量培训。需要专用Dojo计算机的量身定制的CPU才能达到所需的速度。。。。。。。

原文链接:网页链接

全部讨论

2020-11-23 08:42

好文!

2020-11-22 16:29

点了链接,看完了长文,值得看一看。