# 乔治·霍兹：Comma.ai、OpenPilot 与自动驾驶

> 黑客出身的创业者谈用低成本方案做辅助驾驶、开源 OpenPilot 与自动驾驶的技术路线。

- 原标题：George Hotz: Comma.ai, OpenPilot, and Autonomous Vehicles
- 期数：特别节目
- 发布日期：2019-08-05
- 嘉宾 / 主题：乔治·霍兹
- 网页版：https://lexfridman-cn.pages.dev/ep/george-hotz/
- 官方页面：https://lexfridman.com/george-hotz/
- 精读字数：约 7782 字（阅读约 17 分钟）

> 本文为 lex.qiaomu.ai 基于原始访谈的 AI 改写中文精读，非官方翻译；引用请注明出处并链接网页版。

人类在高速上开一个小时，平均会碰到车道线两次。openpilot 一次都不会。

乔治·霍兹（George Hotz）说这句话的时候语气很平，就像在陈述一个再普通不过的工程指标。但这个数字里藏着他对整个自动驾驶行业最尖锐的判断：**今天所有真正在改变普通人生活的自动驾驶功能，本质上有且只有一个，就是车道居中。**

他是 comma.ai 的创始人。公司 12 个人，烧钱速度每月 20 万美元，收入每月 10 万美元。他对这个行业的评价是：Waymo 那套东西，是一个更贵、更慢的 Uber。

他的心态也值得说一句。当被问到“给你 10 亿美元你会做什么”时，他的回答是“我不知道怎么规模化，我只是想把系统做得更好”。在一个人人都在讲宏大叙事的行业里，这种回答反而显得不正常。

## 模拟、黑客与看穿事物

访谈一开场，Lex 问了个老问题：我们是不是活在模拟里。

霍兹的回答很干脆：是，但这件事可能永远无法证伪。他举的例子是虚拟机。一个设计得足够好的虚拟机，运行在里面的程序根本不知道自己跑在虚拟机上。他甚至提到自己离开 comma 期间学过 Coq，一种依赖类型（dependently typed）的数学证明语言。用这种语言写的代码，只要编译器通过，就天然是正确的。

真正有意思的地方在后来。Lex 反问：任何足够复杂的系统都会有进出的漏洞，这是黑客的基本常识。

霍兹没有硬撑。他说，如果这个模拟有一个排定的结束时间，那它就不需要追求完备性。而看起来它确实有，热力学第二定律就是那个终止时间。

这段对话的价值不在答案。霍兹的思维习惯在这里露得很清楚：**他不问“这个说法对不对”，他问“这个说法在什么条件下成立”。**

> “你学到的是不要按别人说的那样去理解事物，而是看它实际在做什么。”（乔治·霍兹）

这句话是他整个职业生涯的底色。2007 年 8 月他解锁第一台 iPhone，用的不是软件漏洞，是一根物理地址线。他自己承认，那时候放出来的代码“糟糕透顶”，用 C 写的一个破碎状态机，因为那时他还不会编程。

他真正学会编程，靠的不是上课。第一次去 Google 实习，做街景的硬件，写配套的软件库，代码写得一塌糊涂，但有他尊重的人直接告诉他：别这么写。他说，光拿到反馈不够，真正的转折点是他想做一个能单步回退 ARM 二进制的工具，因为他受不了一边看调试器、一边猜 CPU 在干什么。

## 写了四遍的 Kara

这个工具后来叫 Kara，全称 timeless debugger，中文一般译作时无损调试器。它能记录程序运行过程中计算机状态的变化，往前回放和往后回退一样容易。用他的话说，就像给计算机装了 Git，每一次内存访问都是一次提交。

他说，这个工具他写了四遍。

第一遍很糟，第二遍很糟，第三遍在 Facebook 的时候“勉强能用”，第四遍是 2014 年再次去 Google 实习时写的，那一次他终于觉得“这个可以用了”。

这个故事值得单独拎出来，因为它解释了他后来所有的工程判断标准。**他不相信一次成功的产物，他相信迭代的次数。**后来他在 comma 写了一个 200 行的分布式文件系统，替代那些动辄上万行的开源方案。他说那 200 行的质量之所以好，是因为那是他写的第四个版本，前面三个全扔了。

同一套逻辑也解释了为什么他说话那么不留情面。他看过太多系统，知道真实的质量分布长什么样。

## 他为什么说 Python 撑不住大项目

