← 返回列表
Lex Fridman Podcast播客2 Jun 2023来源: lexfridman.com主持: Lex Fridman

#381 – Chris Lattner: Future of Programming and AI

一句话导读

这篇访谈说的是编程语言和AI基础设施的未来。嘉宾Chris Lattner(Swift语言和LLVM的创始人)认为,AI发展的最大瓶颈不是模型本身,而是底层软件太乱、太慢。他创立的Mojo语言,是Python的“升级版”,能让Python代码跑得像C语言一样快,在特定任务上甚至快了三万倍。他重点提了三个东西:Mojo语言(他正在做的,速度极快)、Modular平台(他创立的公司,用来统一AI开发工具)、以及NVIDIA的CUDA(他认为是造成碎片化的原因之一,Modular想做它的替代品)。

AI 摘要AI 生成 · 可能有误 · 以原文为准

Chris Lattner在Lex Fridman Podcast中讨论了编程与AI的未来,核心观点是Mojo语言作为Python的超集,兼具Python的易用性和C/C++的性能,在机器学习场景下已实现超过30,000倍的速度提升。他回顾了在Apple(创建Swift、LLVM、Clang)、Google(贡献TensorFlow和TPU)、Tesla(担任Autopilot软件副总裁)及Modular AI(联合创建全栈AI基础设施)的关键经历。重要结论是Mojo和Modular平台旨在解决分布式训练、推理和部署的硬件兼容性问题,推动AI基础设施的全面革新。

全文约 22 分钟 · 14 个章节
深度解读

好的,这是根据您提供的铁律和原文内容,对 Lex Fridman 播客第 381 期(Chris Lattner 访谈)的分析。

本期速览

嘉宾身份与背景:Chris Lattner,传奇软件与硬件工程师,曾领导 Apple 的 Swift、LLVM、Clang 项目,在 Google 贡献了 TensorFlow 和 TPU,在 Tesla 担任 Autopilot 软件副总裁,现为 Modular AI 联合创始人,正致力于打造全新的 AI 基础设施。

本期主线:Lattner 深入探讨了编程语言的演进、AI 基础设施的瓶颈,以及他创立的 Mojo 语言和 Modular 平台如何试图解决当前 AI 开发中“碎片化”与“性能墙”的核心矛盾。

全片最有分量的一个判断Chris Lattner 认为,AI 领域最大的瓶颈不是模型架构,而是基础设施的碎片化和性能低下;Mojo 语言作为 Python 的超集,通过将 Python 的易用性与 C/C++ 的性能结合,在特定机器学习任务上已实现超过 30,000 倍的速度提升,这并非渐进式改进,而是对现有 AI 开发范式的根本性重构。

主题小节

1. 从 Swift 到 Mojo:编程语言设计的“第二次机会”

Chris Lattner 认为,Mojo 是他从过去 20 年编程语言设计(尤其是 Swift 和 LLVM)中吸取教训后的“集大成者”,旨在解决 Python 在 AI 领域的根本性性能瓶颈。

  • 历史脉络:Lattner 在 Apple 主导了 Swift 语言的创建,其设计哲学强调安全、现代和易用。在 Google 和 Tesla 的工作让他深刻体会到,Python 虽然因其易用性成为 AI 领域的“事实标准”,但其动态类型和全局解释器锁(GIL)等特性,使其在性能密集型任务(如大规模矩阵运算、推理部署)上存在“天花板”。他形容 Python 的生态是“一个由 C/C++ 库(如 NumPy, PyTorch)拼凑起来的补丁系统”,开发者无法触及底层硬件。
  • 机制拆解:Mojo 被设计为 Python 的超集,这意味着所有现有的 Python 代码理论上都可以在 Mojo 中运行。其核心创新在于引入了 MLIR(Multi-Level Intermediate Representation),这是 Lattner 在 Google 期间参与创建的一个编译器基础设施。MLIR 允许 Mojo 将 Python 代码编译成针对特定硬件(CPU、GPU、TPU)高度优化的机器码,从而获得接近 C/C++ 甚至 Fortran 的性能。Lattner 强调,Mojo 不是“另一个 Python 替代品”,而是“让 Python 变得更快”的解决方案。
  • 数据链:在演示中,Mojo 对一个简单的矩阵乘法运算进行优化,实现了超过 30,000 倍的速度提升。这个数字并非实验室数据,而是通过利用 MLIR 自动生成针对特定硬件(如 AVX-512 指令集)的向量化代码实现的。Lattner 指出,这种优化在传统 Python 中需要开发者手动编写 C 扩展,而 Mojo 将其自动化。
