30万行代码,最后被砍到2000行。这不是一次普通的代码重构,而是特斯拉FSD(Full Self-Driving,全自动驾驶)十三年演进中最具标志性的一次自我推翻。今年9月,特斯拉Cybercab正式在美国德州奥斯汀投入运营,这辆车没有方向盘,没有脚踏板,只有两个座位。马斯克说,这就是未来交通的样子。 但把方向盘真正拿掉之前,这套系统走过的路远比外界想象的曲折。供应商决裂、自研芯片、算法重写,硬件上线前还在推倒重来,团队内部甚至出现过瞒报与欺骗。软件团队一直抱怨算力不够、人员不足,却又在极致的成本控制中,被推向了极致的技术路线。 从谷歌到Mobileye:一条被迫选择的路 2013年,已经成立了10年的特斯拉开始决定做自动驾驶,最初希望合作的公司是谷歌。但谷歌高精地图结合激光雷达的方案太贵,不符合马斯克的第一性原理。同时谷歌主张一步到位直接做L4,而马斯克认为应该先推出L2再迭代至L4,双方分道扬镳,也让自动驾驶界诞生了两条路线,并且争论至今。 特斯拉当时连生存都颇为艰难,最现实的路径是先找个现成的供应商,于是选择了Mobileye。2014年10月,特斯拉发布了Autopilot Hardware 1.0。全车硬件非常基础:只有1个前置摄像头、1个前置毫米波雷达,外加12个超声波传感器。芯片是Mobileye的EyeQ3,500MHz频率、256MB内存。 前特斯拉AI硬件开发高级经理Kerry刘向科在特斯拉工作近12年,参与了能源、自动驾驶、机器人等多个项目。他告诉硅谷101,早期车规技术的局限性很大,这是一个不得不采用的方案,因为没有其他选择。 2015年,Autopilot软件正式上线。虽然只能实现车道保持、自适应巡航等基础功能,但对于当时的车主来说已经非常惊艳——那时大部分车甚至都还没标配定速巡航。车主们开始在网上分享体验:有人在车里吃汉堡,有人在副驾睡觉,把Autopilot当成了“无人驾驶”。马斯克不但没有制止,甚至鼓励这种狂热,隐患就此埋下。 2016年5月7日,佛罗里达州一辆Model S撞上了正在左转的拖挂货车,车主当场身亡。事故原因在于辅助驾驶系统没有识别出货车。此前Mobileye早就警告过马斯克,禁止驾驶员双手离开方向盘,但并没有被当回事,这次事故成了双方彻底谈崩的催化剂。 真正让特斯拉和Mobileye分手的原因,是合作不畅。Mobileye提供的是典型的“黑盒”模式,摄像头捕捉到画面后直接输入到EyeQ3芯片中,计算结果后再传递到规划层。一位前自动驾驶资深从业者表示,双方强行定义了一个接口,而接口之下Mobileye的内容是黑盒,不提供给特斯拉,这非常阻碍开发,因为有时候你想跨越或更改这个接口,却没有控制权。 英伟达救场与自研芯片的18个月 2016年10月,距离事故仅5个月,特斯拉发布了Hardware 2.0。传感器从1个摄像头变成8个,芯片从Mobileye换成了Nvidia Drive PX2。上述前从业者认为,8个摄像头可能是为未来准备的,如果未来想实现全自动驾驶,就不可能只有前向摄像头,但在当时如果只是取代Mobileye的功能,未必需要动用这么多算力去处理每个摄像头的信息。 很快,特斯拉内部发现Hardware 2.0存在缺陷,发布10个月后又推出了Hardware 2.5,核心区别就是冗余。因为Hardware 2.0是特斯拉第一次用英伟达的方案,当时英伟达也并没有专门针对辅助驾驶做芯片,结构上就是一个SoC再外挂一个GPU。但马斯克当时已经在推全自动驾驶,得考虑万一芯片坏了怎么办,所以到了2.5,特斯拉多加了一个GPU作为冗余,这就是特斯拉FSD双芯片架构的雏形。 与此同时,特斯拉也在6个月内通过自研替代了Mobileye的算法部分,还新推出了FSD,意味着和以前大不一样,但初期表现却没有预期中那样顺利。上述前从业者认为,Mobileye已经迭代了很多年,即使技术相对落后,各方面也还是比较完善,一个新团队从0到1开始做,初期出现各种问题完全可以理解。 2019年4月,特斯拉发布了Hardware 3.0,用自研的AI3芯片替换掉了英伟达芯片。其实采用自研芯片是迟早的事,早在与Mobileye合作时,特斯拉就开始布局这条路。2016年1月,马斯克挖来了芯片设计界的传奇人物Jim Keller,他在AMD设计了K7、K8架构,在苹果设计了A4、A5芯片,又回到AMD研发了Zen架构。2月,Peter Bannon也加入特斯拉,加入前已有近40年的计算系统设计经验,曾在苹果、英特尔、PA Semi等公司任职,领导了苹果A4到A9处理器的开发。 在这两名芯片大神的带领以及三星团队的帮助下,第一款FSD芯片AI3只花了18个月就设计出来了,并在2017年12月首次流片成功。Kerry刘向

about image