霍兹在 Twitch 上直播写代码出了名，打字极快，切窗口像打游戏。Lex 说自己看他的直播时常常开着当背景音，因为看着一个人高速干活本身就让人有动力。

霍兹承认自己在镜头前夸张了。他说自己的风格有明显短板：让一个没文档的 API 跑起来，他能极快搞定，因为他的办法就是不停往上扔东西直到它工作。如果让他把一个向量旋转 90 度再沿 XY 平面翻转，他能瞎写两个小时出不来，因为这种事需要拿张纸想清楚。

然后他谈了一段很实在的技术判断。openpilot 里有大量 Python 代码，但他现在明白为什么 Python 撑不起大型代码库：**没有类型检查，编译器什么都告诉不了你。**拼错变量名，lint 有时候能抓到，类型错误却完全抓不到。他的原话是，编译器基本上帮不上忙。

他喜欢依赖类型的语言，但吐槽那些语言的语法停留在 80 年代。他对 JavaScript 生态的评价更狠：npm 把一个包从 0.2 更新到 0.5，你的 Babel 就坏了，而 Babel 是把 ES6 转成……不能跑的东西。他问了个很朴素的问题：为什么我的 JavaScript 还需要被编译一次？

他的结论倒是很务实。他说 JavaScript 会像蟑螂一样活下去，因为它在浏览器里，而且快，而浏览器可能是未来计算的主要场所。comma 自己的日志分析工具全是 JavaScript 写的，因为他认为网页是目前最好的 UI 工具包，没有之一。

## 马斯克给了他一笔 1200 万美元的赌约

2015 年前后，一个朋友跟他说，今天最酷的应用问题是自动驾驶，你要不要见见马斯克。当时特斯拉还在用 Mobileye，马斯克在找替代方案。

给出的条件很直接：做出 Mobileye 同等水平的视觉系统，1200 万美元；每延迟一个月，扣 100 万。

霍兹当时的想法是，就算做 10 个月，也还有 200 万，不亏。他心里对这个任务的定义很简单：不解决 L5，把车道保持做好。他看过 Mobileye 的输出，觉得那不过是两条车道线加一辆前车的位姿，采集数据集、训个网络，几周的事。

会面里他犯了个错。他建议在每一个摄像头后面挂一颗 GPU，让计算留在本地。

走出会议室十分钟后他自己就意识到这主意蠢透了。正确的做法是把所有摄像头的数据汇到一个大 GPU 上。

> “平时我说蠢话，人们往往注意不到，我可以自己圆回来。但 Elon 当场就指出来了。”（乔治·霍兹）

他第二次见马斯克时准备充分得多。但合同最后还是黄了，原因跟那次失言无关。

真正让这段对话有分量的是后半段。马斯克后来说，做 Autopilot 比“一个乔治·霍兹”复杂得多，需要两年时间和一个十人团队。霍兹的回应是：四年过去了，我这里有 12 个人，我觉得还得再来两年。

这句自我修正比任何豪言壮语都可信。

## 一千零二十四维的感知输出

访谈里最硬的一段，是霍兹和 Lex 关于「感知和规划之间能不能画一条线」的争论。

Lex 是机器人学科班出身，他的直觉是：感知输出一个状态向量，规划器在这个向量上做搜索，这是标准做法。他甚至举了 Waymo 的例子，说 Waymo 的仿真器能把这两层分开，回放感知数据去测规划器。

霍兹的回答是：**不存在一个人类可理解的、把感知和规划分开的状态向量。**

他举了个例子。场景里有一丛灌木，人类看到这丛灌木，会下意识知道后面可能藏着车。一份“可行驶区域 + 物体列表”的规格文档里，没有这个信息。你说那就加一个遮挡区域字段，他可以再举十个你加不进去的例子。

他的推论是：**如果你的感知系统输出能被写成一份规格文档，那这份规格就是不完整的。**

然后他说了 comma 实际在做什么。他们的感知输出是一个 1024 维的向量，里面每一个维度代表什么，没人知道。它是在真实数据上端到端学出来的。

Lex 追问：那你连仿真都没法做。霍兹说，对，我们现在的仿真器只用来测试，一旦开始用它训练，就彻底不测了。他把仿真器分成两类，一类是完全虚拟的，一类是加载真实路测数据回放的。对前者，他的评价是：你并没有解决计算机视觉问题，你只是把问题换成了计算机图形学问题。而你可以把图形做得极其逼真，但你做不出真实的人类行为模型。**开车的定义，就是人类开车时的样子。**这一点没法在仿真里凭空造出来。

