Jim Keller因为其过往的经历被大家熟知。详细履历可以查看之前的报道《Jim Keller的芯片研发封神之路》。最近几年,他先是成为了AI初创公司Tenstorrent的CTO,并在最近成为了CEO。Tenstorrent是希望在机器学习硬件领域成名的公司之一。Tenstorrent 将自己视为一家设计公司,而不仅仅是一家 AI 硬件公司。Tenstorrent 已经流片了两种芯片设计,Greyskull 和 Wormhole,并且有一个很好的路线图,使用当前领先的工艺节点和未来的工艺节点,使用小芯片和die to die的低功耗接口。Jim Keller 是该公司天使投资人。
所以我们的使命是让你编写 AI 程序并进行高效编译。我们开始正确地破解它,我们的测试是我们有一个流行模型库,我们正在高性能地运行其中的大部分,并且我们正在努力让所有这些模型都高效地运行。然后另一件事是我们希望从单个芯片扩展到许多芯片和软件,以便在您编写 AI 模型的方式和它的部署方式之间没有太多层。我们已经在大量芯片上展示了一些模型,我们正在努力使其更具产品化性,并制造出非常好的产品。
Jim Keller:首先我们的软件团队比较小。我们正在招聘真正了解它的人。所以这很有趣——我们有高级程序员编写 JavaScript 和各种东西。有很多这样的人,他们在自己的领域内变得更强,然后你就有了系统级程序员;如果他们了解操作系统的各种细节,然后你就有了我们过去认为在硬件上编程的低级(low-level )程序员;然后在编译器堆栈中有同样的事情:有高级语言功能,然后是编译器的中间部分,然后是低级细节。我们需要的那种人是从头到尾都了解系统编程和编译器的人。
另一件有趣的事情是,Tenstorrent 是从具有 FPGA 综合背景和 HPC 背景的人开始的,因为 AI 是这些的组合,它们不会长在树上,所以人们带着不同的东西进来,他们必须进入‘我要构建一个软件工具链,它的一部分看起来像综合,一部分看起来像 HPC问题和它的一部分看起来像低级驱动程序代码'。我们雇用我们认为优秀的人,然后您必须在软件堆栈中找到自己的位置。这与软件堆栈中的标准描述有点不同,但我们运气不错——我们喜欢我们雇用的人。
IC:我一直在与您的 RISC-V 首席架构师 Wei-Han Lien 交谈。这是一个分为两部分的问题——为什么你的 AI 芯片中有内核,为什么它们是 RISC-V 内核?
Jim Keller:我们考虑过这个,对我来说它相对清晰。但是你知道,世界很复杂!我给你举个例子——如果你做一个 C 编译器,没有人会问你是在自动驾驶、工业控制还是数据中心上做,这仅仅是一个C编译器。那是一种技术。该技术可用于任何事物。所以我们是一家设计公司——就像我们设计硬件一样,我们设计 CPU 和 AI 软件,这就是我们所做的。这就是每个人进来做的事情。
现在,我们要销售产品。我们要卖的硬件产品是AI电脑。我们将出售芯片、电路板或系统。我们还有一个云,这样人们就可以来试用并加入。还有一些人并不是真的想买电脑,他们想用云,所以这本身就是一个产品。但我们也可以将我们的 AI 小芯片和 CPU 小芯片作为产品出售。这些是我们设计的技术,人们可以基于此用来做很多事情。
现在有趣的是,当我们向人们展示我们的计划时,就像这是这个 AI 芯片,然后我们将放入 RISC-V 处理器,因为我们想要在芯片中进行本地计算。我们从授权处理器开始,但随后我们建立了一个团队,该团队的表现超出了我们的目标。所以我们有这个你知道的非常棒的 CPU 团队,然后人们说'嘿,我可以买那个 CPU 吗?'。好吧,我真的不想将 CPU 作为产品销售,这是一个复杂的大市场,但其他人想要这样做,所以我们将对 CPU 进行许可。我们还将以小芯片上模式出售该 CPU,人们可以将其嵌入到自己的产品中,这变成了非常有趣的对话。对公司来说,他们就像‘好吧,我正在构建这个东西’,他们最不想做的就是支付许可费来许可 CPU,然后必须对其进行强化,这需要很多专业知识。拥有一个 CPU triplet,他们可以将其放入封装中来执行他们想要的操作。顺便说一句,还有其他人在做这样做,如果他们想要其他人的产品,那就太好了。
但我们是一家设计公司。特别是对于 CPU,当你构建一个复杂的 CPU 时,你需要多个目标,因为要让它正确,你需要自己模拟它。然后你与某人合作,他们模拟它,我向你保证,他们会发现你从未想过的错误。所以是的,我们一直热衷于为此寻找一些好的技术客户,或者你知道他们将在我们调试时成为合作伙伴。
Jim Keller:是的,所以你必须思考。在某些时候,客户需要解决方案。因此,如果您进入数据中心,就会看到一台服务器 - 它的定义非常明确,还有定义好的架顶式交换机,还有 SAN 或 LAN。有存储计算机和网络计算机,有时它们都集成在同一台服务器中,有时有服务器用于存储,服务器用于连接到网关,因此在这方面有很多区别。今天的人工智能主要是服务器上的加速卡——人们想要分解的人工智能。所以我们将看看它是如何发展的。
将 AI 计算和通用计算紧挨着构建芯片意味着当 AI 和那些人需要相互交谈时,他们不必去某个有延迟或功率开销和其他一切的地方。这将如何发展将是复杂而有机的。我们可以制作这种 AI 小芯片、CPU 和 AI,它们真的很忙,但它们仍然位于面向其他应用程序堆的服务器后面。但是可能还有另一个应用程序,现在我们有一个单芯片解决方案,你把它放在板上,你连接了一些传感器,你有一个边缘服务器,它不需要quote主机。这将如何发展,是所有人的关注。
IC:你害怕这些模型的初始输出,创造出无法解释的设计吗?所以当涉及到调试或边缘情况时,你真的不能去修复吗?(问题的背景是JK他们用AI去写一写代码)
Jim Keller:所以这是争论之一——就像在自动驾驶中一样,“难道你不希望部分代码由人类编写吗?”。因为你可以审核它,我在想“真的吗?”。如果您有 500 万行代码,由 100 人在五年内编写,其中大多数人不再在您的公司工作——您认为这是可以审计的吗?答案是否定的。
对于人工智能,这是一件非常有趣的事情——如果你有一个好的数据集,并且你有很好的训练,你实际上可以训练它到一个已知的损失函数(known loss function)。大型 C 程序的奇怪之处在于它没有损失函数。你不知道它的锋利边缘在哪里,它的完全失败在哪里。Windows已经发布很长时间了,每个人都在使用它,但它还经常出现蓝屏。所以这就是您知道的可审核软件?所以你也觉得AI低人一等?
Jim Keller:这是我过去多年来痛苦地学会的一点。所以最重要的是具有清晰边界的抽象层,因为我们并没有变得更聪明。我已经说过很多次了——我们并没有变得更聪明。我们构建更复杂的东西,但那些复杂的东西需要用某些人理解的组件来构建,经常发生的事情是你有一个非常棒的设计,然后你用了十年向它添加东西 ,人们来来去去。在某些时候,它开始变得脆弱,人们会说“哇,它变得越来越复杂了!”。不,它只是变得一团糟。就像你没有做正确的事——在某个时候你应该停下来,你应该放下你的铅笔,把它分成几块,确保每一块都有一个理解它的主人,它们之间的接口有一组人类可读的事务,您可以对其进行验证。
因此,设计良好的硬件是相当可预测和可理解的——不像像毛球一样成长的硬件。有一篇论文叫“Big Ball of Mud”,我很喜欢。每个人都应该去谷歌一下,看看这篇论文,因为它实际上是软件灾难的定义,硬件也是如此。
Jim Keller:是的,这是我四到五年前说的。正确的数字实际上是三年,因为您需要一年的时间才能克服必须这样做的事实!
你必须——如果不是重新设计,那就是重构,并且愿意这样做,因为你只会到达一个点,它是如此复杂和脆弱,以至于你无法触摸它。然后出了问题,你真的创造了一些你无法控制的东西。
所以回到 AI 点,关于 AI 的奇怪之处在于你有一个新的模型,你有一个新的数据集,你有新的误差函数,然后你训练它。您可以重新生成它所做的事情——对于大型语言模型来说这是不合理的,但大多数模型在合理的时间内。在某种程度上,您永远无法为所有 RTL 或所有历史基础架构重新生成 500 万行 C 代码。因此,AI 指向的是一个实际上移动得更快而不是更慢的未来。
Jim Keller:没有。嗯,我想了很多。因此,如果在计算世界开始时,你自然而然地拥有一千个处理器,那么所有的软件开发都将是如何在一千个处理器之间进行协调。但是从 1950 年左右到 2005 年左右,大多数人都在一台计算机上编程,所以计算机是一个单一的东西,可以在 PC 上执行指令,而且在大部分时间里,他们一次只执行一条指令。
如果有人使用 chatGPT 写东西,它会做一些疯狂的事情,比如产生新颖的段落,但它也会弄清楚标点符号放在哪里。现在标点符号可以用一个简单的 C 程序来完成——在一些单词的末尾有两个空格;放入句号或逗号。这不是火箭科学。你认为使用 chatGPT 来做一些 c 程序可以做的事情,这实际上是使用每秒 petaflops 的计算来放置一个逗号,而不是 100 行 C 程序。
Jim Keller:所以我们不想做的是把产品卖给某个人,而这个人又卖给那些遇到他们无法解决的问题的人。我想做的是,我们想要构建可用的、可编程的 AI 计算机,然后在短期内将它们出售给想要对 AI 计算机进行编程的人。他们将从小处开始,你知道 10、100、1000 个芯片。然后他们会说这是否好,他们会扩大规模,我们也会扩大规模。然后我们会卖给更多的人,在某个时候,我们会卖给卖给某人的人。我们希望循序渐进地做到这一点,因为 AI 软件堆栈及其在各个方面的扩展都很困难。我们认为我们有一个很好的计划来做到这一点,并且我们已经与很多人就此进行了接触。