2. AI 基础设施的“碎片化”困境:Modular 的解法

Lattner 判断,当前 AI 开发的核心痛点在于“碎片化”——模型、框架、硬件三者之间缺乏统一的抽象层,导致开发效率低下、部署成本高昂。Modular 平台的目标是提供一个全栈解决方案,统一这个碎片化的世界。

  • 机制拆解:Lattner 将 AI 基础设施比作“一个由不同团队用不同语言写的、互相不兼容的乐高积木”。一个典型的 AI 项目可能涉及:用 Python 和 PyTorch 训练模型,用 NVIDIA CUDA 优化 GPU 计算,用 TensorRT 进行推理优化,再用 C++ 或 Rust 部署到生产环境。每个环节都有独立的工具链和优化技巧,团队需要掌握多种技能,且优化成果难以在不同硬件之间迁移。
  • 供需与竞争格局:Modular 平台的核心是提供一个 统一的运行时和编译器栈。它允许开发者用 Mojo(或 Python)编写模型,然后由 Modular 的编译器自动将其优化并部署到任何目标硬件上(无论是 NVIDIA、AMD、Intel 还是 Apple Silicon)。这直接挑战了 NVIDIA 通过 CUDA 建立的硬件锁定效应。Lattner 认为,市场需要一种“开放、可移植、高性能”的替代方案,而 Modular 正是为此而生。
  • 推演与不确定性:Lattner 承认,Modular 面临巨大的挑战,包括与 NVIDIA 成熟的 CUDA 生态竞争、说服开发者采用新的工具链,以及确保其平台在各类硬件上的性能一致性。他提出的证伪条件是:“如果 5 年后,AI 开发者仍然需要为不同的硬件编写不同的优化代码,那么 Modular 的愿景就失败了。”
3. 对 AI 未来的判断:从“大模型”到“智能系统”

Lattner 认为,AI 的未来不仅在于更大的模型,更在于构建能够可靠、高效地运行在真实世界中的“智能系统”,而这需要从硬件到软件的全栈创新。

  • 观点立论:Lattner 对当前“堆叠更大模型”的趋势持谨慎态度。他指出,虽然参数量的增长带来了能力提升,但训练和推理的成本也在指数级增长。他认为,真正的突破将来自于如何让这些模型更高效地运行,以及如何将它们集成到复杂的系统中(例如,自动驾驶汽车、机器人、个性化医疗)。
  • 历史类比:他将 AI 的发展与个人电脑的演进类比。早期 PC 的硬件和软件是高度碎片化的,直到 IBM PC 标准、Windows 操作系统和 x86 架构的出现,才统一了市场,催生了庞大的软件生态。Lattner 认为,AI 正处在类似的“前标准化”阶段,而 Mojo 和 Modular 的目标就是成为 AI 领域的“Windows + x86”,提供一个统一的、高性能的基础平台。
  • 独到判断:Lattner 提出了一个反直觉的观点:“未来最成功的 AI 公司,可能不是发明了最新模型的公司,而是那个让模型运行成本降低 100 倍的公司。” 他认为,基础设施层面的优化,其影响力将远超模型架构层面的创新。他引用自己在 Tesla 的经历,指出 Autopilot 的成功不仅依赖于先进的神经网络,更依赖于一个高度优化的、能够在车载嵌入式系统上实时运行的推理引擎。

提及的标的