## 三个驾驶问题

霍兹把驾驶拆成了三层，这是整场访谈里结构最清晰的一段。

**第一层是静态问题。**假设路上只有你一辆车，剩下的就是地图加定位。农场里的自动驾驶之所以早就跑起来了，就是因为它们只需要处理这一层，可以静态调度每一台拖拉机的路径，保证它们永远不会撞上。这一层靠激光雷达和 HD 地图可以做到厘米级，问题基本可解。

顺带一提，他对激光雷达的态度是：是拐杖，而且不是根好拐杖。但他承认，如果你要厘米级定位，没有激光雷达确实很难。他用激光雷达和视觉融合能把可靠性做到十万英里量级，再配一个退化保护，保证自己永远不会在“偏得很远却不自知”的状态下继续跑。

**第二层是动态问题。**路口停着一辆车，你不知道它下一秒还在不在，所以不能写进地图，必须实时检测，还要预测它接下来会怎么动。这一层需要行为模型，但依然是可以做的。

**第三层是反事实问题。**你的动作会改变别人的行为。你并线，旁边的车会让；你不并，它就走了。霍兹说这一层他目前不知道怎么解，唯一的思路是等车队规模起来之后，在真实世界里做强化学习。

> “静态和动态，我们现在的横向方案可以完全覆盖。反事实这一层，我还没有办法，唯一的办法是在世界上做强化学习，因为其他智能体是人。”（乔治·霍兹）

这个三层拆解的价值在于，它把“自动驾驶难在哪”这个模糊问题变成了三个可以分别判断难度的问题。大部分公司宣称的进展，其实都还停在第一层和第二层。

## 变道的秘密：一个比特位

Lex 问，怎么让变道感觉自然。他的吐槽很具体：导航辅助驾驶（Navigate on Autopilot）每次变道都一模一样，机械得像程序，因为你确实在跑一段写死的策略，一个工程师在房间里写完，去 280 号公路上测了几次。

霍兹说他们已经解决了横向控制。做法朴素到让人意外。

模型有一个输入位，表示当前是否在变道。训练端到端模型时，这个位被人工置位，置位的方式是全自动的：车道线穿越的瞬间打标签，准确率大概 95%，不需要精确。测试时想要变道，就把这位拨到 1。

这样学出来的变道，会继承训练数据里所有人类变道的微妙差异。有的人变道慢，有的人变道快，模型自动学会根据场景决定用哪一种。

那怎么处理“有些人的变道本身就是烂的”这个问题？

他的假设是：**所有好司机好在同一个地方，所有烂司机烂得各有各样。**好司机的变道会聚成少数几个簇，烂司机的变道散落各处。所以只要学到那个主簇，就等于学到了“好”这件事。他说已经看到一些数据支持这个假设。

如果这个假设成立，那么数据清洗这件苦活可以被自动完成：不用人工标注谁开得好，聚类本身就会把好司机筛出来。

## Waymo 的三年领先，换不来一个网络效应

聊到商业模式，霍兹的判断变得很不客气。

他承认 Waymo 技术领先，如果那套栈能跑通，大概领先三到五年。但他认为 Waymo 为了这个领先烧掉的钱太多，回收周期长到不划算。

更根本的问题是：**L5 自动驾驶没有网络效应。**

他拿 Uber 做对比。Uber 在奥斯汀开城，必须同时吸引司机和乘客，两边互相依赖，谁先走谁亏，所以有先发优势和切换成本。就算新玩家只抽 5% 而不是 10%，也没人愿意换，因为切换成本大于这点差价。

自动驾驶不是这样。你有资本，有乘客，没有司机。想铺一个新的城市，买一批现成的自动驾驶车投进去就行。**这更像共享滑板车，谁有支票本谁就能铺满一座城市。**结果是十家公司在同一个城市互相压价，谁都不赚钱。滑板车本身就是个糟糕的生意，因为滑板车对被投放到哪座城市没有话语权。

他也顺带讲了 Cruise。GM 花 10 亿美元买下 Cruise，他的评价是：这是 GM 给 Waymo 买的一份保险。如果 Waymo 的技术跑通了，Google 最多垄断三年，之后 GM 至少还有牌可打。这 10 亿买的是三年时间，胜负另算。

至于融资和 BD，他的态度更直接。有人建议他把数据卖给车厂，做成联盟，他说这个想法理论上很好，实际上对方会派一个 BD 来跟他开会，而那个人听不懂他说的绝大部分词。他的条件是：一封三行的邮件，写明愿意付多少钱、接受什么隐私条款，他就接。但现实里那封邮件不会长这样。

