Jim Keller:摩尔定律、微处理器与第一性原理
-
原文标题:Jim Keller: Moore's Law, Microprocessors, and First Principles | Lex Fridman Podcast #70 - YouTube
-
文章类别:访谈实录
- 背景介绍:
- Jim Keller 是一位传奇的微处理器工程师,曾在 AMD、Apple、Tesla 工作,现在就职于 Intel。
- 他因在 AMD 的 K7、K8、K12 和 Xen 微架构,Apple 的 a4 和 a5 处理器,以及 x86 64 指令集和 hyper transport 互连规范的共同创作中的工作而知名。
- 他被认为是一位出色的第一性原理工程师和富有创造力的思考者。
-
人类大脑与计算机的比较:
- 由于人们并不完全理解人脑的工作原理,很难将人脑与计算机进行直接比较。
- 计算机具有明确的内存和计算单元,而人脑则是一个复杂的神经网络,信息以分布式的方式存储。
- 尽管在计算机中构建了类似神经网络的模型,但对于人脑中神经元的具体计算方式仍不清楚。
-
计算机的基本构建与抽象层次:
- 计算机工程具有良好的抽象层次理解,从原子层面的材料(如硅)构建晶体管,进而构建逻辑门、功能单元(如加法器、指令解析单元等),最终组装成处理元素。
- 现代计算机由大约 10 到 20 个本地或相干的处理元素组成,运行计算机程序。
- 软件层面也存在抽象层次,从指令集到汇编语言、C/C++、Java、JavaScript 等。
-
微处理器设计的关键要素:
- 指令集架构的稳定性,如 x86 指令集和 ARM 指令集,这些指令集定义了基本操作的编码方式,如加载、存储、乘法、加法、减法、条件分支等。
- 现代计算机的执行方式与旧计算机不同,现代计算机会获取大量指令,找出指令之间的依赖关系图,然后在独立单元中执行,以优化计算图。
- 计算机的性能优化涉及到对指令执行顺序的调整,以及对内存访问顺序等语义的处理。
-
GPU 与 CPU 的区别:
- GPU 运行简单的程序,但处理大量的像素,其执行顺序对最终结果没有影响,这种并行性是“给定的”。
- CPU 则需要从程序中发现并行性,即使程序是顺序执行的,也需要通过复杂的算法找出可以并行执行的指令。
-
晶体管数量与性能的关系:
- 一旦解决了问题,描述指令之间的依赖关系就变成了一个图算法问题,理论上可以解决,但实际中需要大量的晶体管来实现。
- 例如,要将预测分支的准确性从 85% 提高到 99%,需要的晶体管数量会增加几个数量级。
-
计算机设计中的艺术与科学:
- 计算机设计需要团队合作,团队成员具有不同的技能和专业知识。
- 设计计算机时,需要在不同的决策点之间做出选择,这些选择相互影响,需要团队成员的直觉和分析能力。
- 计算机设计既是一门科学,也是一门艺术,需要在理解原理的基础上进行创新。
-
确定性与非确定性计算:
- 对于大多数编程语言,每次运行相同的程序都应该得到相同的结果,这是编程语言的正式定义。
- 然而,在某些情况下,如 3D 图形加速和 AI 计算中,数据的精度较低,输入数据非常嘈杂,因此计算结果也可以有一定的“噪声”。
-
个人成就与团队合作:
- Jim Keller 表示,他对于构建计算机本身更感兴趣,而不是追求个人的传奇地位。
- 他强调了团队合作的重要性,认为计算机的构建需要不同背景和技能的人共同协作。
-
对未来的展望:
- Jim Keller 对摩尔定律的未来持乐观态度,认为尽管面临挑战,但创新将继续推动晶体管数量的增加和计算机性能的提升。
- 他提到,随着晶体管数量的增加,计算机架构师需要重新思考和重构设计,以充分利用新的晶体管资源。
- 访谈展示了 Jim Keller 对微处理器设计的深刻理解,以及他在这一领域的丰富经验。
- 他强调了计算机设计中的艺术与科学的结合,以及团队合作在构建复杂系统中的重要性。
- 对于摩尔定律和计算机技术的未来,Jim Keller 保持乐观,并期待新的创新和突破。
#JimKeller , #Microprocessors , #MooreLaw , #FirstPrinciples
├── 一、 总览 (0:00 - 2:12)
│ ├── 采访者 Lex Fridman 自我介绍及节目介绍
│ └── 介绍受访者 Jim Keller 的背景和成就
├── 二、 计算机与人脑的区别 (2:12 - 3:43)
│ ├── 提出问题:人脑与计算机微处理器的异同
│ ├── 人脑工作机制尚不明确,难以直接比较
│ ├── 计算机的核心:内存和计算
│ │ ├── 现代计算机架构:全局内存,计算与存储解耦
│ └── 人脑像复杂的网状结构
│ └── 信息分布式存储,神经网络原理尚不清晰
├── 三、 计算机的抽象层和并行性 (3:43 - 17:53)
│ ├── 如何从零构建计算机:抽象层概念
│ │ ├── 原子 -> 材料 -> 晶体管 -> 逻辑门 -> 功能单元 -> 处理器核心 -> 计算机程序 -> 软件层 -> 数据中心
│ │ └── 每一层都有其独特的价值和挑战
│ ├── 指令集:定义基本操作的编码方式
│ │ ├── 约 25 个核心指令占据 90% 执行时间
│ │ └── 指令集相对稳定(如 x86 和 ARM)
│ ├── 现代计算机的乱序执行
│ │ ├── 获取大量指令并分析依赖关系图
│ │ └── 追求速度而非简单性
│ ├── 两种并行
│ │ ├── 发现式并行:从串行指令流中发现并行部分
│ │ └── 给定式并行:如 GPU 处理像素,任务本身具备并行性
│ └── 分支预测
│ ├── 提高分支预测准确率的方法
│ └── 预测错误的影响及优化
├── 四、 程序运行结果的一致性 (17:53 - 20:43)
│ ├── 正确的 C 程序每次运行应产生相同结果
│ ├── 早期 3D 图形加速可能产生不同结果
│ ├── HPC 领域要求结果一致
│ ├── 现代 AI 领域开始探索允许计算结果存在噪声
│ ├── 程序开发过程希望结果一致,便于调试
│ └── 现代计算机保证最终输出结果的一致性
├── 五、 构建计算机和团队 (20:43 - 22:41)
│ ├── 对“传奇架构师”称号感到奇怪
│ ├── 对构建计算机和团队充满热情
│ └── 人员管理和计算机架构设计的相似性:将人员视为功能单元
├── 六、 每五年从头开始 (22:41 - 30:05)
│ ├── 理解和配方的区别
│ │ ├── 配方:按步骤执行
│ │ └── 理解:深入掌握本质
│ ├── 持续深入理解的必要性及平衡
│ ├── “重新思考,重新编写”的必要性:突破增量改进的瓶颈
│ ├── 建议每五年进行一次彻底的重新设计
│ ├── 对 x86-64 标准的看法:指令集稳定,底层架构应更频繁重写
│ └── “从头开始”的恐惧:短期目标与长期目标的冲突
├── 七、 摩尔定律没有消亡 (30:05 - 55:47)
│ ├── 摩尔定律的定义:晶体管数量每两年翻一番,性能每两到三年翻一番
│ ├── 摩尔定律的现状:晶体管缩小速度放缓但仍在继续,背后是数千项创新
│ ├── 晶体管缩小的潜力:理论上可缩小至 10x10x10 个原子
│ ├── 对未来 10-20 年晶体管继续缩小持乐观态度
│ ├── 晶体管数量增加带来的挑战:需要新的设计方法和架构
│ ├── 计算性能提升的方向:算法改进、利用并行性、新计算架构
│ ├── 计算的演进:标量 -> 向量 -> 矩阵 -> 拓扑计算,数据规模推动计算模式演进
│ ├── 人工智能的演进:规则集 -> 深度搜索 -> 深度学习模式识别,计算能力推动 AI 进步
│ ├── 摩尔定律将继续推动 AI 研究进步
│ ├── 贝尔定律:每隔一段时间会出现新的计算范式
│ ├── 对未来的展望:计算模式变革带来不可预测的变化,技术进步带来积极影响
│ └── 计算的本质:世界蕴含数学规律,计算能力发展让我们进行更复杂的数学运算并发现新模式
├── 八、 超级智能是下一个抽象层吗?(55:47 - 1:00:02)
│ ├── 人类是否正在构建新的抽象层?尚不明确,但似乎可能
│ ├── 人类是否是进化的顶峰?不确定,可能只是进化过程中的一个阶段
│ ├── 大脑是否具有魔力?尚不明确,物理证据表明没有,个人体验可能表明有
│ └── 意识的本质是什么?尚不明确,可能是计算的产物,也可能存在计算的极限
├── 九、 宇宙是一个计算机吗?(1:00:02 - 1:03:00)
│ ├── 如果宇宙是一个计算机,那么它是一个非常奇怪的计算机:模拟量子效应计算量巨大
│ └── 宇宙规则存在奇怪的地方:不确定性、光速限制,宇宙本质仍是一个谜
├── 十、 Ray Kurzweil 和技术的指数级改进 (1:03:00 - 1:04:33)
│ └── 技术进步带来巨大变化,具体影响难以预测
├── 十一、 Elon Musk 和 Tesla 自动驾驶 (1:04:33 - 1:20:51)
│ ├── 自动驾驶所需的计算机硬件相对简单
│ ├── 自动驾驶的主要挑战是注意力,而非技能
│ ├── 人类视觉系统的强大之处:提取距离和形状信息,理解复杂场景,推断被遮挡物体
│ ├── 自动驾驶系统的挑战:理解人类行为,预测其他司机的行为
│ ├── 自动驾驶系统的优势:持续保持注意力,记住道路细节信息
│ ├── 自动驾驶的安全性:目标是比人类驾驶更安全,接受严格审查
│ ├── 自动驾驶芯片设计的挑战:性能、成本、功耗平衡,考虑算法快速演进
│ └── 工艺的重要性:工程师工作类似于工匠工作
├── 十二、 从与 Elon Musk 共事中学到的经验 (1:20:51 - 1:28:33)
│ ├── Elon Musk 强调第一性原理思考,挑战现有假设
│ ├── Elon Musk 相信任何事物都存在改进的空间
│ ├── 在 Tesla 工作的经历:充满挑战和乐趣,也伴随着痛苦
│ ├── 持续学习和质疑假设的重要性
│ └── 自动驾驶的未来:几年内可以实现,依赖硬件、软件和算法的共同进步
├── 十三、 来自人工智能的存在性威胁 (1:28:33 - 1:32:38)
│ ├── 不担心超级智能带来的存在性威胁:社会和生物界存在多样性,超级智能可能有其独特的兴趣,不一定会与人类冲突
│ └── 人类社会已经存在不平等,超级智能可能加剧,但这不是新问题
├── 十四、 幸福和生命的意义 (1:32:38 - 1:34:41)
│ ├── 不想重温过去,喜欢面对未知和挑战
│ └── 生命的意义在于探索和发现
└── 十五、 结语 (1:34:41 - 结束)
├── 引用戈登·摩尔的名言
└── 感谢赞助商 Cash App,呼吁支持 First 组织
一、 总览 (0:00 - 2:12)
- 介绍 Jim Keller 的背景和成就:
- 曾在 AMD、Apple、Tesla 和 Intel 工作。
- 参与开发 AMD K7、K8、K12 和 Zen 微架构。
- 参与开发 Apple A4 和 A5 处理器。
- x86-64 指令集和 HyperTransport 互连规范的共同作者。
- 播客介绍及赞助商信息:
- 播客名称:Artificial Intelligence podcast。
- 主持人:Lex Fridman。
- 赞助商:Cash App,并介绍其支持的公益组织 First。
二、 计算机与人脑的区别 (2:12 - 3:43)
- 人脑运作机制尚不明确,难以直接比较。
- 计算机的核心是内存和计算:
- 现代计算机架构采用全局内存,计算单元从中读取数据进行相对简单的运算,再写回数据。
- 计算与存储解耦。
- 人脑像一个复杂的网状结构:
- 信息以分布式方式存储。
- 计算机中的神经网络也采用分布式信息存储方式,但对其深层理解尚不充分。
三、 计算机的抽象层和并行性 (3:43 - 17:53)
- 计算机工程的抽象层:
- 从底层到顶层:原子 -> 材料(硅、掺杂硅、金属)-> 晶体管 -> 逻辑门 -> 功能单元(加法器、减法器、指令解析单元)-> 处理器核心 -> 计算机程序 -> 软件层(汇编语言、C、C++、Java、JavaScript)-> 数据中心。
- 每一层都有其独特的价值和挑战。
- 指令集:
- 指令集定义了基本操作(加载、存储、乘法、加法、减法、条件分支等)的编码方式。
- 程序运行中,90% 的执行时间集中在 25 个左右的核心指令上。
- 指令集相对稳定,如 x86 指令集和 ARM 指令集已存在多年。
- 现代计算机的乱序执行:
- 现代计算机一次性获取大量指令(如 500 条),分析指令间的依赖关系,构建依赖图,并在独立的单元中执行这些微指令图,以提高效率。
- 现代计算机追求速度,而非简单性。
- 两种并行:
- 发现式并行 (Found Parallelism): 从单个串行指令流(如人类的叙事方式)中发现可以并行执行的部分。
- 给定式并行 (Given Parallelism): 例如 GPU 处理像素,每个像素的处理相对独立,可以并行执行。
- 分支预测:
- 现代计算机可以高精度地预测分支指令的结果,以减少分支带来的性能损失。
- 分支预测的精度提升经历了多个阶段,从简单的记录上次结果到使用类似神经网络的复杂预测机制。
- 预测错误会导致流水线清空,带来性能损失,但可以利用已计算的结果来减少损失。
四、 程序运行结果的一致性 (17:53 - 20:43)
- 正确的 C 程序每次运行都应该产生相同的结果,这是语言定义上的要求。
- 早期的 3D 图形加速可能产生不同的结果,HPC(高性能计算)领域通常要求结果一致。
- 现代 AI 领域中,由于输入数据的噪声以及网络精度的降低,人们开始探索允许计算结果存在一定噪声的算法,以提高速度。
- 程序开发过程中,通常希望每次运行得到相同的结果,便于调试。
- 现代计算机即使执行流程不确定,也能保证最终输出结果的一致性。
五、 构建计算机和团队 (20:43 - 22:41)
- Jim Keller 对自己“传奇架构师”的称号感到奇怪。
- Jim Keller 对构建计算机和团队充满热情,并认为人员管理和计算机架构设计有相似之处。
- 将人员视为功能单元,组织设计可以借鉴计算机架构的思想。
六、 每五年从头开始 (22:41 - 30:05)
- 理解和配方的区别:
- 配方:按步骤执行。
- 理解:深入掌握事物的本质和相关知识。
- 专家应追求深层理解,而非仅仅掌握大量配方。
- 持续深入理解的必要性:
- 不断深入理解会导致无法完成任务。
- 缺乏深入理解会导致做错事。
- 需要找到平衡点。
- “重新思考,重新编写”的必要性:
- 对现有系统进行增量改进会遇到瓶颈。
- 需要重新思考和编写,才能突破瓶颈,实现跨越式发展。
- 建议每五年进行一次彻底的重新设计。
- 对 x86-64 标准的看法:
- Jim Keller 是 x86-64 标准的共同作者,该标准已经存在 20 年,并进行了多次扩展。
- 指令集相对稳定,但底层的实现架构已经发生了多次重大变化。
- 建议每五年重新编写一次底层架构。
- “从头开始”的恐惧:
- 短期目标与长期目标的冲突。
- 需要平衡短期利益和长期发展。
七、 摩尔定律没有消亡 (30:05 - 55:47)
- 摩尔定律的定义:
- 最初的定义:每两年晶体管数量翻一番。
- Jim Keller 的理解:每两到三年计算机性能翻一番。
- 摩尔定律的现状:
- 晶体管缩小的速度有所放缓,但仍在继续。
- 摩尔定律背后是数千项创新的推动,这些创新也遵循着 S 曲线。
- 晶体管缩小的潜力:
- 现代晶体管尺寸约为 1000x1000x1000 个原子。
- 理论上可以缩小到 10x10x10 个原子,还有很大的缩小空间。
- Jim Keller 相信未来 10-20 年晶体管将继续缩小,并对此持乐观态度。
- 晶体管数量增加带来的挑战:
- 需要新的设计方法和架构来应对晶体管数量的增加。
- 计算性能提升的方向:
- 除了晶体管缩小,还可以通过改进算法、利用特定应用场景的并行性、以及采用新的计算架构(如堆叠多个 CPU)来提升性能。
- 计算的演进:
- 从简单的标量运算到向量运算、矩阵运算,再到更复杂的拓扑计算。
- 数据规模的增长推动了计算模式的演进。
- 人工智能的演进:
- 从简单的规则集到深度搜索,再到利用深度学习进行模式识别。
- 计算能力的提升推动了人工智能的进步。
- Jim Keller 认为摩尔定律将继续推动人工智能研究的进步。
- 贝尔定律:
- 每隔一段时间(如每 10 倍性能提升)会出现一种新的计算范式。
- Jim Keller 对未来的展望:
- 计算模式的变革将带来不可预测的变化。
- 对自己的工作充满热情,并认为技术的进步将带来积极的影响。
- 计算的本质:
- 世界本身就蕴含着数学规律。
- 计算能力的发展使得我们可以进行更复杂的数学运算,并发现新的模式。
八、 超级智能是下一个抽象层吗?(55:47 - 1:00:02)
- 人类是否正在构建新的抽象层?
- 尚不明确,但似乎是可能的。
- 人类是否是进化的顶峰?
- 不确定,可能只是进化过程中的一个阶段。
- 大脑是否具有魔力?
- 尚不明确,物理证据表明没有,但个人体验可能表明有。
- 意识的本质是什么?
- 尚不明确,可能只是计算的产物,也可能存在计算的极限。
九、 宇宙是一个计算机吗?(1:00:02 - 1:03:00)
- 如果宇宙是一个计算机,那么它是一个非常奇怪的计算机。
- 模拟量子效应需要极大的计算量,这与我们对计算机的理解相悖。
- 宇宙的规则也存在一些奇怪的地方,例如不确定性和光速限制。
- 宇宙的本质仍然是一个谜。
十、 Ray Kurzweil 和技术的指数级改进 (1:03:00 - 1:04:33)
- Ray Kurzweil 认为技术将继续呈指数级增长。
- Jim Keller 认为技术的进步将带来巨大的变化,但具体的影响难以预测。
十一、 Elon Musk 和 Tesla 自动驾驶 (1:04:33 - 1:20:51)
- 自动驾驶所需的计算机硬件相对简单。
- 自动驾驶的主要挑战是注意力,而非技能。
- 人类视觉系统的强大之处:
- 人类可以从 2D 图像中提取距离和形状信息,并理解复杂的场景。
- 人类可以推断被遮挡的物体。
- 自动驾驶系统的挑战:
- 需要理解人类行为,例如预测其他司机的行为。
- 自动驾驶系统的优势:
- 可以持续保持注意力,并记住道路上的细节信息。
- 自动驾驶的安全性:
- 目标是比人类驾驶更安全,并需要接受严格的审查。
- 自动驾驶芯片设计的挑战:
- 需要在性能、成本和功耗之间取得平衡。
- 需要考虑算法的快速演进。
- 工艺的重要性:
- 工程师的工作类似于工匠的工作,需要精湛的技艺和对细节的关注。
十二、 从与 Elon Musk 共事中学到的经验 (1:20:51 - 1:28:33)
- Elon Musk 强调第一性原理思考,并挑战现有的假设。
- Elon Musk 相信任何事物都存在改进的空间。
- 在 Tesla 工作的经历充满挑战和乐趣,但也伴随着痛苦。
- 持续学习和质疑假设的重要性。
- 自动驾驶的未来:
- Jim Keller 相信自动驾驶可以在几年内实现。
- 自动驾驶的实现将依赖于硬件、软件和算法的共同进步。
十三、 来自人工智能的存在性威胁 (1:28:33 - 1:32:38)
- Jim Keller 不担心超级智能带来的存在性威胁。
- 社会和生物界都存在多样性,超级智能可能有其独特的兴趣和领域,不一定会与人类产生冲突。
- 人类社会已经存在不平等,超级智能的出现可能会加剧这种不平等,但这并不是一个新问题。
十四、 幸福和生命的意义 (1:32:38 - 1:34:41)
- Jim Keller 不想重温过去的时刻,而是喜欢面对未知和挑战。
- 生命的意义在于探索和发现。
十五、 结语 (1:34:41 - 结束)
- 引用 Gordon Moore 的名言:“如果你尝试的每件事都能成功,说明你还不够努力。”
- 感谢赞助商 Cash App,并呼吁大家支持 First 组织。
好的,以下是根据提供的框架和要点,以及脚本上下文的特点,重新整理的 Jim Keller 访谈录,并尽可能完整地保留了有效内容,使其更像一篇自然的访谈记录:
一、 总览 (0:00 - 2:12)
Lex Fridman: 大家好,欢迎来到人工智能播客!今天我非常荣幸地邀请到了传奇微处理器工程师 Jim Keller。他曾在 AMD、Apple、Tesla 和 Intel 工作,以其在 AMD K7、K8、K12 和 Zen 微架构方面的工作而闻名。他还参与了 Apple A4 和 A5 处理器的开发,并且是 x86-64 指令集和 HyperTransport 互连规范的共同作者。Jim 是一位杰出的、遵循第一性原理的工程师,一位跳出框架的思想家,也是一位风趣且有意思的对话者。
我最近开始在介绍之后加入一到两分钟的广告,中间不会插播广告,以免打断谈话的流畅性。我希望这不会影响大家的收听体验。本期节目由 Cash App 赞助,它是 App Store 中排名第一的金融应用。我个人使用 Cash App 给朋友转账,但你也可以用它在几秒钟内购买、出售和存入比特币。Cash App 还推出了新的投资功能,你可以购买零碎的股票,比如说一股无论股价是多少都可以买。经纪服务由 Square 的子公司 Cash App Investing 提供,并且是 SIPC 的成员。
我很激动能与 Cash App 合作,支持我最喜欢的组织之一,First。First 以其机器人和乐高竞赛而闻名,他们在超过 110 个国家教育和激励着成千上万的学生,并在 Charity Navigator 上获得了完美的评级,这意味着捐赠的资金得到了最大效力的利用。当你从 App Store 或 Google Play 下载 Cash App 并使用代码 “Lex podcast” 时,你将获得 10 美元,Cash App 也将向 First 捐赠 10 美元,我亲眼见证了这个组织激励着男孩女孩们去梦想,去设计一个更美好的世界。
现在,让我们开始与 Jim Keller 的对话吧!
二、 计算机与人脑的区别 (2:12 - 3:43)
Lex Fridman: Jim,让我们从一个哲学问题开始吧。人脑和计算机的微处理器核心之间有什么异同?
Jim Keller: 嗯,由于人们实际上并不了解人脑是如何工作的,我认为…
Lex Fridman: 这是真的。
Jim Keller: 对,所以很难比较它们。对于计算机来说,实际上有两个关键的东西:内存和计算。迄今为止,几乎所有的计算机架构都是全局内存,然后是计算,你从全局内存中提取数据,对它进行相对简单的操作,然后写回数据。所以在现代计算机中,存储和计算是解耦的。而在人脑中,一切似乎都是一个相互连接的网状结构。人们观察到的是,大脑中存在一定数量的神经元层,这些神经元层具有局部和全局连接,信息以某种分布式方式存储。人们在计算机中构建所谓的神经网络,其中信息也以某种分布式方式存储。这背后有一些数学原理,但我认为我们对它的理解还不是很深入。我们在神经网络上运行的计算是直接的计算,我不相信有人能明确地说出某个神经元具体执行了什么计算。所以,到目前为止,人脑和计算机很难直接比较。
三、 计算机的抽象层和并行性 (3:43 - 17:53)
Lex Fridman: 在我们深入之前,先聊聊基础知识吧。你是如何从零开始构建一台计算机的?什么是微处理器?什么是微架构?什么是指令集架构?甚至可以追溯到什么是晶体管?
Jim Keller: 计算机工程的魅力在于,人们对抽象层有着相对较好的理解。从底层开始,我们有原子,原子被组合成材料,比如硅、掺杂硅或金属。然后我们在这些材料的基础上构建晶体管,再构建逻辑门,以及像加法器、减法器或指令解析单元这样的功能单元。我们将这些功能单元组装成处理元件。现代计算机由大约 10 到 20 个本地的、你知道的,有机的或一致的处理元件组成。然后这些处理元件运行计算机程序。所以这就是抽象层。在软件方面,有一个指令集,你运行指令集,然后有汇编语言、C、C++、Java、JavaScript,你知道的,这些也是抽象层。基本上,从原子到数据中心,都存在着抽象层。
所以,当你构建一台计算机时,首先要确定目标,比如它是用来做什么的?它需要多快?现在有很多关于这些目标的指标。然后在一个由大约一千人组成的团队中,构建一台计算机需要涉及许多不同的学科。
Lex Fridman: 有道理。所以有很多抽象层。在你自己的愿景中,在每一个层面上都有很多才华展现,有些是科学,有些是工程,有些是艺术。如果让你选,哪一层最重要,或者说你最喜欢哪一层?在这些抽象层中,魔力在哪里产生?
Jim Keller: 我并没有特别偏爱哪一层,这才是乐趣所在。我对这些层级在某种程度上是不可知论者。我会说,在相当长的一段时间内,指令集是稳定的。比如 x86 指令集,ARM 指令集。
Lex Fridman: 什么是指令集?
Jim Keller: 指令集定义了如何编码基本操作,如加载、存储、乘法、加法、减法、条件分支等等。你知道的,有趣的指令其实并不多。如果你看一个程序,它运行的 90% 的时间都集中在大约 25 个操作码,也就是 25 条指令上。这些指令是稳定的。
Lex Fridman: 稳定是什么意思?
Jim Keller: 一个指令集架构已经存在了 25 年,并且一直有效。
Lex Fridman: 一直有效。
Jim Keller: 这是因为这些基础的东西在很久以前就已经定义好了。以前的计算机是按顺序获取和执行指令的,先加载,然后做加法,然后做比较。而现代计算机的工作方式是,它会获取大量的指令,比如说 500 条,然后找出这些指令之间的依赖关系图,然后在独立的单元中执行这些小的微指令图。所以现代计算机,人们喜欢说计算机应该简单而整洁,但事实证明,简单、整洁、缓慢的计算机市场为零。我们现在不卖任何简单、整洁的计算机。当然,你可以把构建过程做得整洁。但是人们想买的计算机,比如手机或数据中心的计算机,它会获取大量的指令,计算依赖关系图,然后以一种能够得到正确答案的方式执行它,并以某种方式优化这个图。
Lex Fridman: 并以某种方式优化这个图。
Jim Keller: 是的,它们是深度乱序执行的。然后还有关于内存排序和其他东西如何工作的语义。所以计算机有一堆簿记表,记录着这些操作完成的顺序,或者说看起来完成的顺序。但是为了提高速度,你必须获取大量的指令并找到所有的并行性。现在还有第二种计算机,我们今天称之为 GPU。
Lex Fridman: 这有什么不同呢?
Jim Keller: 有两种并行,我称之为“发现式并行”和“给定式并行”。“发现式并行”是指你有一个包含大量依赖指令的程序,你获取一堆指令,然后找出它们之间的依赖关系图,并乱序执行。这是因为你有一个需要执行的串行叙述,实际上是可以乱序完成的。
Lex Fridman: 你称之为叙述?
Jim Keller: 是的,因为人类的思维是串行叙述的。比如读一本书,有一句话接一句话,还有段落。现在你可以把这本书的结构画出来,假设你正确地画出来了,然后你可以指出哪些句子可以不按顺序阅读而不改变意思。
Lex Fridman: 对一本书提出这个问题很有趣。
Jim Keller: 是的,你可以这样做。有些段落可以重新排序,有些句子可以重新排序。你可以说“他又高又聪明”等等,高和聪明的顺序并不重要。但如果你说“那个穿着红色衬衫的高个子男人”,你知道的,你可以创建依赖关系。而 GPU 运行的是简单的程序,处理的是像素,但你有一百万个像素要处理,而且从最基本的角度来说,你正在看的屏幕并不关心你处理这些像素的顺序。我称之为“给定式并行”,即围绕大量事物展开的简单叙述,你可以直接说它是并行的,因为你被告知它是并行的。
Lex Fridman: “发现式并行”是指叙述是顺序的,但你发现了可以并行的部分。与之相对的是?
Jim Keller: 大量的并行部分。
Lex Fridman: 发现这些并行部分有多难?
Jim Keller: 这取决于晶体管的数量。一旦你解决了这个问题,你说“这是一次获取 10 条指令的方法,这是计算它们之间依赖关系的方法,这是描述依赖关系的方法,这是……”,你知道的,这些都是组成部分。一旦你描述了依赖关系,它就是一个图,一个寻找……的算法。
Lex Fridman: 我确信这里有一个图论的理论解。
Jim Keller: 对于一般的程序,现代程序,就像人类一样。存在多少“发现式并行”?这里的 10x 是什么意思?
Lex Fridman: 10x?
Jim Keller: 嗯,如果你按顺序执行指令,你会得到所谓的每个指令的周期数(CPI),它大约是每个指令 3 个周期,因为操作的延迟等等。而在现代计算机中,大约是每个指令 0.2 到 0.25 个周期。所以现在大约是 10 倍。这里有两个因素,一个是叙述中的“发现式并行”,另一个是叙述的可预测性。某些操作会进行一系列计算,然后“如果大于 1 则执行这个,否则执行那个”。这个决策在现代计算机中被预测的准确率高达 90% 以上。
Lex Fridman: 所以分支经常发生。
Jim Keller: 想象一下,你平均每执行 6 条指令就要做一个决定,但你想要获取 500 条指令,找出它们之间的关系图,并并行执行它们。这意味着,假设你获取 600 条指令,每 6 条指令你需要预测一个分支,你必须在 100 个分支中正确预测 99 个,才能使这个窗口有效。
Lex Fridman: 所以你不能将分支并行化,或者你可以……
Jim Keller: 你可以预测分支。
Lex Fridman: 预测分支是什么意思?或者,打开……
Jim Keller: 想象一下你一遍又一遍地进行计算,你在一个循环中,“如果大于 1 则执行……”,你循环一百万次。所以每次你看到这个分支,你就可以说“它可能仍然大于 1”。
Lex Fridman: 你是说你可以非常准确地做到这一点?
Jim Keller: 非常准确。
Lex Fridman: 我的天啊,你是怎么做到的?等一下。
Jim Keller: 你想知道吗?这真的很可悲。20 年前,你只需要记录上次分支的走向,然后预测相同的结果。
Lex Fridman: 好吧。
Jim Keller: 准确率是多少?85%。然后有人说:“嘿,让我们保留几个位,用一个小计数器。”然后进行预测,我们向上计数,然后……比如说你有一个三位计数器,你向上计数,然后向下计数。如果大于 1,你预测执行,如果小于 1,你预测不执行,或者小于零,或者其他什么。这使准确率提高到了 92%。
Lex Fridman: 好吧。
Jim Keller: 然后有人说:“这个分支取决于你是如何到达那里的。”如果你从代码的某个方向过来,你在谈论 Bob 和 Jane,然后你说“Bob 喜欢 Jane 吗?”你会走一条路。但如果你在谈论 Bob 和 Jill,“Bob 喜欢 Jill 吗?”你会走另一条路。这被称为历史。所以你把历史和一个计数器结合起来。
Lex Fridman: 这很酷。
Jim Keller: 但现在的情况已经不是这样了。他们现在使用一些看起来有点像神经网络的东西。现代的……他们会获取所有的执行流,然后基本上对程序的执行方式进行深度模式识别,并以多种不同的方式进行。然后他们有一个选择器,选择最佳结果。
Lex Fridman: 所以计算机内部有一个小型的超级计算机在尝试预测……
Jim Keller: 计算分支的走向,从而使值得寻找并行性的有效窗口变大。
Lex Fridman: 为什么这会让我感到难过?这太神奇了!
Jim Keller: 这非常复杂。
Lex Fridman: 好吧。
Jim Keller: 有趣的是,为了达到 85% 的准确率,只需要 1000 位。而为了达到 99% 的准确率,需要数千万位。所以,为了得到你想要的结果,你知道的,为了将窗口从 50 条指令扩展到 500 条指令,需要增加三到四个数量级的位数。
Lex Fridman: 如果分支预测错误会发生什么?
Jim Keller: 会发生什么?
Lex Fridman: 流水线……
Jim Keller: 你会清空流水线,这只是性能损失。
Lex Fridman: 但它会变得更好。
Jim Keller: 是的,我们现在正在研究一些东西,比如说你沿着这条路径执行,然后你有两条路可以走,但在很远的地方,无论你走哪条路都无关紧要。所以你预测错了,你执行了一堆东西,然后你不得不因为预测错误而回退,但你记住了所有已经计算过的结果,其中一些结果仍然是有效的。
Lex Fridman: 如果你读一本书,你误解了一个段落,你对下一个段落的理解有时是不变的。
Jim Keller: 我不理解你。
Lex Fridman: 有时它是依赖的,你可以预测那种不变性。
Jim Keller: 是的,你可以跟踪数据是否发生了变化。所以当你回到一段代码时,你是应该重新计算它,还是做同样的事情?
Lex Fridman: 这里面有多少是艺术,多少是科学?因为这听起来相当复杂。
Jim Keller: 你怎么描述这种情况呢?想象一下你来到一个岔路口,你必须做出决定,你有很多关于走哪条路的知识,也许你有一张地图。所以你想走最短的路,还是想走最快的路,或者你想走风景最好的路?这只是一组数据。想象一下你在做一些复杂的事情,比如建造一台计算机,有数百个决策点,每个决策点都有数百种可能的选择,而且你选择的方式会以复杂的方式相互影响。然后你必须选择正确的方向。所以,我不知道。
Lex Fridman: 你回避了这个问题,你描述了……
Jim Keller: 罗伯特·弗罗斯特的诗《未选择的路》。
Lex Fridman: 你描述了罗伯特·弗罗斯特的问题。
Jim Keller: 我们作为计算机设计师,就是在做这样的事情。
Lex Fridman: 这都是诗歌。
Jim Keller: 好吧,很好。我不知道该怎么描述,因为有些人非常擅长进行那些直觉的跳跃,这似乎是……
Lex Fridman: 各种事物的组合。
Jim Keller: 有些人不太擅长直觉跳跃,但他们非常擅长评估你的选择。每个人都有不同的方式,有些人无法进行那些跳跃,但他们非常擅长分析。所以计算机是由拥有不同技能的人组成的团队设计的,一个好的团队有很多不同类型的人。我猜你会把其中一些人描述为艺术家。
Lex Fridman: 但不幸的是,或者幸运的是,并不多。
Jim Keller: 幸运的是。
Lex Fridman: 好吧。
Jim Keller: 你知道,计算机科学很难,99% 是汗水。
Lex Fridman: 1% 的灵感很重要,但我需要那 99% 的汗水。
Jim Keller: 是的,你必须做很多工作。在抽象层堆栈的每一层都有有趣的事情要做。
四、 程序运行结果的一致性 (17:53 - 20:43)
Lex Fridman: 最后,如果你多次运行同一个程序,它总是产生相同的结果吗?还是说这里有一些模糊的空间?
Jim Keller: 这是一个数学问题。如果你运行一个正确的 C 程序,它的定义是每次运行都会得到相同的结果。
Lex Fridman: 好的。
Jim Keller: 这是一个数学陈述,但这是一个语言定义上的陈述。是的,很多年前,当我们第一次做 3D 图形加速时,你可以多次运行同一个场景并得到不同的结果。
Lex Fridman: 对,对。
Jim Keller: 然后有些人认为这没问题,有些人认为这是个坏主意。然后当 HPC(高性能计算)领域使用 GPU 进行计算时,他们认为这是个非常糟糕的主意。
Lex Fridman: 好吧。
Jim Keller: 现在,在现代的 AI 领域,人们正在研究一些网络,其中数据的精度足够低,以至于数据有些嘈杂。他们观察到输入数据非常嘈杂,所以为什么计算结果不能嘈杂呢?人们已经试验了一些算法,这些算法可以通过引入噪声来更快地获得答案。例如,当网络开始收敛时,如果你观察计算图,它开始时非常宽,然后逐渐变窄。你可以问,最后那一点是否重要,或者我是否应该在完全收敛到答案之前就开始下一轮迭代?所以你可以创建有噪声的算法。现在,如果你正在开发一些东西,而每次运行它都会得到不同的结果,这真的很烦人。所以大多数人认为,即使在今天,每次运行程序都应该得到相同的结果。
Lex Fridman: 现在我知道,但问题是,这是编程语言的正式定义。
Jim Keller: 有一些语言的定义是不要求得到相同的结果的,但是使用这些语言的人总是想要一些……因为你得到了一个错误的答案,然后你会想知道是不是因为……
Lex Fridman: 对,你的兄弟,还是因为这个。
Jim Keller: 所以每个人都想要一个小开关,说“无论如何,都要确定性地执行”。这真的很奇怪,因为几乎所有进入货币计算的东西都是嘈杂的。
Lex Fridman: 所以答案为什么要这么清晰呢?
Jim Keller: 对。
Lex Fridman: 你的立场是什么?
Jim Keller: 我们为运行程序的人设计计算机。所以有人说“我想要一个确定性的答案”,大多数人都想要确定性的答案。
Lex Fridman: 你能提供一个确定性的答案吗?我想问的是。
Jim Keller: 当然可以,这是人们没有意识到的。即使执行流程非常不确定,你也能得到一个确定性的答案。所以如果你运行这个程序一百次,它每次的运行方式都不一样,但它每次都能得到相同的答案。
Lex Fridman: 这太神奇了。在许多人眼中,你已经达到了……
五、 构建计算机和团队 (20:43 - 22:41)
Lex Fridman: 在许多人眼中,你已经达到了传奇架构师的地位。你最引以为豪的设计或创造是什么?也许是因为它的挑战性,因为它的影响力,或者因为它所涉及的一系列绝妙的想法。
Jim Keller: 我觉得这个描述很奇怪。我有两个小孩,我保证他们会觉得这个问题很搞笑。
Lex Fridman: 是吗?
Jim Keller: 所以,我…我对构建计算机非常感兴趣,并且我和非常非常聪明的人一起工作过。
Lex Fridman: 你不是非常聪明吗?
Jim Keller: 我对计算机如何组合在一起很着迷,既作为一件要做的事情,也作为人们所做的一项事业。
Lex Fridman: 人与计算机如何结合?
Jim Keller: 是的,比如人们如何思考和构建计算机。我发现有时最好的计算机架构师对人并不那么感兴趣,或者最好的人员管理者并不那么擅长设计计算机。所以整个人类技能的堆栈都很有趣。
Lex Fridman: 管理者,个体工程师……
Jim Keller: 是的,我只是……我意识到,在构建了多年的计算机之后,你可以把人看作是功能单元。
Lex Fridman: 把人看作是功能单元?
Jim Keller: 是的,然后你可以把组织设计看作是一个计算机架构问题。然后你会想,“哦,这太酷了,因为人都是不同的,就像计算单元都是不同的一样,他们喜欢做不同的事情”。所以我有很多乐趣,比如重新构建我对组织的看法。就像计算机一样,你可以有很多不同的执行路径,最终到达相同的、好的目的地。
六、 每五年从头开始 (22:41 - 30:05)
Lex Fridman: 你从个体功能单元,到更广泛的组织,对人类的抽象有什么了解?创造一些特别的东西需要什么?
Jim Keller: 大多数人思考得不够简单。
Lex Fridman: 好吧。
Jim Keller: 你知道配方和理解之间的区别吗?可能有一个哲学的描述。想象一下你可以做一个面包,配方上说,拿一些面粉,加一些水,加一些酵母,混合起来,让它发酵,放在平底锅里,放进烤箱。这是一个配方。而理解面包,你可以理解生物学、供应链、谷物研磨机、酵母、物理学、热力学等等,这里有很多层次的理解。当人们构建和设计东西时,他们经常执行一些配方的堆栈。这样做的问题是,配方的适用范围有限。如果你有一本非常好的制作面包的食谱,它不会告诉你如何制作煎蛋卷。
Lex Fridman: 对,对。
Jim Keller: 但是如果你对烹饪有深刻的理解,那么面包、煎蛋卷、三明治等等,你知道的,就会有一种不同的看待一切的方式。大多数人,当你成为某个领域的专家时,你希望获得更深入的理解,而不仅仅是一大堆要执行的配方。在人群中观察这一点很有趣,因为执行配方非常高效,如果这是你想要做的。如果这不是你想要做的,你就会陷入困境。这种区别至关重要,每个人都有一个平衡点,比如说更深入的理解和配方。有些人非常善于识别问题何时需要深入理解。
Lex Fridman: 这完全说得通。在开发的每个阶段都需要团队的深入理解吗?这又回到了艺术与科学的问题。
Jim Keller: 当然。如果你不断地为了更深入的理解而拆解每件事,你永远也完成不了任何事情。如果你在需要的时候不进行深入理解,你就会做错事。在每一个关头,人类都是这些非常奇怪的东西,因为你告诉他们的每一件事都有一百万种可能的输出。然后它们都以一种滑稽的方式相互作用,然后对你告诉他们什么,你做什么,你何时干预,何时不干预,有一些直觉,这很复杂。
Lex Fridman: 好吧。
Jim Keller: 所以,这基本上是计算上不可解的。
Lex Fridman: 这是一个棘手的问题。
Jim Keller: 当然,人类是一个烂摊子。
Lex Fridman: 但是,深入理解,你是否也指一些基本的问题,比如……
Jim Keller: 什么是计算机?或者为什么……
Lex Fridman: 我们为什么要构建这个东西?是关于目的,还是你更倾向于……
Jim Keller: 走向物理学的基本极限,深入到……
Lex Fridman: 核心的科学。
Jim Keller: 就构建计算机而言,想得简单一点,再简单一点。常见的做法是,你构建一台计算机,然后当有人说“我想让它快 10%”时,你会进去说“好吧,我需要把这个缓冲区做得更大,也许我应该添加一个加法单元,或者,你知道的,我有一个三指令宽的东西,我要把它变成四指令宽”。你会发现,每个部分都变得越来越复杂。然后在某个时候,你会遇到一个瓶颈,添加另一个功能或缓冲区似乎并没有让它变得更快。然后人们会说,“这是因为存在一个基本的限制”。然后其他人会看着它说,“实际上,你划分问题的方式以及不同功能交互的方式限制了你,它必须被重新思考,重新编写”。所以然后你重构它,重新编写它。人们通常发现,重新编写的版本不仅更快,而且复杂度只有原来的一半。
Lex Fridman: 从头开始?
Jim Keller: 是的。
Lex Fridman: 在你的职业生涯中,你多久……但也许更普遍地说,你认为需要把整个东西扔掉?
Jim Keller: 这方面我是一个极端的人,每三到五年。
Lex Fridman: 你是哪一端的?
Jim Keller: 更频繁地重写。
Lex Fridman: 三到五年?
Jim Keller: 三到五年。如果你想在计算机架构上取得真正的进步,每五年你应该从头开始做一个。
Lex Fridman: 那么 x86-64 标准是怎么回事?你多久……
Jim Keller: 我是 x86-64 标准的共同作者,那是在 98 年,那是 20 年前了。
Lex Fridman: 是的。
Jim Keller: 它仍然存在。
Lex Fridman: 指令集……
Jim Keller: 指令集已经被扩展了很多次。
Lex Fridman: 是的。
Jim Keller: 指令集不太有趣,底层的实现更有趣。在 x86 架构上,英特尔设计了一些,AMD 设计了一些非常不同的架构。我不想过多地谈论细节,但是……
Lex Fridman: 有多频繁?
Jim Keller: 有一种趋势是每十年重写一次,实际上应该是每五年重写一次。
Lex Fridman: 所以你是一个离群值。
Jim Keller: 在这个意义上,是的。
Lex Fridman: 更频繁地重写?
Jim Keller: 更频繁地重写。
Lex Fridman: 这难道不可怕吗?
Jim Keller: 当然可怕。
Lex Fridman: 对谁来说可怕?
Jim Keller: 对每个参与其中的人来说都很可怕,因为就像你说的,重复配方是高效的,公司想要赚钱。
Jim Keller: 不,个体的工程师想要成功。所以你想要逐步改进,把缓冲区从 3 增加到 4。
Jim Keller: 我们会遇到收益递减曲线的问题。我想史蒂夫·乔布斯说过这个,对吧?你有一个项目,你从这里开始,它上升,然后遇到收益递减。为了达到下一个水平,你必须做一个新的,新的起始点会低于旧的优化点,但它会变得更高。所以现在你有两种恐惧:短期灾难和长期灾难,而且你是……
Lex Fridman: 而且你是对的。
Jim Keller: 对,有季度业务目标的人害怕改变一切。而那些试图长期运营企业或构建计算机的人知道,短期的限制会阻碍他们取得长期的成功。所以如果你看看那些取得了真正好的长期成功的公司的领导者,每次他们看到需要重做某件事时,他们都会去做。所以必须有人站出来,或者你并行地做多个项目,比如你在优化旧项目的同时构建一个新项目。但是市场营销人员总是说,“向我保证,新计算机会在每一件事上都更快”。计算机架构师会说,“新计算机会在平均情况下更快,但性能结果存在一个分布,你会遇到一些较慢的异常值”。这非常困难,因为他们有一个客户关心那个异常值。
七、 摩尔定律没有消亡 (30:05 - 55:47)
Lex Fridman: 说到长期,50 多年来,摩尔定律一直激励着我和数百万人。什么样的美好的未来是聪明的工程师可以创造的?
Jim Keller: 不,我只是……
Lex Fridman: 让你孩子笑一笑。
Jim Keller: 今天到场的各位,这很好。首先,在你看来,什么是摩尔定律?如果你能为那些不知道的人定义一下。
Jim Keller: 嗯,简单的说法是,戈登·摩尔说每两年晶体管数量翻一番,类似这样。然后我的操作模型是,我们每 2 到 3 年将计算机的性能提高 2 倍,这个数字随着时间的推移发生了很大的变化,而且我们提供性能的方式也发生了变化。但基本的想法是每两年增加 2 倍的晶体管。目前的节奏是,他们称之为缩小因子,大约每两年缩小 0.6 倍,这不是 0.5 倍。
Lex Fridman: 这仅仅是指最初的晶体管数量的定义吗?缩小因子就是把它们做得更小?
Jim Keller: 更小。如果你在相同的芯片面积上,把晶体管缩小 0.6 倍,那么你就可以得到 1/0.6 倍的晶体管。
Lex Fridman: 你能再详细解释一下吗?对于摩尔定律,你认为更广泛的定义应该是什么?我们之前提到了你如何看待性能。总的来说,什么是思考摩尔定律的好方法?
Jim Keller: 首先,30 年来我一直关注着摩尔定律。
Lex Fridman: 从什么意义上说?
Jim Keller: 我设计计算机已经 40 年了。
Lex Fridman: 就在你眼前看着它……
Jim Keller: 在某个时候,当我意识到它的时候,我也被告知摩尔定律将在 10 到 15 年内消亡。起初我认为这是真的,但 10 年后,它又说将在 10 到 15 年内消亡。然后有一段时间它说将在 5 年内消亡,然后又回到了 10 年。在某个时候,我决定在我的余生中不再担心那个特别的预测,这很有趣。然后我加入了英特尔,每个人都说摩尔定律已经消亡了。我觉得这很可悲,因为这是摩尔定律的公司,但它并没有消亡。它总是说将要消亡,你知道人类喜欢这些虚假的说法,比如我们会耗尽食物,或者耗尽空气,或者其他什么。
Lex Fridman: 但它仍然令人难以置信,它持续了这么长时间。
Jim Keller: 是的,现在有很多人相信摩尔定律……
Lex Fridman: 他们可以加入过去 50 年来……
Jim Keller: 有很长的传统。
Lex Fridman: 但你为什么认为,如果你能尝试理解它,你为什么认为它没有消亡?
Jim Keller: 首先,人们认为摩尔定律只是一件事,晶体管变得更小。但实际上,它背后有数千项创新,几乎所有这些创新都有自己的收益递减曲线。所以如果你画出来,它看起来像一连串的收益递减曲线,我不知道该怎么称呼它,但结果是一条指数曲线,至少过去是这样。我们不断发明新事物,所以如果你是其中一项处于收益递减曲线上的技术的专家,你可以看到它已经趋于平稳,你可能会告诉人们“这已经结束了”。与此同时,其他一些人正在做一些不同的事情。所以这很正常。然后有人观察到,一个开关器件能有多小?现代的晶体管大约是 1000x1000x1000 个原子,而在 2 到 10 个原子左右就会出现量子效应。所以你可以想象一个晶体管小到 10x10x10 个原子,所以这比现在小一百万倍。然后量子计算领域的人正在研究如何利用量子效应。
Lex Fridman: 所以 1000x1000x1000 个原子,这是对它的一种非常简洁的描述。
Jim Keller: 是的,比如现代的晶体管,如果你看它的鳍片,它大约有 120 个原子宽,但我们可以把它做得更薄。然后它周围有一个栅极,在……有很多几何结构。一个称职的晶体管设计师可以数出每个方向上的原子数量。现在已经有一些技术可以把原子放在一个单原子层上,如果你愿意,你可以放置原子。只是从制造过程的角度来看,如果放置一个原子需要 10 分钟,而你需要把 10 的 23 次方个原子放在一起才能制造出一台计算机,那将需要很长时间。所以这些方法既包括缩小尺寸,也包括提出有效的方法来控制正在发生的事情。
Lex Fridman: 廉价地制造……
Jim Keller: 是的,所以创新的范围非常广泛,你知道的,有设备、光学、化学、物理学、材料科学、冶金学,还有很多关于当你把四种材料放在一起时,它们如何相互作用的想法。它们是否稳定?它们在什么温度下稳定?你知道的,它们是否可重复?有很多……涉及数千种技术。
Lex Fridman: 但仅仅是缩小尺寸,你不认为我们已经接近物理学的基本极限了吗?
Jim Keller: 我做了一个关于摩尔定律的演讲,我要求他们提供一个未来 100 倍的路线图。两周后,他们说我们只能做到 50 倍。
Lex Fridman: 100 倍是什么?再缩小 100 倍?
Jim Keller: 我们只能做到 50 倍。我说,“再花两周时间试试”。
Jim Keller: 关于摩尔定律,是这样的:我相信未来 10 到 20 年的缩小将会发生。现在,作为一名计算机设计师,你有两种立场:你认为它会缩小,在这种情况下,你以一种将使用更多晶体管的方式来设计和思考架构,或者相反,不被你得到的所有晶体管的复杂性所淹没。你必须有一个策略。
Lex Fridman: 所以你对这种可能性持开放态度,并等待着有一大堆新的晶体管可供使用的可能性?
Jim Keller: 我期待着每两到三年晶体管数量增加到一个足够大的数字,以至于你思考设计的方式,你思考架构的方式都必须改变。想象一下你用砖块建造砖房,而每一年或每两年砖块的尺寸都缩小一半。如果你继续以同样的方式建造砖房,你知道的,每个人每天砌这么多块砖,建造一栋房子所需的时间将呈指数级增长。
Lex Fridman:
Jim Keller: 对,对。但是如果你说“我知道这即将到来,所以现在我要设计能够更快地移动砖块、更好地使用砖块的设备”,因为也许你可以从更小的砖块中获得一些好处,比如更坚固、更薄的墙壁,你知道的,材料效率更高。所以一旦你有了一个关于晶体管将会发生什么的路线图,它们会变得……我们会得到更多晶体管,然后你就可以进行相应的设计,以利用它,并应对它。人们需要理解这一点,如果我不相信摩尔定律,而摩尔定律的晶体管出现了,我的设计团队就会被淹没。
Lex Fridman: 在这个新晶体管的洪流中,最困难的部分是什么?我的意思是,即使你回顾历史,回顾你的职业生涯,当你增加更多晶体管时,在设计架构的任务中,什么是……什么从根本上发生了变化?
Jim Keller: 有两个常量。一个是人们并没有变得更聪明。顺便说一下,我认为有一些迹象表明我们确实变得更聪明了,因为营养或其他什么原因。
Lex Fridman: 是平庸效应吗?
Jim Keller: 是的,没有人理解它,没有人知道它是否还在继续,或者它是否真实。但这是……我倾向于相信,对于大多数人来说,人们并没有变得更聪明,证据并不支持这一点。其次,团队的规模也不能无限增长。人类,我们理解,你知道的,我们在 10 人左右的团队中工作得很好,最多可以到 100 人的团队,他们可以相互认识。除此之外,你必须有组织的边界。所以你有……这些都是非常严格的约束。然后你必须分而治之,随着设计变得越来越大,你必须把它分成几块。你知道的,抽象层的力量非常强大。我们过去用晶体管构建计算机,现在我们有一个团队把晶体管变成逻辑单元,还有一个团队把它们变成功能单元,还有一个团队把它们变成计算机。所以我们在其中设置了抽象层,你必须考虑什么时候在该层面上进行转换。我们也使用更快的计算机来构建更快的计算机。有些算法在新计算机上运行速度快一倍,但很多算法是 N 平方的。所以,你知道的,一台拥有两倍晶体管的计算机,运行时间可能是原来的四倍。所以你必须在软件层面进行重构。仅仅使用更快的计算机来构建更大的计算机是行不通的。所以你必须考虑所有这些事情。
Lex Fridman: 就计算性能而言,以及更强大的计算机带来的令人兴奋的可能性,缩小尺寸,也就是我们一直在谈论的,对你来说,是性能提升方面最令人兴奋的可能性之一吗?或者你对其他方向感兴趣,比如强制“给定式并行”,或者在许多、许多 CPU 方面进行大规模并行,你知道的,把 CPU 堆叠在一起,那种并行,或者你……
Jim Keller: 从不同的角度来看待它。以前的计算机,你知道的,慢速计算机,你说 A = B + C * D,非常简单。然后我们制造了具有向量单元的更快的计算机,你可以进行一些更复杂的方程和矩阵运算。然后是现代的 AI 计算,比如卷积神经网络,你将一个大数据集与另一个大数据集进行卷积。所以这里存在着一种数学的层次结构,从简单的方程到线性方程,再到矩阵方程,再到……这是一种更深层次的计算。而且数据集变得如此之大,以至于人们开始把数据看作是一个拓扑问题。你知道的,数据以某种巨大的形状组织起来,然后计算,它想要从这个巨大的形状中获取数据,并对其进行一些计算。所以,对于拥有大量计算资源的计算机,很多人要做的是如何让算法走得更远。所以你提到的那篇 Sutton 的论文,他们谈到了,你知道的,在 AI 中,它最初是一组策略规则,这是非常简单的计算情况。然后当他们第一次做国际象棋程序时,他们解决了深度搜索的问题,所以有一个包含大量走法和结果的数据库,深度搜索,但它仍然只是一种搜索。现在我们获取大量的图像,并用它来训练这些权重集,然后我们对这些权重集进行卷积。这是一种完全不同的现象,我们称之为 AI。现在他们正在做下一代,如果你观察它,他们正在沿着这个数学图向上走。然后计算……计算和数据集都支持沿着这个图向上走。
Lex Fridman: 这种计算……我的意思是,我认为所有这些仍然是一种搜索,就像你说的,拓扑问题的数据,说到底就是在数据集中搜索有价值的数据,而且实际的……
Jim Keller: 对神经网络的优化是一种搜索。
Lex Fridman: 我不确定你是否看过……在寻找猫的过程中,这不是一个搜索,它是一组……
Jim Keller: 无尽的投影。
Lex Fridman: 投影?
Jim Keller: 这是这个手机的影子,你可以把那个影子投射到某个东西上,再把那个影子投射到某个东西上。如果你观察这些层,你会看到这一层实际上描述了尖尖的耳朵、圆圆的眼睛和毛茸茸的东西。但是提取这些属性的计算并不是搜索。
Lex Fridman: 好的。
Jim Keller: 推断部分可能是搜索,但训练不是搜索。
Lex Fridman: 好吧,在深度网络中,他们观察这些层,他们甚至不知道它代表了什么,但是如果你把这些层拿掉,它就不起作用了。
Jim Keller: 所以我不认为这是搜索。
Lex Fridman: 好吧。
Jim Keller: 你得和我的数学家谈谈这到底是什么。
Lex Fridman: 哦,你不同意。
Jim Keller: 这只是语义上的问题。
Lex Fridman: 我不认为这是……
Jim Keller: 但这肯定不是……我会说这绝对不是语义上的问题,但是好吧。
Lex Fridman: 好吧,如果你想继续这个话题,对我来说,优化就是搜索。我们在尝试优化神经网络检测猫耳朵的能力。
Jim Keller: 国际象棋和……之间的区别,难以置信的多维空间,十万维的空间,你知道的,网络试图优化的空间,与棋盘数据库完全不同。所以这是一种完全不同的东西。
Lex Fridman: 好的,从这个意义上说,你可以说……
Jim Keller: 是的,是的,你知道的,我可以看到你是怎么……你可能会说,如果……有趣的是,这是“给定搜索空间”和“发现搜索空间”之间的区别。
Lex Fridman: 确切地说。
Jim Keller: 也许这是……
Lex Fridman: 一种不同的……很漂亮。但是,好吧。但是你说的是,你对基本数学运算和能够实现这些运算的架构有什么感觉?你是否认为今天的 CPU 仍然是执行这些数学运算的核心部分?
Jim Keller: 是的,这些运算仍然是加法、减法、加载、存储、比较和分支,这很了不起。有趣的是,你知道的,计算机的构建模块是晶体管,而在那之下是原子。所以你有原子、晶体管、逻辑门、计算机,你知道的,功能单元和计算机。在某种程度上,数学的构建模块是加法、减法和乘法之类的东西。但数学可以描述的空间,我认为基本上是无限的。但是运行这些算法的计算机仍然在做同样的事情。现在一个给定的算法可能会说“我需要稀疏数据,或者我需要 32 位数据,或者我需要……”,你知道的,像卷积运算,它自然地获取 8 位数据,将它们相乘,然后以某种方式求和。所以……
Lex Fridman: 数据类型……
Jim Keller: TensorFlow 中的数据类型暗示了一个优化集。但是当你写下来观察计算机时,它是一个无机的……就像,这并没有太大变化。现在量子研究人员认为他们将从根本上改变这一点。然后还有人思考模拟计算,因为你观察大脑,它似乎更像模拟的,你知道的,也许有一种方法可以更有效地做到这一点。但是我们在计算方面有了一百万倍的提升,我不知道计算……之间的关系,比如说计算强度和达到数学抽象的能力,我不知道……但就像你在 AI 中看到的,你从规则集到简单的搜索,再到复杂的搜索,再到“发现搜索”,你知道的,这些都需要更多的计算量。随着我们获得接下来的两个数量级的提升,你的朋友 Raja Godori 说,每一个数量级的提升都会从根本上改变计算的内容。
Lex Fridman: 你知道有句话叫“量变引起质变”。
Jim Keller: 你知道的,蚂蚁和蚁丘之间的区别,或者神经元和大脑之间的区别,你知道的,有一个难以言喻的地方,数量的改变导致了质量的改变。现在我们已经在数学中多次看到这种情况发生,你知道的,我的猜测是这种情况会继续发生。
Lex Fridman: 所以你的感觉是,是的,如果你专注于……
Jim Keller: 埋头苦干,缩小晶体管。
Lex Fridman: 让我们不要只是埋头苦干。
Jim Keller: 我们意识到正在运行的软件栈和计算负载,我们正在思考如何处理一个 PB 级的稀疏内存,以及 AI 程序员想要的计算类型。所以这里存在着一种对话的互动。但是当你进入计算机芯片时,你知道的,你会发现加法器、减法器和乘法器。
Lex Fridman: 所以如果你放大来看,就像你提到的 Sutton,过去几十年人工智能研究的大部分发展都来自于利用计算,以及简单的算法,等待计算能力的提高。
Jim Keller: 软件人员有一种说法,他们称之为“过早优化的问题”。所以如果你写一个很大的软件栈,如果你一开始就进行优化,那么你写的第一件事成为性能瓶颈的可能性很低。但是当你让整个系统运行起来后,你能通过优化正确的部分让它快 2 倍吗?当然可以。当你在进行优化时,你是否可以编写一个新的软件栈,这将是一个更好的选择?也许吧。现在你有了创造性的张力。但是在你编写软件的整个过程中,我们谈论的是底层的硬件变得越来越快,这又回到了摩尔定律。如果摩尔定律将继续下去,那么你的 AI 研究应该期待它会出现,然后你会做出一些稍微不同的选择。然后我们就撞墙了,什么都不会发生,从现在开始,我们只是重写算法。这似乎是过去 30 年摩尔定律消亡的失败策略。
Lex Fridman: 所以你能再详细解释一下吗?我想你已经回答了,但我只是不断地问同一个愚蠢的问题。所以你为什么认为摩尔定律不会消亡?哪些是最有前途、最令人兴奋的可能性,为什么它不会消亡?
Jim Keller: 还有 5 到 10 年。
Lex Fridman: 所以是因为继续缩小晶体管,还是因为出现了另一个 S 曲线?
Jim Keller: 完全是这样。缩小晶体管实际上是数千项创新。所以有很多……它们都是答案,而且有很多 S 曲线正在发挥作用,并被重新发明,还有新的东西。你知道的,半导体制造商和技术专家都宣布了所谓的纳米线。所以他们把一个周围有栅极的鳍片变成了一根小导线,这样你就可以更好地控制它,而且它们更小。从那里开始,有一些明显的步骤可以缩小它。所以围绕导线堆叠的冶金技术有非常明显的缩小能力,你知道的,有很多事情可以做。
Lex Fridman: 你的感觉是,我们将从缩小尺寸中获得很多创新?
Jim Keller: 是的,比如 100 倍的提升。
Lex Fridman: 这太不可思议了!
Jim Keller: 这只需要 10 到 15 年。
Lex Fridman: 你更聪明,你可能知道,但对我来说,这 100 倍的提升在计算的性质方面会带来什么,这是完全不可预测的。
Jim Keller: 人们会……是的,你熟悉贝尔定律吗?在很长一段时间里,有大型机、小型机、工作站、PC、移动设备,摩尔定律推动了更快、更小的计算机。然后我们思考摩尔定律,Rajae Godori 说每 10 倍的提升就会产生一种新的计算,标量、向量、矩阵、拓扑计算。如果你观察行业的变迁,没有大型机、小型机和 PC,然后互联网起飞了,然后我们有了移动设备,现在我们正在建设具有 1 毫秒延迟的 5G 无线网络,人们开始思考智能世界,在那里一切都知道你、识别你,就像……这些转变将是不可预测的。
Lex Fridman: 作为这种未来的关键架构师之一,你有什么感受?你不是……我们不是在谈论那些构建“愤怒的小鸟”应用程序的高层人员。
Jim Keller: 谁知道我们会成为什么样的人呢?这就是宇宙的全部意义。
Lex Fridman: 让我们坚持这一点,以及手机的注意力分散的本质。
Jim Keller: 我会坚持这一点。
Lex Fridman: 但这有多重要呢?智能手机的副作用,或者注意力分散……
Jim Keller: 哪一部分?谁知道呢?你知道的,这一切都在向哪里发展,它变化得如此之快。
Jim Keller: 我父母过去常常因为我姐姐拿着一部有线电话躲在壁橱里而责骂她,让她不要整天和朋友们聊天。现在我妻子因为我的孩子们整天在短信上和他们的朋友聊天而责骂他们。在我看来,这是一样的。
Lex Fridman: 这总是……同样的事情的回声。但是你是这个未来的硬件架构的关键人物之一,这让你有什么感受?你觉得有责任吗?你感到兴奋吗?
Jim Keller: 我们处于一个社会环境中,这个星球上有数十亿人,有数百万人从事技术工作。我觉得很幸运,你知道的,能做我现在做的事情,并获得报酬,而且人们对它感兴趣。但是有这么多事情在并行发生,这就像……这些行动是如此不可预测。如果我不在这里,其他人也会……所有这些不同事物的向量一直在发生,你知道的,有一些……我确信有一些哲学家或元哲学家,你知道的,在思考我们如何改变我们的世界。
Lex Fridman: 你不能否认这样一个事实,即这些工具,无论……这些工具正在改变我们的世界。
Jim Keller: 没错。
Lex Fridman: 你认为它正在变得更好吗?
Jim Keller: 有一些……我最近读到一篇文章,它说在大学里 GRE 分数最高的两个学科是物理学和哲学,他们都在试图回答“为什么存在任何事物”这个问题。哲学家,你知道的,更倾向于神学方面,而物理学家显然更倾向于,你知道的,物质方面。有一千亿个星系,每个星系都有一千亿颗恒星,这似乎……充其量是重复的。所以,你知道的,我们正在走向 100 亿人口,很难说这一切都是为了什么。
Lex Fridman: 这就是你要问的?
Jim Keller: 我猜,我猜我倾向于……复杂性的显著增加,我很好奇计算……就像……我们的物理世界本身就产生了数学,这是显而易见的。所以我们有 XYZ 坐标,你取一个球体,把它变大,你会得到一个表面,它……你知道的,按 r 平方增长。它通常会产生数学,数学家和物理学家多年来一直在相互交流,而计算一直是……让我们说,计算在数学方面一直是相对初级的,一直在做二元代数,而那些家伙一直在其他可能的领域里游荡。现在,计算可以让你进行足够复杂的数学计算,以至于没有人理解答案是如何产生的。
Lex Fridman: 机器学习……
Jim Keller: 机器学习,是的。过去是你得到一个数据集,你猜测一个函数,如果这个函数可以预测新的函数数据集,那么它就被认为是物理学。现在你可以获取一个大型数据集,而无需对它有任何直觉,并使用机器学习来找到一个没有函数的模式。它可以得出的结果,我不知道它们是否完全可以用数学描述。所以计算已经做了一些有趣的事情,而不仅仅是 A + B = C。
Lex Fridman: 这让人想起从基本运算……
八、 超级智能是下一个抽象层吗?(55:47 - 1:00:02)
Lex Fridman: 这让人想起从基本运算到神经网络的飞跃,这让人想起地球上的生命及其起源。你认为我们正在创造人工智能系统,从而创造我们进化的下一步吗?
Jim Keller: 我不知道,我的意思是,你知道的,宇宙中已经存在如此多的东西,很难说……
Lex Fridman: 好吧,我站在……
Jim Keller: 人类正在研究更多的抽象层和可能性吗?
Lex Fridman: 是的。
Jim Keller: 似乎是这样。这是否意味着人类不需要狗了?你知道的,不。有很多东西都是同时有趣和有用的。
Lex Fridman: 但我同意,你在人工机器中看到了越来越高的抽象层次的构建。当你观察人类时,你是否认为……
Jim Keller: 把地球上的所有生命看作是一个单一的有机体,构建这个东西,这个机器,越来越高的抽象层次。
Lex Fridman: 你认为人类是地球上这个漫长历史弧线中食物链的顶端,还是你认为我们只是处于中间的某个位置?我们是 CPU 的基本功能操作,还是 C++ 程序,还是 Python Perl 网络?
Jim Keller: 有人……人们计算过,比如大脑执行了多少次操作,大约是 10 的 18 次方,我见过这个数字很多次,以不同的方式得出的。所以你能制造一台执行 10 的 20 次方操作的计算机吗?当然可以。你认为我们会这样做吗?现在,大脑计算事物的方式是否存在某种魔力?我不知道,你知道的,我的个人经历很有趣,因为,你知道的,你认为你知道你是如何思考的,然后你有了所有这些想法,你却不知道它们是如何产生的。如果你冥想,你知道的,你能意识到的东西很有趣。所以我不知道大脑是否具有魔力。你知道的,物理证据表明没有,很多人的个人经历表明有。所以有趣的是,如果大脑具有魔力,而我们却可以用更多的计算来制造大脑,我不知道该怎么说。
Lex Fridman: 但你认为什么是魔力?这是一种涌现现象吗?
Jim Keller: 我不知道。
Lex Fridman: 泰勒会怎么说?在你看来,什么是意识?什么是……
Jim Keller: 意识?
Lex Fridman: 是的,比如,你知道的,意识、爱,这些深刻的人类事物,似乎是从我们的大脑中涌现出来的。这是我们能够在芯片中编码的东西吗?这些芯片会变得越来越快、越来越快、越来越快?
Jim Keller: 我们谈话的十分之一?
Lex Fridman: 不。
Jim Keller: 没有人真正知道。
Lex Fridman: 你能用几句话总结一下吗?
Jim Keller: 很多人观察到,有机体在许多不同的层面上运作。如果你有两个神经元,有人说你会有一个感觉神经元和一个运动神经元。所以我们朝着某些事物移动,远离某些事物,我们有身体的完整性和安全性,或者没有。然后如果你观察动物王国,你可以看到大脑稍微复杂一些,在某个时刻,有一个计划系统,然后有一个情绪系统,它对安全感到高兴,或者对受到威胁感到不高兴。然后我们的大脑有大量的结构,你知道的,比如计划、运动、思考、感觉、驱动和情绪。我们似乎有多层思考系统,我们还有一个梦境系统,没有人完全理解,我觉得这非常滑稽。你可以认为这些系统是更加独立的,你可以观察……你知道的,你自己的不同部分可以观察。我不知道哪个是神奇的,我不知道哪个不是计算的。
Lex Fridman: 所以有可能一切都是计算?
Jim Keller: 可能是的。
Lex Fridman: 计算有极限吗?
Jim Keller: 我不认为有。
九、 宇宙是一个计算机吗?(1:00:02 - 1:03:00)
Lex Fridman: 你认为宇宙是一个计算机吗?
Jim Keller: 我认为它似乎是,但它是一种奇怪的计算机。因为如果它是一个计算机,对吧?当他们计算描述量子效应需要多少计算时,这个数字高得令人难以置信。所以如果它是一个计算机,你会用更容易计算的东西来构建它,对吧?这是一个奇怪的系统。但是模拟的人指出了规则有点有趣,比如当你仔细观察时,它是不确定的,光速表示你只能看到这么远,事物不能同时发生,除了奇怪的纠缠问题,它们似乎……规则都有点奇怪。有人说物理学就像有 50 个方程和 50 个变量来定义 50 个变量,你知道的,这……你知道的,物理学本身几千年来一直是一团糟。当你到达一切的角落时,这似乎很奇怪,你知道的,它要么是不可计算的,要么是不可定义的,要么是不确定的。这几乎就像模拟的设计者试图阻止我们完美地理解它。但是需要计算的事物需要如此多的计算,以至于我们认为宇宙是一台计算机的想法是荒谬的,因为它的每一个小部分都需要宇宙中所有的计算来计算出来。这是一个奇怪的……
Lex Fridman: 运行模拟的计算机,根据定义,它具有无限的计算能力。
Jim Keller: 不是无限的。
Lex Fridman: 哦,你是说如果宇宙是无限的。
Jim Keller: 我们宇宙的一小块似乎需要无限的计算。
Lex Fridman: 哇,只是一小块。
Jim Keller: 哇,一个非常大的数字。计算这个小小的点,需要本地的一年乘以一……
Lex Fridman: 光年乘以光年……
Jim Keller: 接近于无限。所以如果它是一个计算机,那它是一个了不起的计算机。
Lex Fridman: 我知道,这是一个奇怪的描述。
Jim Keller: 因为当你仔细观察时,模拟的描述似乎会失效,但宇宙中的规则似乎暗示了一些有点任意的东西。
Lex Fridman: 整个……宇宙……
Jim Keller: 整个东西,物理定律,你知道的,它就像……它是如何变成这样的?但是很多人都在谈论这个,你知道的,就像我说的,两个最聪明的人群正在研究同一个问题的不同方面,他们都是彻底的失败者。所以这很酷。
Lex Fridman: 他们最终可能会成功。
Jim Keller: 两千年后,趋势并不好。
Lex Fridman: 在宇宙的历史长河中,两千年算不了什么。
Jim Keller: 我们还有时间,但接下来的 1000 年看起来也不太好。
Lex Fridman: 每个人在每个阶段都这么说。但是正如你刚才描述的,摩尔定律并没有消亡,技术的指数级增长,未来似乎相当不可思议。
Jim Keller: 这肯定会很有趣。
Lex Fridman: 没错。
十、 Ray Kurzweil 和技术的指数级改进 (1:03:00 - 1:04:33)
Lex Fridman: 你对 Ray Kurzweil 的观点有什么看法,他认为技术的指数级改进将无限期地持续下去?你是否这样看待摩尔定律?你是否更广泛地看待摩尔定律,因为所有种类的技术都有一种将 S 曲线叠加在一起的方式,它将呈指数级增长,然后我们将看到各种各样的……
Jim Keller: 一百万的指数是多少?这是一个相当惊人的数字,这只是本地的一小块硅。现在想象一下,你决定让 1000 吨硅在一台计算机中协作,密度提高一百万倍。现在,你知道的,你在谈论……我不知道,比我们现在已经快得令人难以置信的计算机还要快 10 的 20 次方倍的计算能力。没有人知道这意味着什么,你知道的,科幻小说里说的“计算机元素”,就像一个本地文明把附近的恒星变成一台计算机。我不……
Lex Fridman: 这是真的吗?
Jim Keller: 但是,即使你缩小晶体管,这也只是涟漪效应的一个维度。但是人们倾向于从成本的角度来考虑计算机,所以计算机是由硅和少量的金属以及其他一些东西制成的。所有这些东西都不值钱,有很多沙子,你可以把海滩和一点海水变成计算机。所以所有的成本都在于制造它的设备。
十一、 Elon Musk 和 Tesla 自动驾驶 (1:04:33 - 1:20:51)
Jim Keller: 一旦你弄清楚了如何制造设备,成本的趋势就趋向于零。Elon 说,首先你要弄清楚你想要原子的什么构型,然后是如何把它们放在那里。
Lex Fridman: 对。
Jim Keller: 因为,你知道的,他的伟大洞察力在于,人们是“如何”受限的。我有这个东西,我知道它是如何工作的,然后对它进行一些小的调整就会产生一些东西,而不是“我真正想要什么,然后弄清楚如何构建它”。这是一种非常不同的思维方式,几乎没有人拥有。
Lex Fridman: 显然。关于这个话题,我想问一下,你是自动驾驶系统开发的早期关键人物之一,至少在硬件方面。Elon Musk 认为,如果你只看这个问题,自动驾驶和车辆自主性可以遵循我们刚才谈到的那种指数级改进。关于“如何”的问题,没有理由说它不能……你对车辆自主性这个特定领域有什么看法?你是其中的一员,还有 Elon Musk 和 Tesla 的愿景。
Jim Keller: 构建自动驾驶所需的计算机很简单,你可以争论它是否需要快 2 倍、5 倍或 10 倍,但这只是短期内的时间或价格问题。所以这不是什么大问题,你不必特别聪明就能开车。所以这不是一个超级难题,我的意思是,安全的最大问题是注意力,而计算机非常擅长注意力,而不是技能。
Lex Fridman: 让我在一点上反驳一下,你说的每一点都是正确的,但是我们作为人类倾向于……
Jim Keller: 认为这是理所当然的。
Lex Fridman: 我们的视觉系统是多么不可思议。所以你可以用 20/50 的视力开车,你可以训练一个神经网络从视频和数据中提取任何物体的距离和任何表面的形状,但这真的很简单……不简单,我看……
Jim Keller: 这是一个简单的数据问题。
Lex Fridman: 不,不简单。因为它不仅仅是检测物体,它还在理解场景,并且能够以一种不会出错的方式做到这一点。人类视觉系统和整个大脑的美妙之处在于,我们能够填补空白。这不仅仅是完美地检测汽车,它还在推断被遮挡的汽车,它在尝试……它在理解……我认为这主要是一个更大的问题。
Jim Keller: 你认为是什么数据?你知道的,有了计算,随着计算的进步,随着收集的进步……
Jim Keller: 当你开车时,有人超车,你的大脑会猜测他们为什么这么做,你知道的,他们是一个坏人,他们分心了,他们很笨,你知道的,你可以听听你自己的想法。所以,你知道的,如果你认为这种叙述对于成功驾驶汽车很重要,那么当前的自动驾驶系统就做不到。但是如果汽车是带有轨迹和概率性速度和方向变化的弹道物体,并且道路是固定的,顺便说一句,它们不会动态变化,你可以非常彻底地绘制世界地图,你可以非常彻底地放置每一个物体,你可以非常彻底地计算物体的轨迹。但是你说的关于“非常彻底”的每一件事都有不同的难度。所以你可以说,在某种程度上,计算机自主系统会比人类差的地方好得多,比如它会更善于……它们会一直记得路上有一个坑洞,而人类总是会忘记,它们会记得这组道路上有这些奇怪的线条,计算机一旦弄清楚了,特别是如果它们得到更新。所以如果有人改变了一个给定的……就像那个……
Jim Keller: Akita 机器人之类的东西,有人说要最大化“给定”。所以让机器人捡起这个瓶盖很容易,你在顶部放一个红点,因为这样你就不必弄清楚……你知道的,如果你想用它做某件事,你知道的,最大化“给定”是关键。自主系统正在愉快地最大化“给定”。就像人类一样,当你开车去一个新地方时,你会记住它,因为你一直在处理它。而在你第 50 次开车去上班后,你到了工作地点却不知道自己是怎么到那里的。
Lex Fridman: 对。
Jim Keller: 你处于自动驾驶模式。
Lex Fridman: 对。
Jim Keller: 自动驾驶汽车总是处于自动驾驶模式,但汽车没有关于为什么它们被超车或为什么它们堵车的理论。
Lex Fridman: 所以它们永远不会停止注意?
Jim Keller: 所以我倾向于相信……
Lex Fridman: 你确实有……理论,关于其他人的心理模型,特别是行人、骑自行车的人,还有其他车辆。你说的每一件事都……
Jim Keller: 实际上对驾驶至关重要。
Jim Keller: 我认为驾驶比人们意识到的要复杂得多。
Lex Fridman: 所以……稍微反驳一下。
Jim Keller: 切入车流,对。
Lex Fridman: 是的,你不能只是等待一个空隙。
Jim Keller: 你必须有一定的侵略性。
Jim Keller: 你会惊讶地发现,计算这个有多简单。
Lex Fridman: 也许在那一点上,但有一个……
Jim Keller: 我可能会要求你反驳,我会感到惊讶。
Lex Fridman: 你知道吗?
Jim Keller: 我会说我的立场,我会感到非常惊讶。但我认为你可能会惊讶于它有多复杂。
Jim Keller: 我告诉人们,进步在短期内会令人失望,但在长期内会令人惊喜。
Lex Fridman: 这是非常可能的。
Jim Keller: 我猜想 10 年后,它会被认为是理所当然的。
Lex Fridman: 但你现在可能是对的。
Jim Keller: 看起来它将是一个没有人关心的 50 美元的解决方案,就像 GPS,哇,GPS 是……我们在太空中有人造卫星告诉你你的位置,这在当时是一件大事,现在一切都有 GPS。
Lex Fridman: 我的意思是,是的,这是真的。但我确实认为涉及人类行为的系统比我们想象的要复杂。所以我们可以用技术做一些不可思议的事情,这些事情不涉及……
Jim Keller: 但是当你观察……人类并不比人们想象的复杂。
Lex Fridman: 也许我……
Jim Keller: 站在……从大量的模式中……然后不断地这样做。
Lex Fridman: 但我不能相信你,因为你是一个人。
Jim Keller: 这是……人类会说的话。
Lex Fridman: 但我希望……你提出的观点是,即使……无论谁是对的,即使……我希望……
Jim Keller: 有很多事情人类不擅长,而机器肯定擅长,就像你说的,注意力和诸如此类的事情。
Jim Keller: 它们会好得多,以至于自主性的整体安全状况将……显然汽车会更安全,即使它们没有那么好。
Jim Keller: 我非常相信安全。我的意思是,已经有……现在的安全系统,比如巡航控制系统,它不允许你撞到人,还有车道保持系统。有很多功能,你只需看看事故的帕累托图,就可以消除 80% 的事故,这非常可行。
Lex Fridman: 只是……在自动驾驶团队和那里的努力中,似乎媒体和公众对安全的审查非常严格,压力……但在自动驾驶汽车之前,你的……作为一个在那里工作的人,在硬件方面,并试图构建一个安全的车辆系统等等,你对这种压力有什么感觉?这是不公平的吗?这是对新技术的预期吗?
Jim Keller: 这似乎是合理的。我有兴趣……我和美国和欧洲的监管机构都谈过,我担心监管机构会在规则中写入技术解决方案,比如现代的刹车系统暗示着液压刹车。所以如果你阅读法规,为了满足刹车法规的字面意思,它必须是液压的。监管机构说他们对使用场景感兴趣,比如正面碰撞、偏置碰撞、不要撞到行人、不要撞到人、不要偏离道路、不要闯红灯或停车灯。他们非常关注场景,你知道的,他们有所有关于哪些场景导致最多人受伤或死亡的数据。在大多数情况下,这些对话都是关于“采取下一步行动的正确做法是什么?”
Jim Keller: 现在,Elon 也非常关注自动驾驶的好处,或者说解放人们的时间和注意力,以及安全。我认为这也是一件有趣的事情。但是,你知道的,构建一个安全的自主系统,并且比人类更安全,似乎……目标是比人类安全 10 倍,把标准定为比人类更安全,并审查事故,这在哲学上似乎是正确的。所以我认为这是一件好事。
Lex Fridman: 与你在 AMD、Apple 和英特尔所做的有什么不同?在自动驾驶芯片设计和硬件设计方面,在汽车领域构建这种专门的计算系统,有哪些有趣或具有挑战性的方面?
Jim Keller: 构建汽车计算机有两个诀窍。一个是软件团队,机器学习团队正在开发快速变化的算法。所以当你在构建加速器时,你有这种担忧或直觉,算法会发生足够大的变化,以至于加速器会变成错误的加速器。还有一个通用的问题,如果你构建一个非常好的通用计算机,它的性能是 1,然后 GPU 人员将提供大约 5 倍的性能,而使用相同数量的硅,因为你被给予了并行性,而不是发现并行性。然后专门的加速器可以在 GPU 的基础上再提高 2 到 5 倍的性能,因为你说“我知道数学运算总是 8 位整数和 32 位累加器,而且运算是数学可能性的子集”。所以虽然 AI 加速器声称比 GPU 具有性能优势,因为在狭窄的数学空间中,你正在针对算法进行优化,但你仍然试图使其可编程。但是 AI 领域变化非常快,所以这里有一个……你知道的,有一个小的创造性的张力,我想要专业化带来的加速,又不想过度专业化,以至于新的算法会变得更加有效,以至于你最好使用 GPU。所以在构建适用于汽车等应用的计算机时存在这种张力,有各种各样的传感器输入、安全处理器和一堆其他东西。Elon 的目标之一是让它超级便宜,以便每辆车都能得到一个自动驾驶计算机。所以一些最近的初创公司,你看,他们在后备箱里放了一个服务器,因为他们说“我要构建这个取代司机的自动驾驶计算机”,所以他们的成本预算是 1 万或 2 万美元。而 Elon 的限制是“我要把它放在每一辆车里,不管人们是否购买自动驾驶”。所以他心中的成本限制是很高的,为了达到这个目标,你
Jim Keller: 所以他心中的成本限制是很高的。为了达到这个目标,你必须考虑系统设计,这很复杂,也很有趣。这就像是工匠的工作,就像小提琴制作者。你可以说斯特拉迪瓦里琴是一件不可思议的乐器,音乐家们都很了不起,但是制作小提琴的人,你知道的,挑选木材,打磨它,然后切割它,你知道的,把它粘在一起,你知道的,他等待合适的日子,这样当你给它上漆时就不会……你知道的,做一些愚蠢的事情。
Lex Fridman: 对。
Jim Keller: 这是工匠的工作。你可能是一个天才工匠,因为你有最好的技术,并且你发现了一种新技术。但大多数工程师都是工匠的工作,人类真的很喜欢这样做,你知道的,聪明的人……
Lex Fridman: 哦,不,每个人……
Jim Keller: 哦,我知道,我曾经……我在大学时挖过沟渠,我干得非常出色。
Lex Fridman: 令人满意?
Jim Keller: 是的,所以挖沟渠也是一种手艺。
Lex Fridman: 当然。
Jim Keller: 所以有一种说法叫做“复杂的掌握行为”。所以当你学习某件事时,这很有趣,因为你在学习。当你做一些死记硬背、简单的事情时,它并不那么令人满意。但是如果你必须做的步骤很复杂,而且你擅长它们,那么做这些步骤就会令人满意。然后如果你对这一切都很感兴趣,那么在你做的过程中,你有时会学到新的东西,你可以提高你的水平。但是手艺工作很好,工程师……工程足够复杂,你必须学习很多技能,然后你做的很多事情都是工匠的工作,这很有趣。
Lex Fridman: 自动驾驶,构建一个资源非常受限的计算机,这台计算机必须足够便宜,才能装进每一辆车里,这基本上可以归结为工匠的工作吗?还是说……
Jim Keller: 这是……
Lex Fridman: 天才?
Jim Keller: 这需要深思熟虑的决策,需要解决问题,需要权衡。你需要 10 个摄像头端口还是 8 个?你知道的,你是为当前的汽车还是下一代汽车构建的?你知道的,你如何处理安全问题?你知道的,有很多细节,但这很有趣。但这不像“我在构建一种新型的……它们都是联网的,它有一种新的数学和一种新的计算机”。你知道的,这……这其中有更多的发明,但是……
Lex Fridman: 对。
Jim Keller: 一旦你选择了架构,你向里面看,你会看到什么?加法器、乘法器和存储器,你知道的,都是基本的东西。所以计算机总是……这是一组奇怪的抽象层的思想和思维,而实际操作则是晶体管、导线和非常基本的东西。这是一个有趣的现象,顺便说一下,就像工厂工作一样,很多人认为工厂工作是流水线上的工作。我在装配线上待过,喜欢这份工作的人……这是一份非常棒的工作。把汽车组装在一起很难,汽车在移动,零件也在移动,有时零件会损坏,你必须协调把所有东西组装在一起,人们很擅长。他们很擅长,我记得有一天我去上班,生产线因为某种原因停工了,然后一些坐在周围的人非常沮丧,因为他们重新组织了一堆东西,他们本来要创造当天生产汽车数量的新纪录,他们都干劲十足地想去做。这些都是大块头的家伙,你知道的,但是他们做的事情很复杂,你做不到。
Lex Fridman: 是的,我的意思是……
Jim Keller: 过一段时间你就能做到了,但你必须逐步提升,因为,你知道的,把……在一条移动的装配线上把装饰条安装到汽车上,它必须在一分半钟内连接到 25 个地方,这是非常复杂的,而人类可以做到,而且做得非常好。顺便说一句,我认为这比开车难,组装……在工厂里工作……
Lex Fridman: 聪明人可以有不同的意见。
Jim Keller: 是的,我认为开车……
受访者 Lex Fridman: 开车会让你进工厂,有些事情会……你不是……对我们人类来说,开车很容易。
Jim Keller: 我是说,制造一台能开车的机器并不容易。
Lex Fridman: 好的,好的。
Jim Keller: 开车对人类来说很容易,因为我们已经进化了数十亿年……
Lex Fridman: 开车。
Jim Keller: 是的,不,只是……
Lex Fridman: 汽车非常酷。
Jim Keller: 现在你加入了互联网上其他人的行列,嘲笑我。
Lex Fridman: 好的,好的。是的,我对你的……你知道的,你的人类学很感兴趣。
Jim Keller: 是的,我们必须深入研究一下,那里有一些不准确的地方。
Lex Fridman: 是的,好的。但总的来说……
十二、 从与 Elon Musk 共事中学到的经验 (1:20:51 - 1:28:33)
Lex Fridman: 但总的来说,你学到了什么?关于激情、工匠精神、张力、混乱,你知道的,所有这些……或者说你从与 Elon Musk 共事中学到了什么?在 Tesla 工作,这是一个以混乱、创新、工匠精神而闻名的地方。
Jim Keller: 我真的很喜欢他的思维方式,你认为你对某件事的第一性原理有所了解,然后你和 Elon 谈论它,你会发现你还没有触及表面。你知道的,他深信无论你做什么都是一个局部最大值。我有一个朋友,他发明了一种更好的电动机,它比我们当时使用的电动机好得多。有一天他过来,他说:“你知道的,我有点失望,因为,你知道的,这真的很棒,而你似乎并没有那么印象深刻”。我说:“你知道的,当超级智能的外星人来的时候,他们会来找你吗?‘那个制造电动机的家伙在哪里?’可能不会,你知道的,就像……但是做有趣的工作,既有创新性,又是当前工作的工匠精神,这真的很令人满意,这很好,这很酷。然后 Elon 擅长拆解一切,比如‘什么是深层的第一性原理?不,什么是……真的……你知道的,你知道的……那种不受假设和约束地看待事物的能力非常了不起’。你知道的,我们用同样的汽车制造火箭飞船,你知道的,一切都……这非常有趣。他也参与其中,比如当 SpaceX 的火箭第一次在 Tesla 着陆时,我们在大房间里放了一个视频投影仪,大约 500 人下来观看了,当它们着陆时,每个人都欢呼起来,有些人哭了,这太酷了。
Lex Fridman: 好吧,你是怎么做到的?
Jim Keller: 这非常困难。然后人们会说,“这很混乱”。真的吗?为了摆脱你所有的假设,你认为这不会是非常痛苦的吗?Elon 很强硬吗?可能吧。人们回顾这段经历时会说,“我真的很高兴我有过那样的经历,去拆解那么多层的假设”,有时非常有趣,有时很痛苦。
Lex Fridman: 所以这在情感上和智力上都可能是痛苦的,整个过程,剥离假设?
Jim Keller: 是的,我想你 99% 的思维过程都是在保护你的自我概念,而其中 98% 是错误的。
Lex Fridman: 是的。
Jim Keller: 现在你回到了那有用的 1%,现在你开放了,你有能力去做一些不同的事情。我不知道我的数学是否正确,可能是 99.9%,但 85% 已经足够难了。
Lex Fridman: 是的。
Jim Keller: 在很长一段时间里,我一直怀疑你可以……你可以思考得更好,你可以思考得更清晰,你可以把事情拆解开来,有很多这样的例子,人们做到了这一点。所以 Elon 是一个例子,巴菲特是一个例子,他说:“你知道的,如果……我很乐意和他交谈”。
Lex Fridman: 当然,我学到了很多东西。
Jim Keller: 这是另一件事,就像……我说话……就像……我读书,人们会想,“哦,你读书”。不,我 55 年来每周读几本书。
Lex Fridman: 好吧。
Jim Keller: 也许 50 年,因为我……你知道的,学会读书……
Jim Keller: 事实证明,当人们写书时,他们通常会花费 20 年的时间,充满激情地做某件事,然后把它浓缩成 200 页,这很有趣。然后你可以上网,找出谁写了最好的书,谁……你知道的,这有点……所以这里有一个疯狂的选择过程,然后你可以阅读它,在大多数情况下都能理解它,然后你可以应用它。比如我去了一家公司,我想我以前没有做过太多的管理工作,所以我读了 20 本管理书籍,然后我开始和他们交谈。基本上,与所有到处乱跑的副总裁相比,我比其他任何人都多读了 19 本管理书籍。
Lex Fridman: 这有那么难吗?
Jim Keller: 是的,有一半的东西都奏效了。
Lex Fridman: 第一次甚至都不是火箭科学。
Jim Keller: 但其核心是质疑假设。
Lex Fridman: 好的,进入……
Jim Keller: 思考,第一性原理思考。
Lex Fridman: 观察现实情况,并利用这些知识,应用这些知识。
Jim Keller: 所以,是的。我会说我的大脑有这样的想法,你可以质疑第一假设,但我可以一连几天都忘记这一点,你必须……你知道的,循环回到数据观察,因为它是……因为……
Lex Fridman: 部分……
Jim Keller: 很难把它放在首位,因为,你知道的,你在很多层面上运作,你知道的,完成这件事是优先事项,或者,你知道的,快乐是优先事项,或者,你知道的,闲逛是优先事项,就像……你如何度过一生,这很复杂。然后你会想起,“哦,是的,我真的可以……从第一性原理思考这么多”,这很累人,你知道的,你做一会儿,这很酷。
Lex Fridman: 所以,作为最后一个问题,你对大局的感觉,从第一性原理来看,你认为……你已经回答过了,但你认为自动驾驶是我们在几年内可以解决的问题吗?所以 1、2、3、5、10 年,而不是一个世纪?
Jim Keller: 绝对可以。
Lex Fridman: 再详细说明一下,信心从何而来?是问题的基本原理,构建硬件和软件的基本原理,作为一个计算问题?
Jim Keller: 理解弹道、规则、地形,这似乎是可以解决的。我的意思是,你可以看到,你知道的,就像语音识别一样,很长一段时间以来,人们都在做,你知道的,频域分析和各种各样的东西,而这根本不起作用。然后他们对它进行了深度学习,效果非常好,它经历了多次迭代,你知道的,时间……
Jim Keller: 驾驶正在超越频率分析的阶段,你知道的,使用雷达,不要撞到东西,数据收集正在增加,计算能力正在提高,算法理解也在提高,还有一大堆问题正在得到解决,就像……数据方面非常强大。但我不同意你和 Elon 的观点,我要再次告诉你,当你把人类加入其中时,它就不再是一个弹道问题了,它变得更加复杂。
Jim Keller: 但我很可能……汽车几乎没有阻尼,它们已经准备好改变……转向,转向系统与计算机相比非常慢,加速度……加速度非常慢。
Lex Fridman: 在一定的时间尺度上,在弹道的时间尺度上,但人类的行为,我不知道。
Jim Keller: 是的,我不应该说……人类的速度非常慢,奇怪的是,我们的运作比现实慢半秒,也没有人真正理解这一点,这很有趣。
Lex Fridman: 是的,是的。
Jim Keller: 所以我很可能会感到惊讶,我认为随着各个方面的改进速度,包括计算、软件和硬件,到处都会有惊喜。
十三、 来自人工智能的存在性威胁 (1:28:33 - 1:32:38)
Lex Fridman: 说到不愉快的惊喜,很多人担心人工智能发展中的奇点。请原谅我提出这样的问题,你知道的,当人工智能呈指数级增长并达到超人水平的通用智能时,你知道的,在那之后就没有回头路了。你是否也担心人工智能的存在性威胁,担心计算机会变得具有超人水平的智能?
Jim Keller: 不,不是真的。你知道的,我们已经有一个非常……
Jim Keller: 阶层化的社会,然后如果你看看整个动物王国的能力、才能和兴趣,你知道的,聪明的人有他们的位置,你知道的,普通人有他们的位置,工匠有他们的位置,你知道的,动物有它们的位置。我猜想,对于那些……你知道的,截然不同的领域,比如整个……某些东西比我们聪明 10 倍,并且想把我们都干掉,因为……我们喜欢在星巴克喝咖啡,这似乎不太可能。是否存在一个存在性的问题,即你如何生活在一个有比你聪明得多的东西存在的世界里,而你把你的自尊建立在成为当地最聪明的人的基础上?嗯,有 0.1% 的人会这么想,因为其余的人从出生起就一直在应对这个问题。所以……
Jim Keller: 可能有趣的体验的广度非常大,你知道的,超级智能似乎是有可能的,尽管我们仍然不知道我们是否具有魔力,但我怀疑我们没有。这似乎有可能创造出对我们来说有趣的、对它来说也有趣的、对任何事物来说都……它为什么会有兴趣争夺一平方英尺的土地,或者,你知道的,无论如何,这并不明显。你知道的,通常的恐惧都是关于……
Lex Fridman: 所以你不认为它会继承人类本性中一些更黑暗的方面?
Jim Keller: 这取决于你如何看待现实的构建。所以,无论出于何种原因,人类都是……
Jim Keller: 这是一种创造性的张力,与好的和坏的力量相对立,有很多……
Jim Keller: 关于这一点的哲学理解,对吧?我不知道为什么情况会有所不同。
Lex Fridman: 所以你认为邪恶是必要的……为了善?
Jim Keller: 这种张力……我不知道邪恶,但是……我们生活在一个竞争的世界里,你的善就是别人的……你知道的,邪恶。你知道的,有恶毒的部分,但这似乎是自我限制的,尽管偶尔会……这非常可怕。但是,是的,看……
Jim Keller: 存在着关于思想的争论,有些人有不同的信仰,而争论本身就是一个过程。所以……
Lex Fridman: 达到某种……
Jim Keller: 是的,我不会……继续。只是你……
Lex Fridman: 但你不认为整个过程会以一种痛苦的方式把人类抛在后面?
Jim Keller: 在情感上是痛苦的,是的,对于那 0.1% 的人来说……
Lex Fridman: 他们会……为什么这对很大一部分人来说现在不痛苦呢?
Jim Keller: 确实如此,我的意思是,社会上确实存在很多关于 1% 的人的压力,以及关于……你知道的,每个人在生活中都有很多关于他们觉得满意的事情的压力,你知道的,“认识你自己”似乎是正确的格言,追求一些让你的生活有意义的事情似乎是正确的。在这方面有很多途径,就像……在每一个层面上都有很多未开发的领域。
Jim Keller: 你知道的,我有点……我的侄子称我为“厌倦的乐观主义者”,你知道的。
十四、 幸福和生命的意义 (1:32:38 - 1:34:41)
Jim Keller: 所以这个标签中有一种美丽的张力。但是如果你回顾你的一生,并且可以重温一个时刻,一组时刻,因为那是你一生中最快乐的时光,除了家庭之外,那会是什么?
Jim Keller: 我不想重温任何时刻。
Lex Fridman: 我喜欢这样。
Jim Keller: 我喜欢那种情况,你有一些乐观,然后是未知的焦虑。
Lex Fridman: 所以你喜欢未知?它的神秘?
Jim Keller: 我不知道是不是神秘,它肯定会让你的血液沸腾。
Lex Fridman: 你认为这一切的意义是什么?在这个暗淡蓝点上的生命?
Jim Keller: 它似乎……
Jim Keller: 就是它所做的,就像宇宙……
Jim Keller: 无论出于何种原因,创造了原子,原子创造了我们,我们做事,我们弄清楚事情,我们探索事物,这就是它的本质。
Lex Fridman: 它不仅仅是……是的,它是。
Jim Keller: 是的。
Lex Fridman: Jim,我认为没有比这更好的结束的地方了。这是一份巨大的荣誉,而且……
Jim Keller: 非常有趣。
Lex Fridman: 非常感谢你今天和我交谈。
Jim Keller: 好的,很棒。
Lex Fridman: 感谢大家收听这次对话,感谢我们的赞助商 Cash App。下载它,使用代码 Lex podcast,你将获得 10 美元,10 美元将捐给 First,这是一个 STEM 教育非营利组织,激励着成千上万的年轻人成为未来的领导者和创新者。如果你喜欢这个播客,请在 YouTube 上订阅,在 Apple podcast 上给它五颗星,在 Spotify 上关注,在 Patreon 上支持,或者直接在 Twitter 上与我联系。现在,让我留给你们戈登·摩尔的一句名言:“如果你尝试的每件事都能成功,说明你还不够努力。”感谢大家的收听,希望下次再见。