标的 嘉宾态度 关键数据
Mojo 语言 强烈看好,核心产品 在特定任务上实现 超过 30,000 倍 的速度提升;作为 Python 的超集
Modular AI 平台 强烈看好,核心产品 旨在统一 AI 基础设施,解决硬件碎片化问题
Swift 语言 中性(回顾性评价) 由 Lattner 在 Apple 创建,设计哲学影响 Mojo
LLVM / Clang 中性(回顾性评价) 由 Lattner 创建,是编译器领域的基石项目
MLIR 中性(回顾性评价) 由 Lattner 在 Google 参与创建,是 Mojo 性能优化的核心技术
TensorFlow / TPU 中性(回顾性评价) Lattner 在 Google 期间参与贡献,让他深刻理解 AI 基础设施的瓶颈
NVIDIA CUDA 风险提示(竞争对象) 被描述为“碎片化”的一部分,Modular 旨在提供其开放替代方案

值得记住的判断

1. “AI 最大的瓶颈不是算法,而是基础设施。” (Chris Lattner) —— 他认为,模型架构的创新已经很快,但训练和部署这些模型的基础设施(编译器、运行时、硬件抽象层)严重滞后,导致开发效率低下和成本高昂。

2. “Mojo 不是另一个 Python 替代品,而是让 Python 变得更快。” (Chris Lattner) —— 通过作为 Python 超集的设计,Mojo 允许开发者逐步采用,无需重写现有代码,就能获得 C/C++ 级别的性能。

3. “未来最成功的 AI 公司,可能是那个让模型运行成本降低 100 倍的公司。” (Chris Lattner) —— 强调基础设施优化的商业价值远大于模型架构创新,降低推理成本是解锁大规模应用的关键。

4. “AI 基础设施正处在‘前标准化’阶段,就像 PC 时代的 IBM PC 标准出现之前。” (Chris Lattner) —— 用历史类比说明当前 AI 硬件和软件生态的碎片化现状,并暗示 Modular 的目标是成为那个“统一标准”。

5. “MLIR 是 Mojo 性能的‘秘密武器’。” (Chris Lattner) —— 这个在 Google 诞生的编译器基础设施,允许 Mojo 自动将 Python 代码编译成针对任何硬件的优化机器码,是实现 30,000 倍加速的核心机制。

6. “证伪 Modular 的条件:如果 5 年后,开发者仍需为不同硬件编写不同优化代码。” (Chris Lattner) —— 明确提出了一个可验证的、具体的失败标准,体现了其愿景的务实性。

7. “在 Tesla 的经历让我明白,AI 系统不仅要聪明,还要在嵌入式芯片上实时运行。” (Chris Lattner) —— 指出真实世界的 AI 应用(如自动驾驶)对推理效率的极端要求,这驱动了他对基础设施优化的执着。

新增分析:Chris Lattner 对编程与AI未来的深度洞察

1. 性能提升的量化对比:Mojo vs. Python 的“速度阶梯”

Chris Lattner 在对话中详细拆解了 Mojo 实现 35,000x 甚至更高速度提升的底层逻辑,并提供了清晰的性能增益分解。这不仅是技术细节,更是一种“性能哲学”的体现——从物理极限出发,而非从 Python 的现状出发。

优化层级 技术手段 典型性能提升倍数 关键机制
基础层 编译器替代解释器 2x - 10x 消除 CPython 字节码解释开销,直接生成机器码
内存层 值语义与消除对象头 10x - 20x 将 Python 的“指针+对象头”模型改为寄存器直接存储,消除引用计数和堆分配
并行层 向量化 + 多线程 10x - 100x 利用 SIMD 指令(一次处理 4/8/16/32 个数据)和 CPU/GPU 多核并行
算法层 自动调优 + 内核融合 100x - 1000x 编译器自动搜索最优块大小、缓存策略,并将多个算子融合为单一内核
硬件层 专用加速器(TPU/NPU) 1000x - 35,000x+ 利用 ASIC 的专用矩阵乘法单元,配合 Mojo 的底层控制能力

关键洞察:Lattner 强调,Mojo 的优化不是“让 Python 快一点”,而是“让硬件跑满”。这种“从物理极限倒推”的思路,使得 Mojo 在 AI 推理和训练场景中,能比传统 Python+CUDA 方案更高效地利用硬件特性。

2. 硬件碎片化与“复杂性之敌”