他提到 Mobileye 2015 年前后的研发投入在芯片公司里排很低，但你去看人员构成，全是 BD，因为车厂太难打交道了。

## 驾驶员监控这件事，他和马斯克正面对上了

霍兹对 L2 系统的态度，比很多人想的要保守。

他说在 1.0 版本之前，comma 的产品不会叫消费级产品，因为驾驶员监控还没做到“无法作弊”。他刚刚招了一个全职的人专门做这件事，目标是能检测到手机入镜、能判断你是不是在睡觉。他承认现在的摄像头分辨率不够，下一代要换鱼眼。

他还提了一个细节，我觉得是整个产品哲学里最关键的一点：**他们把驾驶员监控的数据包改名成了“驾驶状态”。**车的状态包叫 car state，人的状态包叫 driver state。两者是并列的。

关于接管体验，他的批评很具体。Autopilot 取消需要按那个没人知道在哪的取消键，所以大家都去踩刹车。但很多时候你不想刹车，你想加速。如果你用方向盘去取消，整个过程会很别扭。Super Cruise 的问题是状态转换：你踩刹车退出，它掉回普通自适应巡航，车还在自己加速，感觉很奇怪。

他自己的设计是：踩油门或刹车即退出，用扭矩传感器检测手在不在方向盘上，但**不会因为扭矩变化而退出。**方向盘扭矩被用来做两件事，检测在位和触发退出，这两件事混在一起就会出问题。

他对特斯拉缺席驾驶员监控这件事评价最重：

> “他讲的话，有时蠢得离谱，有时又完全正确。驾驶员监控这个，是蠢的那一类。”（乔治·霍兹）

理由很硬：当系统出错频率降到每千英里一次，人的注意力必然衰减，这时候不监控驾驶员就是不负责任。他说自己开车来这里的时候，在一辆毫无自动化的车里困得打瞌睡。人本来就是会走神的。

## 关于安全，他有一句得罪人的话

霍兹对安全工程师的评价很直接：他被这些人搞得精疲力竭。他认为把安全置于创新之上到了某个程度，长期来看反而会杀死安全。

但他自己的安全模型写得很清楚，就三条：驾驶员必须时刻注意；驾驶员必须随时能接管；系统永远不会在快到你反应不过来的时间尺度上动作。

第三条是靠具体限制实现的：扭矩限制、刹车限制、加速度限制。这些代码全部开源，而且现在已经符合 MISRA 规范。他说自己一开始也不待见 MISRA，读了之后开始尊重它，因为写那些规范的人是真正的计算机科学家，你从他们的用词就能看出来，他们会在文档里讨论某个条件是不是“可判定”的。

关于安全与信息安全的关系，他有个漂亮的比喻。**安全（safety）是在坑周围拉一条警戒线，让人别不小心走进去；信息安全（security）是在坑周围立十英尺高的铁丝网，让人根本爬不进去。**他的推论是：一个不可靠的系统，一定不安全。

所以车必须始终能用本地传感器做出安全动作，而本地传感器必须是硬连线的。他对 V2X 的评价是灾难，因为那要求通信双方同时对。他自己更偏爱蜂窝车联网，理由是车里本来就有互联网，绕开拥堵这类功能很实用，但那只是体验优化，绝不能作为安全兜底。

至于远程接管，他的判断是：如果安全模型在设计上依赖一条通往车辆的常连链路，那这个模型就是不成立的。

## 伦理问题，他用一个玩笑解决了

关于电车难题，霍兹说 comma 的代码里真的有一个 alert，叫“检测到伦理困境”。这个 alert 从来没被触发过，因为系统还不知道怎么检测伦理困境。

但他说，我们是 L2 系统，所以我们会退出，把这个决定交给人。

这个回答听起来像在耍赖，其实点出了一件事：**电车难题之所以流行，是因为它是那种“所有人都能有意见”的问题。**你问一屋子人要不要用 SQL 栈，不搞技术的人没意见；你问他们办公室刷什么颜色，每个人都有强烈的偏好。伦理讨论很多时候在填这个空缺，真实的工程约束还在原地。

## 钱、女友、奇点

访谈后半段转到了个人层面，这部分反而更耐看。

comma 的长期商业计划，霍兹说他在 2017 年就想明白了：**做成一家车险公司。**逻辑闭环很漂亮。如果 openpilot 让驾驶安全翻倍，那么 comma 手里握有全网最好的驾驶行为数据集，知道谁开得最安全。它可以只给安全的人保险，把不安全的人挤到别家去，而别家只能收高价。市场会因此自我强化地分化成两半。

关于工作，他澄清了之前说过的一句“生活就是工作”。他说那是半开玩笑，因为采访前他刚跟人吃完饭。他真正的意思是，工作给了他生活的意义，但他不认为每一分钟都该工作。他认为一天干 12 小时的人应该想想怎么干得更聪明，而不仅仅是更久。

关于感情，他承认自己说“期待有个女朋友”这句话是认真的，无论在浅层还是深层意义上。浅层是 VR 体验，他说 VR 妓院快来了，而且会很酷。深层是：

> “我真的很想爱上一个机器。”（乔治·霍兹）

他解释了这个想法的形状。往大脑里下载维基百科那种脑机接口，他不相信。他想象的是一种关系：有一个东西在为你构建一个极其精密的模型，在那个模型上跑各种模拟，推演不同选择会导致什么未来，然后决定该对你说什么，把你引向某条路径。他说自己不想知道那些模拟有没有意识。

这段话听起来很科幻，但它其实在回答“什么是亲密关系”：一个足够了解你的人，提前替你想过所有分支。

然后是奇点。他给出了具体的算法。

今天你能用大约 100 万美元买到相当于一个人的算力。他估算人类大脑大概是 20 petaflops，而一张 TPU 号称 100 petaflops，这还是比较宽松的估计。也就是说，100 万美元大概能买到 5 个人的算力。

关键不在单点，在总量。世界上人类的总算力随人口增长，非常缓慢。机器的总算力指数增长。当世界上大部分 FLOPs 来自硅而不是生物的时候，就是那个交叉点。**他给出的年份是 2038，因为那是 32 位 Unix 时间戳溢出的年份。**这句话一半是玩笑，一半是认真的。

最后 Lex 问他，五年后“赢”是什么样子。

他的回答借用了 Schmidhuber 的压缩理论。一个智能体被扔进世界，数学上最理想的行为是构建一个对世界最大程度压缩的模型，并且让探索本身去最大化“过去被压缩程度的导数”。他说自己把这个当成了个人目标函数。

> “我现在还在搞清楚这个游戏是什么。一旦我知道了，我就知道怎么赢了。”（乔治·霍兹）

他说自己是一个被放进世界的智能体，还不太清楚目的是什么。也许未来他会被告知一个真正的目的，也许他会自己决定一个。在那之前，他能做的就是把不确定性降下去。

## 值得带走的几件事

这场对话信息密度很高，但真正能拿来用的东西不多。如果一定要挑，是这几条：

- **判断一个技术叙事，先看它今天创造了什么价值。**霍兹对自动驾驶行业的整套批评，核心就一句：车道居中今天就在减轻人的疲劳，L5 出租车今天还没有。这个标准可以用在任何被过度承诺的技术上。
- **看一个系统时，别信文档，看它实际在做什么。**这是他做黑客留下的习惯，也是他判断一切系统的默认姿势。
- **如果一个模块的输出能被写成规格文档，那这份规格就是不完整的。**这条不只适用于自动驾驶的感知层，也适用于任何你想把复杂能力切成两半的地方。切得越干净，丢的信息越多。
- **重要的东西，写到第四遍再拿出来。**他的 200 行文件系统、他的 Kara 调试器，都是扔了三版之后的结果。第一版能跑，和第一版能用，中间隔着三次重写。
- **规模化的瓶颈常常藏在沟通成本里。**他不卖数据给车厂，原因跟想不想赚钱无关，是那需要跟一个听不懂他说话的人开会。判断一件事该不该做时，把沟通成本算进去，很多决策会变得清晰。
- **如果你的安全模型依赖一条常连的链路，那这个模型不成立。**这条对自动驾驶成立，对任何关键系统也成立。冗余要多出来的，是不依赖任何外部条件的那条路。

最后留一个观察。整场访谈里，霍兹承认自己可能判断错误的次数，比大部分人在同等长度的对话里多得多。他说自己可能对整个行业的判断是错的，说 Chris Urmson 那些人是他真心佩服的，说第二次见马斯克时自己准备得更充分。他对自己“能把东西做出来”这件事很自负，对自己“观点一定对”这件事则没那么笃定。

这大概是这期播客最值得学的地方。