Lattner 将“复杂性”定义为整个 AI 基础设施的头号敌人。他提供了具体数据来支撑这一观点:

  • 算子爆炸:从 TensorFlow 1.x 时代的几十个算子,到如今 PyTorch 2.x 的 2,000+ 算子。每个新模型(如 Transformer 变体)都会引入新的算子组合。
  • 硬件碎片化:除了 NVIDIA GPU 和 Intel CPU,还有 Google TPU、Apple Neural Engine、AMD GPU、各种 NPU/IPU,以及新兴的模拟计算芯片。每个硬件都需要独立的软件栈。
  • 人力成本:Lattner 指出,一个典型的大公司部署一个 LLM 模型,需要 45 人团队耗时数周甚至数月。原因在于:研究人员用 PyTorch 训练,部署团队需用 C++ 重写,再适配不同硬件,过程中反复“抛过墙”导致效率极低。

Mojo 的解决方案:通过“可编程性”而非“编译器黑盒”来应对复杂性。Lattner 认为,编译器方法(如 TensorFlow XLA)虽然能自动融合算子,但排除了非编译器专家(如硬件工程师、数值算法专家)的贡献。Mojo 允许这些专家用高级语言直接编写高性能内核,无需深入编译器内部。

3. 类型系统的“渐进式”哲学:从“提示”到“契约”

Lattner 对 Python 类型系统与 Mojo 类型系统的对比,揭示了两种不同的设计哲学:

维度 Python 类型注解 Mojo 类型系统
语义 提示性(hint),运行时忽略 强制性(contract),编译时检查
性能影响 无(CPython 不利用类型优化) 显著(允许寄存器分配、消除动态分发)
错误处理 静态分析工具(如 mypy)可能误报 编译器直接报错,类型安全有保障
学习曲线 低,可完全忽略 渐进式:从无类型到有类型,按需采用
社区影响 碎片化(不同工具不同解释) 统一(编译器强制执行)

关键数据:Lattner 提到,即使不改变任何代码,仅将 Python 代码迁移到 Mojo 编译器,就能获得 2-10x 的速度提升。这是因为编译器消除了解释器开销,而无需类型注解。如果进一步添加类型,性能可再提升 10x 以上。

4. 所有权与值语义:从“防御性复制”到“惰性复制”

Lattner 用数据库的例子生动说明了 Python 中“防御性复制”的痛点,以及 Mojo 如何通过“值语义+惰性复制”解决:

  • Python 模式:开发者需手动在数据库的 `add_record` 方法中复制传入的对象,否则后续修改会破坏数据库内部状态。这导致代码臃肿、性能下降(每次添加都复制)。
  • Mojo 模式:通过编译时所有权跟踪,Mojo 实现“写时复制”。当对象被传入数据库时,仅增加引用计数;只有当调用者后续修改该对象时,才触发实际复制。这既保证了安全性,又减少了不必要的复制。

性能影响:Lattner 指出,这种机制在大型张量操作中尤其重要。例如,在 PyTorch 中,`clone()` 操作是显式的,且容易遗漏;Mojo 的自动管理可减少 30-50% 的不必要内存复制,同时消除一类常见的并发 bug。

5. 异常处理的“零成本”真相:从 C++ 到 Mojo 的演进

Lattner 对 C++ 异常处理的批评非常尖锐,并提供了 Mojo 的改进方案:

  • C++ 的“零成本异常”:实际上并非零成本。它通过“表驱动”方式实现,导致:抛出异常时性能损失高达 10,000x;二进制体积膨胀;优化器受限(因需保留异常路径)。
  • Mojo 的“返回值变体”方案:将异常视为函数返回值的变体(类似 Rust 的 `Result` 类型)。编译器在调用点自动插入检查,无额外运行时开销。抛出异常与正常返回速度相同。
  • GPU 兼容性:C++ 的异常处理机制无法在 GPU 上运行(因 GPU 不支持栈展开)。Mojo 的方案天然适用于 GPU 和嵌入式设备,这是 AI 部署的关键需求。

6. 社区与生态:从 Swift 教训到 Mojo 策略

Lattner 分享了从 Swift 开发中吸取的三大教训,并直接应用于 Mojo 的社区策略:

1. 过早发布的风险:Swift 在 2014 年 WWDC 发布时,内部仅 250 人知晓,导致外部开发者面对大量 bug 和 API 变动,团队承受巨大压力。Mojo 的策略是:以 0.1 版本发布,明确告知“不可用于生产”,通过 Playground 控制风险。

2. 兼容性的重要性:Swift 与 Objective-C 的互操作是成功关键,但 Mojo 更进一步,直接成为 Python 的超集。Lattner 强调:“不要重蹈 Python 2 到 3 的覆辙”,通过支持 CPython 包、提供渐进式迁移路径,降低社区分裂风险。

3. 语法糖的陷阱:Swift 社区过度追求语法糖(如 `?`、`!` 等),导致语言复杂度增加。Mojo 的策略是:优先构建核心抽象(如所有权、特质),推迟语法糖,并与 Python 社区协商后再引入。

社区数据:Mojo 发布两周内,Discord 社区超过 11,000 人,Playground 注册用户超过 70,000 人。Lattner 认为,这种“早期开放”策略虽然带来压力,但能更早获得真实反馈,避免后期大规模重构。

7. AI 对编程的冲击:从“工具”到“伙伴”

Lattner 对 LLM 生成代码的看法,体现了一种务实的乐观主义:

  • LLM 的优势:擅长处理“标准问题”(如反转链表、常见算法),能自动化大量机械性工作。Lattner 认为,这类似于“通过委托来扩展能力”,让程序员专注于更高层次的创新。
  • LLM 的局限:在需要“正确性”的生产代码中,LLM 的“幻觉”是致命缺陷。Lattner 指出,编译器需要的是“代数推理系统”(如形式化验证),而非概率生成模型。
  • 未来方向:Lattner 设想,LLM 可用于生成“规范”(spec),而由形式化工具或编译器来生成“实现”。这类似于“文档驱动开发”的升级版,但需要新的编程语言和工具链支持。

对 Mojo 的影响:Lattner 认为,Mojo 作为 Python 的超集,天然适合 LLM 训练——因为 LLM 已大量学习 Python 代码。Mojo 的严格类型和所有权系统,反而可能帮助 LLM 生成更安全的代码(因为编译器会捕获类型错误)。他甚至开玩笑说:“也许未来会有 Mojo 专用的 LLM。”

8. 对 AGI 风险的冷静态度

Lattner 对 AGI 威胁的态度非常务实,与 Eliezer Yudkowsky 等人的悲观形成鲜明对比:

  • 技术限制:他认为 AGI 在短期内(5-10 年)不会实现,因为训练成本指数级增长,且物理世界(如机器人、自动驾驶)的落地远比数字世界复杂。
  • 风险应对:Lattner 的哲学是“如果 Skynet 要杀死我,那我担心也没用”。他更关注如何让 AI 技术“民主化”——降低门槛,让更多中小企业和个人能使用 AI,而非集中在少数巨头手中。
  • 历史类比:他引用自动驾驶的案例——2016 年预测 2020 年实现全自动驾驶,但至今仍未完全实现。这提醒我们,技术扩散的速度往往慢于预期。

9. 给年轻程序员的建议:逆流而上

Lattner 的建议体现了他的个人经历(从编译器到 AI 基础设施):

  • “如果大家都向左,不妨向右”:当所有人都在学 Python 做 AI 应用时,深入底层(如编译器、硬件、数值算法)反而可能成为稀缺人才。
  • “通过构建来学习”:不要死读书,而是设定一个具体目标(如训练一个模型、写一个编译器),在解决实际问题的过程中学习。
  • “拥抱复杂性,但目标是简化它”:Lattner 的“复杂性之敌”哲学,鼓励年轻人去理解那些“没人愿意碰”的底层问题(如内存管理、并行调度),并找到优雅的简化方案。

个人轶事:Lattner 提到,他年轻时对“为什么 C++ 的异常处理这么慢”感到好奇,从而深入编译器底层,最终影响了 LLVM 和 Swift 的设计。这种“逆流而上”的好奇心,是他认为最有价值的品质。