📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

Jack Morris: Stuffing Context is not Memory, Updating Weights is

AI Engineer1:02:44

Transcription

[音乐] 让我们来谈谈 Chad GBT。我认为 Chad GBT 知道很多事情。它实际上非常令人印象深刻。我一直都在使用它。我用它来准备演示文稿。我昨晚用它来做饭。嗯,你知道,非常像是越来越依赖。然而,Chad 也有很多不知道的事情。比如,嗯,它不知道为什么我的扬声器通行证不起作用,当时我正试图进入大楼,而且,如果你问它,蓝鸟队赢得世界大赛了吗?答案是否定的。我知道这一点,因为我看过世界大赛,但如果你不启用网络搜索,Chad GBT 就不知道这一点,因为它有一个叫做知识截止日的东西。所以所有的训练数据都按日期分段,某个日期之后的事情是 chbttt 无法单方面知道的。呃,如果你问 jbt 帮我优化我为 AMD GPU 编写的这个内核,它在这方面做得非常糟糕,我认为有几个原因。一是它真的很困难。二是,呃,它没有多少数据。但三是我认为更重要的是,存在的数据只占其训练数据的很小一部分,以至于它无法做得很好。因此,很多这样的任务,我猜你们很多人在工作中都会遇到,比如更小众的或者我称之为长尾的任务,对 Chad GBT 来说真的很难做到,即使你说请,比如请 [笑声] 或者说我希望你了解更多关于这方面的信息或者练习,它无法了解更多关于这方面的信息,它无法练习,当你这样问它时,它不知道该做什么,呃,是的,如果你问黑石集团的合作协议条款是什么,它不知道你的公司,我应该从亚马逊订购什么衬衫来实施我们公司单体仓库的新功能。用我的风格写一封电子邮件。根据病史诊断该患者。在马丁内斯和解谈判中,反对派律师使用了哪些论点?呃,这个问题是否已经在我们公司的内部维基上回答过了?比如,这些事情都没有可能由 chatbt 回答,因为它们不在训练数据中,或者它们太小众,或者它们需要一些对它不可用的数据。所以我想我今天想谈的问题是,呃,解决这个问题的正确方法是什么?比如,如果我们想构建真正了解我们想要它们了解的事物的系统。呃,我们应该如何构建它们?我认为我想到的方式是,我们如何获取一些知识并将其注入模型的参数中?比如,正确的方法是什么?我想到的是,我认为这在我自己的研究和其他人的研究中体现出来的方式是,有三种方法。有完整的上下文。你可以尽可能多地获取信息并将其塞进语言模型。有 rag 或检索增强生成,你有很多东西无法全部装进去,所以你检索最有用的部分,然后输入。然后有第三件事,我认为这真的很新,而且还没有人这样做,那就是将事物训练到权重中。我今天主要想谈的是为什么我认为我们应该将事物训练到权重中。但我将从其他两个开始。另外,我想说的是,大约 10% 的时间里,我将推销我自己的研究,但我会尽量诚实。如果你愿意,你可以直接忽略我。所以,我认为解决这些问题的最简单方法是将所有内容都放入上下文中。就像如果你在一个小公司工作,或者你只关心可能发生的 100 次世界大赛一样,你可以复制所有数据并将其粘贴到 chat GPT 或你使用的任何模型中。这足够有限,模型可以理解。而且这效果相当不错。我认为这是几年前让人们非常兴奋的事情。我有一个医生根据病历回答问题的例子。病历足够小,可以输入到模型的上下文中,模型可以做得很好。我认为这有几个问题。也许最主要的问题是它太昂贵了。比如,如果你在日常工作流程中做任何类似的事情,你会将大量的 token 输入到上下文中并开始生成。我的意思是,一是它会花费很多钱,比如美元,二是它太慢了。比如,嗯,几个月前我正在写我的论文,我自己写的,但我确实几次向 Claude 寻求反馈,而且一旦你粘贴进去,我不知道,大概是 80 页的文本,如果按文档算,它是中等长度的,我粘贴到 Claude,一旦你粘贴到 Claude,一切都会慢 10 倍左右。我这里有一个设置,如果你有 1000 个 token 的上下文,我们可以每秒输出 10,000 个 token。如果你有 128k 个 token 的上下文,我们可以每秒输出 130 个 token。所以这是几个数量级的减慢,我认为我们都遇到过。所以这非常令人讨厌,而且很难想象我们如何克服它。嗯,我将从研究领域给你一个快速的背景,也许人们知道,那就是我们使用的模型的固有局限性。我们使用的模型是 Transformer。Transformer 看起来是这样的。Transformer 的真正问题在于这个叫做自注意力的小框。问题是进入 Transformer 的所有单词都需要相互查看。这有一个二次依赖关系。所以如果有四个单词,四个 token,矩阵可能有 16 个条目。如果有 12 个 token,就有 144 个条目。我们可以管理一段时间,但最终会变得不可行。尤其是在内存方面,我们无法 >> 拿住麦克风。从内存的角度来看,我们无法将所有这些内容都放在上下文中。你可能会说,好吧,Jack,Grock 4 有两百万个 token 的上下文窗口。是的,两百万个 token 的上下文窗口。这是一个非常大的数字。Gemini 3 在这次会议期间发布了,Gemini 3 有一百万个 token 的上下文窗口。你可能还会问,为什么 Gemini 3 没有提供更大的上下文窗口,尽管它是在 Grock 之后发布的?我认为原因在于 [清嗓子] 模型在输入那么多 token 时不崩溃,以及模型能够跨越大量 token 进行适当推理之间存在差异。我认为我们还在研究第二部分。我认为人们已经找到了训练模型的方法,这些模型不会在更多 token 时崩溃,但我们还没有真正达到能够训练模型在一百万 token 上与在一千个 token 上一样好的程度。如果你对此更感兴趣,Chroma 有一份关于当您添加更多内容到上下文中时性能如何下降的精彩报告,名为“上下文上下文广泛”。这张图显示了上下文越大,即使信息量相同,LLM 的表现也越差。我认为这里有两点值得观察,我认为很有趣。一是,Claw 是迄今为止最好的。我喜欢这样的图表,因为我觉得如果你和人们交谈,很多人认为 Clot 是最好的,但如果你在很多标准基准上进行衡量,它实际上更差。但然后你使用它,你会想,“哦,这里有什么东西更好。”所以,我喜欢这个,因为它捕捉了人们实际对我说的话。但我也喜欢它,因为一旦你到达这里,性能就很糟糕。所以,比如,如果他们输入一堆相关的东西,但实际上并不能帮助你解决问题,一旦你达到 10 的 4 次方 token,也就是一万个 token,模型就完全不起作用了。即使它们没有崩溃,它们输出的内容是有意义的且符合语法,但它们实际上并没有解决问题。所以上下文广泛是一个巨大的问题。嗯,也许只是轶事,如果你看看,有很多人说这样的话,比如哦,上下文窗口这么长,为什么它实际上不起作用?或者人们认为 Claude 代码在填满上下文窗口时会停止工作。嗯,有很多关于这些高效架构的工作,你可能会听到,比如 [音乐] 嗯,Mamba 状态空间模型、线性注意力、混合注意力、稀疏注意力、滑动窗口。它们都更有效率,但它们基本上具有 Transformer 的相同特性。比如,即使它们可以在更短的时间内运行或内存需求更低,但在性能方面也会有所权衡。所以,即使你构建了一个可以容纳无限上下文的线性注意力模型,它也不好。比如,它无法解决你的问题,即当我向模型输入更多 token 时,我如何才能真正推理并变得更聪明。有很多这样的例子。我看到了这个最近的帖子。如果你是模型架构世界中的一员,你可能已经看到了。这是几周前的事情。有一个新的中国模型 Miniax M2。它是最先进的开源模型之一。许多其他中国实验室一直在推广这些新的混合架构,它们更有效率,并且可以接受更长的上下文。而 Miniax M2 并没有这样做。他们只是使用了我之前展示的那种常规的二次注意力。他们有一个很长的故事,讲述了他们如何尝试又尝试,但基本上不值得。在计算量和模型的好坏之间存在固有的权衡。所以,即使你可以技术上构建一个在数百万 token 时不会崩溃的模型,它对于你关心的任何任务实际上都更好。所以没有人真正这样做。我认为,总而言之,我们认为我们在完整的上下文中受到上下文窗口的很大限制。有一个系统问题是你无法将数百万 token 输入模型。然后是另一个推理问题,即使你可以,模型实际上也不会变得更好。所以这可能不实用。我认为如果你在行业工作,我敢肯定你看到的文件集要大得多,比如数亿到数万亿 token。尽管我们在训练模型方面做得越来越好,在系统方面,我们在运行它们方面做得越来越有效率、更快、更便宜,但我们还没有接近将数万亿 token 塞进模型。我认为这还很遥远。所以我猜你们很多人都在使用 rag。有多少人每周使用或从事 rag 系统?这确实很疯狂。好的,所以超过一半肯定有。现在我们来谈谈 Rag。我将谈谈它为什么好,然后我将谈谈为什么我认为它存在根本性的局限性,未来的产品将使用比 Rack 更好的东西。所以,如果你使用 Rag,你可能会使用向量数据库。有很多向量数据库。我认为我认识其中一些。Turboroper,我们现在在 S3 上,那是 Chroma。我做了这个幻灯片。呃,呃,有很多向量数据库。它们都为你提供略有不同的权衡。它们为你提供更便宜、更快的向量。嗯,向量数据库是生产环境中内存的工作方式。如果你使用公司内部的问答系统,它肯定运行在 rag 上,而 rag 由存储嵌入的向量数据库提供支持。JBT 内存使用嵌入。嗯,Andre Karpathy 去年,实际上是两年前,有一个关于运行在语言模型上的操作系统的图表,他称嵌入是 LLM 的文件系统。我认为在今天的 terms 中是正确的。比如,今天,2025 年 11 月 22 日,可能如果你想到你正在从事的操作系统的东西,文件系统就是嵌入。但我认为嵌入是今天的文件系统。它们不是未来的文件系统。这就是我今天要谈的。我还想指出,它们非常容易使用。比如,我将在讲座结束时谈到的所有与将事物训练到模型相关的工具都非常困难。但这真的很棒,我们可以花点时间欣赏它。你只需将文本烘焙进去,然后运行它,就这样。这是五行代码。这真的很棒。嗯,问题是它们并不那么好,而且它们有很多问题,我认为。嗯,我认为,好吧,有多少人从事 rag 或体验过 rag 系统并且完全满意 [笑声] 比如,好吧,那太好了。所以,我认为我们都同意,也许可以有更多,比如即使我们不知道确切是什么,也一定有其他东西。嗯,我将谈谈我自己在研究中遇到的一些问题。所以,让我们从这个抽象开始。所以,这是为 rag 提供支持的向量数据库。这里的每个点都代表一个文档。所以文档通过 LLM。LLM 被训练成只给你一个代表文档的向量。我将它们投影到二维以用于幻灯片,但每个文档都是一个点。嗯,如果你实际查看向量数据库中的内容,它看起来是这样的。所以有很多数字。世界上没有人能告诉你这意味着什么。嗯,我发现有趣的一点是,即使它们看起来是随机的,而且没有人能真正读懂它们,但如果你构建一个系统来读取它们,它效果相当不错。所以,比如,如果你在 Rag 工作,并且你发送给别人嵌入,你实际上是在发送与文本类似的东西。我认为这很重要,因为很多实际的架构,比如 Turbopuffer、Pine Cone 等等,它们只存储嵌入。所以,也许有一个错误的假设,即如果你只发送嵌入,就没有安全漏洞。但实际上,即使是一个稍微有点动机的人也可以构建这个系统,右边的白色箭头,它获取嵌入并产生可能不是完全相同的文本,但非常接近的文本。这是我花了大约一年时间进行博士研究的成果。这是一个动画,比如我输入这个句子,它进入嵌入模型,存储在向量数据库中,然后我们运行这个,它是一个多轮纠正的东西,然后到最后,我们实际上可以得到大部分,我认为在一定长度上,我们可以从向量数据库中精确地恢复 90% 的文本。所以这里的要点是,使用向量数据库没有安全优势,而且它们在规模上很难运行。所以这对敏感数据的人来说是一个固有的问题。这是论文。嗯,我认为我个人对嵌入的第二个问题是它们不是自适应的。比如,存在一个普遍的对世界样子的理解,它被捕捉在这些向量中,并且不能根据你所做的工作进行调整。所以,举个具体的例子,我们嵌入了大量的数据库,或者我们创建了一个包含信用卡相关文档嵌入的数据库。我认为其中一半来自万事达卡,一半来自维萨卡。但如果你实际查看嵌入的存储位置,嗯,我想它不在这个图片里,但它就在这里。所以即使如此,也存在一个很大的空间,即所有可能的语义嵌入只代表一个普遍的,如果这说得通的话。所以信用卡实际上聚集在这个很小的区域,这意味着搜索效果很差。所以,举个具体的例子,如果你看这两份文件,一份来自维萨卡,一份来自万事达卡,至少在我们设计的系统中,如果你搜索的是关于维萨卡查询的内容,你不应该收到万事达卡,但它们都如此接近,以至于它们实际上是完全混在一起的。这只是所有传统嵌入机制的一个问题。所以我们构建了一个新的模型,可以让你输入一些周围的文档。所以,举个例子,这是我们模型的前半部分。我们会输入一些信用卡。我想我放了 AMX,但实际上我们做的时候并没有 AMX。嗯,模型的工作方式是这样的。比如,当它为文本生成嵌入时,这里是文本,它还会查看周围的文档。所以它可以知道,比如,这段文本是关于维萨卡的,但其他所有文档也都是关于维萨卡或万事达卡的。它被训练成可以动态调整嵌入,基于周围的上下文。所以我认为这很酷,而且它确实有效。所以,比如,在这个维萨卡和万事达卡的例子中,维萨卡和万事达卡之间的相似性现在是 .144,我认为任何包含维萨卡的内容都有更高的相似性。所以这可能纠正了一个小问题。嗯,它在域外的东西上效果更好。所以我们有一个,我忘了气候数据集是什么。是一个论点数据集,一个金融问题数据集,然后我想是科学文章。我认为我在这里要说的重点是,如果你进行这种上下文处理,嵌入效果会好一些。所以,比如,如果你以一种可以动态适应领域的方式构建它们,它们可以解决一些问题,但我认为最终,它们仍然是嵌入。所以 >> 是的。是的。>> 嗯,其他人是否采用了这种方法?你知道吗?是的,我认为我们知道 OpenAI 和 Anthropic 正在后台使用它,现在的嵌入模型是上下文的。这是一个相当,这是一个免费的午餐,比如你添加了这些额外的 token。嗯,我想这有点难构建,比如你必须构建这个两阶段模型,然后当你嵌入某物时,你必须从周围文档中获取一些嵌入。但一旦你构建了它,它就有效,你知道,在长尾的东西上效果更好。我认为,如果你看看,比如 MS Marco,这是一个大型的 Web 规模嵌入任务,当你添加周围的东西时,它并没有真正变得更好,因为,你知道,它已经相当全局了,如果这说得通的话。但如果你看看真正小众的东西,嵌入效果会好得多。所以,是的,我知道它在一些其他公司已经投入生产。嗯,我认为,如果你真的在你的公司构建一个嵌入模型,并且你想努力让它变得更好,这可能是除了数据之外最简单的方法。可能第一种方法是数据。嗯,有一些最近的工作我认为值得一提,关于嵌入和向量数据库以及 rag 的根本局限性,它们说,比如,如果你,它甚至不值得解释,但有一些,有一些关系无法在固定维度的向量中捕捉,比如你必须推理事物才能回答所有可能的任务。这是一个组合设置,存在如此多的可能关系,以至于嵌入无法存储它们。所以,比如,理论上嵌入显然不是处理文本之间所有可能关系的最佳方式,但我认为每个人都知道 rag 有问题。比如,我很高兴没有人举手,当我问是否有人会站出来为 rag 辩护时。而且,我认为这是一个很难提出的观点。比如,每个人都知道这一点,但很难找到检索无法解决的实际例子。比如,作为最近坐下来尝试为我关心的任务创建基准的人来说,很难表达需要对多个文档进行这种潜在推理的问题,而 rag 无法解决,但它们确实出现,比如,任何需要事物之间关联的问题,或者那些隐含但未在文档中明确回答的问题都无法通过当前技术解决。而且,如果你有这方面的有趣例子,我很乐意在这次演示之后听到。嗯,希望我已经证明了 rag 哦,是的,是的,是的,请继续。>> 我很好奇,你是否也将代理搜索归类为 rag?>> 是的,这是个好问题。所以,我想我这样认为代理搜索,它是一个可以抓取并连续进行多次查询然后响应的模型。嗯,是的,这是一个很好的问题。我认为,我认为我不会将其归类为 rag,但我认为它有不同的根本局限性,也很难克服。比如,你真正想要的是一个能够阅读全部内容并推理所有可能关系然后做出回应的模型。我认为理论上你可以构建一个代理 rag 系统来做到这一点,但它会非常昂贵。>> 是的。因为 [清嗓子] 这不是,这不是,深度研究的方向是,它会遍历并提取数千个来源,但最终进入上下文的只是其中的一小部分。>> 是的。是的。我实际上认为深度研究是朝着正确的方向。比如,它们试图做一些更高级的事情,需要大量的计算。比如,我认为,任何比 rag 更好的东西都会更昂贵。所以,比如,它需要一段时间,它进行很多搜索,它思考很多,这很好。我认为可能有一个更优雅的方法来训练一个非常大的、类似研究的系统,但我认为这是一个很好的方法,而不是我今天谈论的,但它也很有希望。比如,也许问题是,你愿意在训练时间或推理时间花费很多钱,而深度研究是,比如,它们不花很多钱来训练它,但它愿意在推理时等待很长时间,我认为我今天将要谈论的内容更多是关于,如果你愿意花很多钱,你就能得到一个非常聪明的模型,它已经知道你所有的信息,而且推理成本非常低。所以,这基本上是同一权衡的不同方面。我认为,思考这些事情的一个好方法是,为了获得更好的模型,你需要在某个地方花钱,你知道,比如,你可能需要生成更好的数据并花费更多时间在数据上,你需要花时间在训练上,或者你需要花时间在推理上。而 rag 的好处是它基本上有效,但任何更好的东西都会更贵。>> 是的。>> 回到你关于万事达卡对维萨卡的例子,我不知道这是否在你的演示文稿后面,但你对使用知识图谱来增强它有什么看法?这是个好问题。也许稍后问我。我得想想知识图谱。已经有一段时间了。嗯,所以,让我们谈谈如何在权重中学习。嗯,我认为我们想解决的问题是,好吧,那么,比如,我之前展示的例子,或者你有一个你从个人工作中收集的小数据集,你想教给模型。将其放入上下文是一回事,这是一个很好的开始方式,如果你没有那么多数据,这会让你走得很远。但我认为我们可以做得更多。比如,有些问题即使你的数据在上下文中,模型也无法回答。所以我想让我们思考一下,我们如何将事物注入模型,以便它学习得比在上下文中更好,而且它不会忘记它已经知道的一切。嗯,我想指出我自己的研究中的一些东西,那就是语言模型有一个固定的容量。比如,一种思考方式是,tgt 只有这么多参数。我们有一个测量,它可以存储每参数 3.6 位。所以,比如,我认为一个十亿参数的模型是 3.6 位,可能是 4TB。是这样吗?4GB,什么?是的,谢谢。谢谢。嗯,这有一些信息,但实际上并不多。所以模型基本上尽力适应训练分布,然后丢弃所有其他东西。所以,举个具体的例子,今天早上我整理这个的时候,我问 Claude,“塔吉克斯坦最小省份的首都是什么?”它给出了一个非常详细的答案。实际上非常令人印象深刻。没有网络搜索。模型只是在其参数中知道这一点。我想说这是坏的。比如,如果你想构建一个能够回答你公司详细文档问题的系统,你不需要它知道塔吉克斯坦最小省份的首都是什么。而且,既然我们知道这些模型有固定的容量,我认为这是坏的。比如,我们真正想要的是知道如何找到这类东西,然后将其删除,并用我们关心的东西替换它。我认为这就是我们正在努力的方向,但我们仍然 100% 不知道如何做到这一点,抱歉。所以,当我最初准备这个演讲时,我打算这样解释,称之为神经文件系统。然后我决定直接称之为权重。我认为这更容易理解,但这张幻灯片仍然是神经文件系统。嗯,所以,我认为这里有几个问题,比如,我们想将所有数据都训练到模型中。一个问题是,我们如何训练它?我们是做 RL 吗?我们是做 SFT 吗?嗯,数据是什么?嗯,另一个问题是,在所有可能的数据中,我们使用什么?我们是直接在我们的数据上进行微调吗?我们是尝试生成更多吗?我认为我的论点是我们应该尝试生成更多,我将向你展示原因。然后有一个架构问题。比如,我认为很长一段时间以来,机器学习深度学习社区一直非常关心我们应该使用什么架构。然后,比如,八年来,所有知道自己在做什么的人都只使用 Transformer,除非他们试图改进它们。我认为现在在这个我们试图将事物训练到模型中的世界里,比如,如果你想到,好吧,世界,我们每个人都有自己的模型,或者可能有多个模型,而这些模型正在被大量更新。我认为我们又开始关心架构了,我将告诉你原因以及我认为有哪些选择。 [清嗓子] 所以,首先让我们谈谈学习。嗯,所以,我认为这里的思维模型,我之前提到过,就是我们试图让模型尽可能好地学习数据,而且这会很昂贵。所以,我们不喜欢 rag,但 rag 也没有花费我们多少钱。我认为要比 rag 好,我们必须花一些 GPU 点数,这就是世界的现状。好吧,所以,这是我们的模型。它就像这个同质化的数据块,这是我们的数据。所以,比如,我们可能有万事达卡数据集,或者我们收集了关于我们自己的数据,或者我收集了我在十一月和十二月编码的所有痕迹,并且我想让模型更好地学习我的问题。我该怎么做?我该如何做到这一点?嗯,让我们从最愚蠢的方法开始,看看会发生什么。所以,比如,我们从一个数据集开始,然后我们就在上面训练。嗯,比如,使用下一个 token 预测。所以,我们实际上运行了这个小实验。这是 3M 公司,他们生产博士。嗯,这是他们的一些财务报告。所以,比如,你可能在那里工作,你真的不想读所有这些。所以你只想让模型真正理解这一点,并能够回答问题,而且 rag 实际上不起作用,因为它是一种奇怪的结构,文档之间有很多相互关联的方式。好的,很酷。所以,我们只是用下一个 token 预测来训练模型。看看会发生什么。你知道吗?实际上,即使你不训练整个模型,你仍然会得到零损失。所以模型可以完美地记住整个 3M 10K 财务报告。嗯,这非常令人印象深刻。好的。现在我们来谈谈它。所以,我们做了这个,然后我们不想问任何与文档完全相同的问题,因为我们想看看模型是否真的好。所以我们开始,你知道,就像每个人都喜欢测试诗歌一样。所以我们从一首诗开始。我们说,你能写一首关于 3M 在 2025 财年的诗吗?所以,请注册你的赌注。你认为发生了什么?>> 太糟糕了。>> 太糟糕了。有人说了。它说,一段的段落是一首诗。句子结束。太疯狂了。 [笑声] 是的。所以,现在也许我们问为什么会发生这种情况以及如何修复它。所以,不幸的是,这不起作用。我实际上认为这是人们还没有这样做的原因之一,因为最愚蠢的方法通常在机器学习中是有效的。但在这种情况下,我们必须做一些更复杂的事情。嗯,所以,也许花点时间想想你会怎么做。你在工作或业余项目中遇到这个问题。嗯,我认为我们需要修复两件事。一是数据不是我们想要训练的。我认为。二是,我们可能不想更新整个模型,因为我们所做的基本上是覆盖了所有关于塔吉克斯坦和其他模型中所有其他东西的知识,只用了这个 3M 的知识,我认为这太具体了,然后模型就只关注 3M,它只会产生文档中的确切复制句子。这显然太多了。所以,我认为我们需要一种更好的方法来更新模型,我们需要一种更好的方法来改变数据。嗯,有一些非常相关的研究。我不知道你是否关注这个,比如 Andre Karpathy 的 LLM 聊天。致敬。我认为它非常有教育意义,他有一个很好的问题,那就是他构建了一个小型 LLM 并从头开始训练它,然后他想教它关于他自己的事情。好吧,也许你会尝试的第一件事是 rag。你放一个关于你自己的小数据库。但这只能扩展到一定程度,然后模型就不能真正地组合事物。它只能像复述事实一样。所以,他想真正地教它,他说,意思是训练到权重中。所以,请注意,他不仅仅是举一个例子,然后使用下一个 token 预测来训练模型。他做了一些更复杂的事情。他生成了这个任务,你不需要关心细节,但基本上他创建了一个多样化的训练数据集,其中包含他关心的事物的示例,然后进行训练。如果你去,你可以找到它。实际上效果相当不错,这很酷。所以,他能够通过生成大量看起来像他关心的例子的合成数据,然后对模型进行一点微调,来教给模型一种新的行为,它就能学会。有一篇非常好的论文,是去年的,来自斯坦福的一些人,叫做“合成继续预训练”,他们遇到了同样的问题。所以,他们有一个非常小的数据集,并且他们想在不“弄坏”模型的情况下教模型数据集,他们有一种相当复杂的方法,通过提取实体来生成合成数据。但我认为重要的一点是,他们采用了一个小数据集,并生成了一个更大、更多样化的数据集,代表了他们关心的事情。这是打破了整个常规机器学习范式的东西。比如,他们只有一个小的训练数据集。所以,你在学校学到的东西会告诉你,你只会过拟合,而且你无能为力。你只能回去收集更多数据。但实际上,因为 LLM 现在非常强大,我们可以做第二件事,那就是生成一个更大的训练数据集。它实际上只包含原始数据中存在的那些事实,但它非常大,以至于你可以训练一个模型。这很奇怪。它最近才开始奏效,但确实奏效。我将向你展示一些证据。嗯,绿线是之前进行转储时发生的情况。所以,你只是微调模型上的数据。它实际上从黑线开始。 [清嗓子] 所以,令人惊讶的是,它实际上变得更糟了。所以,它记住了数据,以至于它无法回答任何略有不同的问题。嗯,他们所做的,他们有两种不同的方法,但基本上是生成大量的合成数据来描述原始数据集中的事物。它在某种规模上效果非常好,比如 1 亿 token,接近 10 亿,它们实际上可以在这个数据集上超越 GPT4,这真的很酷。所以,我认为这里的要点是,即使你没有很多数据,如果你愿意生成一个描述你拥有的数据的大型合成数据集,你实际上可以训练一个模型,而且效果非常好。还有很多其他论文也这样做。其中一篇叫做主动阅读。嗯,它们基本上问 LLM 应该生成什么类型的东西?然后从中生成。有自我学习,来自这个 cartridge 论文,更像是问答,让模型测验自己。然后有这个重新措辞网络的东西。我不知道我的重新措辞网络的东西,他们基本上重新措辞了整个预训练数据集。所以这实际上是以一种令人惊讶的方式大规模奏效。嗯,还有很多这方面的工作。所以我对这个感到非常兴奋,我正在关注它。有一家名为 Daytology 的公司做得很好,它们正在生成高质量的合成数据。这只是直到最近 LLM 跨越某个阈值才可能发生的事情,它们能够生成足够好的数据来训练自己。哦,实际上还有一些很酷的东西。它不在幻灯片上。它叫做自适应语言模型,自编辑。它叫做 SEAL。S E A L。它们让模型生成什么数据来使自己变得更好。在一些受限的情况下,这实际上是有效的。所以这实际上相当奇怪。嗯,显然它不会无限期地工作,否则它们就会导致智能爆炸。但它能奏效的事实非常了不起,我认为值得关注。所以,关于这一部分的结论是,我们想将事物训练到权重中。我们可以生成大型合成数据集,这些数据集描述了非常小的数据集,而且效果很好。嗯,现在我认为这里的问题是,我们如何将信息注入模型?我认为之前我提到我们训练了所有参数,我们尝试了,结果非常糟糕。这是一个长期存在的问题。它叫做灾难性遗忘。嗯,即使在老式机器学习中,你训练一个模型来识别手写数字,然后你训练一个模型来识别房屋号码,它就无法再识别手写数字了。这是一个非常著名的问题。有很多理论和方法被提出来解决它,但没有人真正知道如何解决它。这非常非常困难。嗯,但我认为有一些简单的方法可以绕过它,在传统的范式中,我们有一个巨大的预训练的 child GBT Transformer。嗯,而不是重新训练整个模型,有几种不同的方法可以做到。我的意思是,第一个是重新训练整个模型。所以,我们正在训练的这些东西,我用蓝色突出显示。那就是,如果我们采用 Transformer 并更新所有参数,我们可能会忘记一些东西。嗯,还有另一个叫做前缀调优的,它很酷,你只训练 KV 缓存。嗯,我的意思是,我现在跳过细节,如果你有疑问可以问我。前缀调优很酷。嗯,另一种方法是,由于这些模型很多被称为混合专家,并且它们内部有一个 MLP 层,你可以添加 MLP 的另一部分,可以选择路由到并使用它,而且这相当可扩展。我认为人们尝试过。嗯,还有另一种方法是,你用一个叫做内存层的东西替换 MLP,它是一个大的查找表。我认为内存层非常好。让我停下来,现在说这个部分的演讲接近纯粹的推测。这些是存在的东西,有人会这样做,有人会使用其中一个,但我真的不知道正确答案是什么。嗯,另一个叫做 LoRA。所以,低秩适应。你可能听说过这个非常热门的话题。嗯,它们基本上训练一个小的,几个小的矩阵来适应线性层。所以,就像如果你的模型有 100 亿个参数,你可能训练 1000 万个参数来控制它。嗯,如果我们一起看它们,也许并不明显哪种方法效果最好。比如,ICL 只是把东西放进上下文。所以我们有上下文 rag,完全微调。我们可以做内存层,MLP カートリッジ,它是前缀调优,我们可以做 LoRA。我们也可以添加到混合专家中。我认为对我来说,这并不清楚,我也不确定哪种方法有效。比如,我认为主要的事情是,我们有一个巨大的模型,我们向它添加一小部分来控制它,并且只训练那些参数。这样我们就可以保留模型中的大部分信息。我认为这是最重要的部分。但我想在这次演讲的最后,我将只谈论我所认为人们在这个领域所做的事情,直到最后一分钟,然后你可以自己决定你认为正确的方法是什么。所以,让我们花点时间谈谈我们想要什么属性。我认为我们想要,我们希望我们对模型的更改非常小。比如,如果你为每个人提供一个模型,你实际上可以做到,但你必须使用这些参数高效的方法之一。如果你想为每个人微调一个新的 Kimmy,Kimmy 大约一太字节。它是万亿参数。它根本无法存储,更不用说服务了。嗯,我们想要一些抵抗遗忘的东西,就像我们说的。所以,如果有一个架构更改,既小又对当前模型影响最小,那将是很好的,因为当前模型工作得非常好。而且最好是高容量,我认为,比如,变化非常具有表现力,并且可以捕捉大量事实和少量参数是我们的首选,我们希望能够快速进行推理。嗯,作为一点题外话,你实际上可以快速做到这一点,使用很多,很多这些方法。比如,也许你们中的一些人看到过 Tinker,Thinking Machines 的新训练 API。它基本上基于这个想法,你可以为每个人服务一个模型,只要你使用 LoRA 并对 LoRA 进行批处理。而且实际上,从系统的角度来看,这是最有趣的。有方法可以训练它并分别训练每个模型,也有方法可以进行推理,而且成本几乎为零。嗯,这很有趣,因为基础模型没有改变,我们都共享同一个基础模型。所以,我将要谈论的所有想法都朝着同一个方向,比如 Tinker。嗯,我们可以考虑某些方法是否可能学习更多或遗忘更多。嗯,这是将 LoRA 与完全微调进行比较。所以,LoRA 对模型进行微小更改。完全微调更新整个模型。在两个不同的设置下,它们显示,比如,低在这里是紫红色或粉红色。粉红色的容量稍小一些。嗯,它基本上做得不如。至少当你进行 SFT 时,Loro 可以学到的东西少一点,但如果我们看它退化的程度,它遗忘得更少。所以这篇论文叫做“学得更少,遗忘得更少”,这是一个很好的发现。所以,比如,如果你想至少通过 SFT 教模型,并且你使用这些低秩或参数高效的方法之一,就像我描述的所有方法一样,它们会对模型进行微小更改,以至于它可能不像完全微调那样具有表现力,但它也不会破坏太多知识。嗯,这里有一些完全相反的结果。这是 Thinking Machines 的结果,他们认为 LoRA 和完全微调一样好,这很有趣,因为他们正在进行 RL。所以,这可能取决于训练机制,比如,如果你进行 RL,它可能会进行微小的更改,而且你可以使用 LoRA,你可以使用内存层,但对于 SFT,它确实需要存储大量信息,所以你确实需要进行完全微调。我认为这就是我的收获,我有一些论文,由于法律原因被屏蔽了,但很快就会发布。嗯,这里有一个来自我论文的结果,与此相关。所以,我们有一个微小的 LoRA,比 LoRA 更小。嗯,实际上已经存在 LoRA XS,然后我们制作了 Tiny LoRA,它更小。如果你在 GSMK 数学推理中进行 RL,你可以训练 14 个参数并获得 91% 的准确率,这真是太疯狂了。我认为,嗯,这有很多原因。比如,RL 进行微小的更改。我认为这个 Quen 模型可能在训练数据上有些问题。>> 你有一个单参数实验。>> 哦,是的,一个参数。它实际上学会了,它用一个参数提高了 5%。 [笑声] >> 很酷。>> 太棒了。>> 是的。是的。这是最小的。>> 是的。是的。你可以训练的最小的东西。它更像是你生成了很多随机投影,然后你用一个数字来控制它们,如果这说得通的话。比如,模型实际上变化很大,但唯一你可以训练和存储的是一个参数。嗯,我稍后会告诉你更多关于它的信息。嗯,但是的,这很酷。嗯,这是另一个结果,有点混杂,但我不太确定如何放置它。所以,如果你进行 KV 缓存调优或前缀调优,这篇论文认为前缀调优比 LoRA 好得多。我以前在 Meta 遇到过一些人。

在那里附属,尽管如此,他们认为 LoRA 的效果比前缀微调好得多。所以,我真的不知道,但我认为关键在于规模化时,什么最有效?我也不太确定,但我认为前缀微调是一个相当不错的选择,因为如今 KV 缓存非常常用,而且很多系统都围绕 KV 缓存构建。我认为关于思考机器的一件很酷的事情是,他们围绕着扩展 LoRA 设计了整个组织,这很棒,但目前在开源领域并不真正可行。比如,没有同时训练许多 LoRA 的内核。这非常复杂,而且需要很多人来完成。另一方面,前缀微调得到了很好的支持。嗯,最后我将快速谈谈记忆层。这是另一种将数据注入模型的方法,我认为这很好。这就像给 MLP 添加一个专家,但这个专家只是一个巨大的可微分查找表。所以,它确切的工作方式并不那么重要,但它只是将信息注入模型的一种不同方式。记忆层很酷的一点是它是可控的。因此,在这项由 Jesse Lynn 今年完成的工作中,他们精确地指定了记忆层的哪些部分会更新,并将其限制在一个非常小的数量。因此,他们的结果表明,记忆层实际上效果最好。所以,这里的记忆轴是遗忘,向下是坏的,向上学习是好的。所以,记忆层基本上不会遗忘,而且它们学习得差不多多。因此,我认为如果你想将信息注入模型,而你真的非常关心它们不要忘记任何基础信息,那么记忆层可能是个好选择。我 honestly 认为现在有很多相互矛盾的证据。比如,有些人认为 LoRA 很好,有些人认为前缀微调很好。这些人认为记忆层很好。我真的不确定,但我认为它会是其中之一。好的,太棒了。这就是训练部分到权重部分的结束。也许我实际上会停下来看看是否有人对不同的参数化有任何问题。是的。>> 哦,是的。是的。是的。来自我尚未发布的 yet 研究。>> 所以,你以前用过 SFT 吗?>> 是的。是的。稍后我可以向你展示 SFT 的结果。但是 SFT 的参数要多得多,简单来说就是多得多,比如一千倍或者什么的。你将这归因于奖励的稀疏性。>> 是的。是的。我认为大概是这样。比如,SFT 的学习信号就像在所有 token 上进行交叉熵,无论是否有思考的 token。这基本上是很多比特。然后 RL 只给你一个零或一个一。如果你做对了,而且你已经知道了,那么就没有信息。如果你做错了,你就会得到一个比特。所以,我认为因为 RL 如此稀疏且信息效率高,所以你可以用少得多的参数来完成。这实际上是我们论文的要点。>> 所以,在做完 SF 后,你没有做 GRPO 了吗?>> 不,不 SFT。我们只是做 GRPO 或 SFT,然后我们看看你需要训练多少参数才能达到同等的性能,而 SFT 需要更多的参数。>> 嗯,所以你在这里比较的是训练和 RAG,就像我们正在解决 RAG 中遇到的问题。所以,文档的数量也很重要吗?你有没有什么研究,比如,因为如果某个问题只有少量文档,RAG 会更好,还是训练会更好?>> 这是个非常好的问题。嗯,也许我们去最后一张幻灯片。所以,我认为问题是,好吧,你正在尝试将所有数据训练到模型中,但有些事情只发生一次。是的,我的意思是,我应该什么时候选择 RAG,什么时候应该选择像训练修复一样,因为每次我都有少量文档,训练可能不可行。>> 是的。是的。就像你的,也许你有些东西在你的数据中代表性不足,以至于它可能不会>> 数据经常变化,可能>> 你的数据变化很大。是的。也许短期内很难训练。嗯,是的。所以,让我指出,好吧,所以,显然我们总是会把东西放进上下文中,而且我认为我们可能也会一直使用 RAG。我认为,在很长一段时间内,你几乎无法想象任何一种情况,你只是在训练模型,从不使用 RAG。我认为你会两者都做。我认为,也许如果你有大量的文档,我不知道,也许你每天都会进行一次大规模的训练,然后在每次服务时也进行 RAG。所以,我真正想象的是,或者也许我的观点是,现在没有人这样做,人们会开始这样做的。>> 你有什么预测吗?比如,在一定数量的数据之后,训练会变得更有效率,更直接?嗯,不,我认为这种情况真的还很新,所以有很多分析的空间。我肯定会感兴趣看到关于信息频率如何影响权衡的分析,以及你需要多少数据才能使训练在经济上可行。这是个非常好的问题。>> 是的。嗯,你的建议是深入研究演示文稿的权重方面,使用微调模型进行补全任务,还是进行嵌入?>> 哦,是的,这是个好问题。嗯,不,我认为我所说的微调都是为了助手引擎补全。这是一个有趣的问题。你也许可以进行动态嵌入模型训练,但我想我这样想,真正的 10 倍改进将来自于训练到权重。你也许可以让 RAG 好 2 倍,如果你真的非常努力的话,但我认为它有很多根本性的问题,我不会花那么多时间去改进它。你觉得最根本的问题是什么,即使你的检索非常棒,你仍然>> 有点,我认为是分块,嗯,是的,>> 你只是检索到了一些你需要的东西,然后你无法真正地在所有这些东西之间进行推理。而且我认为在极限情况下,有些类型的数据,无论你怎么分块,你永远都得不到你需要的一切,如果这有意义的话。>> 是的,完全。>> 酷。是的。当你扩大所需的个性化程度时,你是否看到了任何根本性的限制?比如说,你有一个 B2C 产品,有 1 亿或 1000 万用户,为所有这些用户提供记忆。>> 你认为这不可行吗?>> 你说 1000 万用户。>> 是的。1000 万,1 亿比这还多。>> 是的。嗯,不,不,我认为这是可行的。比如 LoRA,也许你每位用户训练几兆字节。这并不疯狂,对吧?比如 YouTube 可能有几千兆字节,多次,>> 对吧?这是个好(清嗓子)点。持续更新很难。比如,在现实的短期内,可能更像是你每天更新一次。但我认为这是可行的。但你提出了一个很好的观点,我所描述的范式要昂贵得多。>> 此外,你确实考虑了在其他两个桶中还有很多事情可以做。你压缩了数据上下文。你将其放入 RAG 之前进行压缩。你将其分解成其他桶。你不必只使用 RAG,还可以使用 SQL 和知识将它们全部组合在不同的桶中,这解决了许多问题。>> 是的。是的,这是个好点。这里有三个优化轴。我想我们在这方面做得相当好,我们在这方面还可以,在这方面我们很糟糕。所以,我们将继续在这三个轴上改进。>> 是的。你的,我好像听到你说,也许它还没有定义,但你的直觉或猜测是什么,关于投资你的精力在这些优化上的决策边界在哪里,特别是在比如几年后,你可以做一些深入的研究,但它会便宜得多,快得多。嗯,你在哪里说,文档的数量不是一个数字,但边界是什么,你会考虑什么?是数据的时效性,它变化的速度,文档的数量,你的>> 是的,这是一个非常好的问题。我认为我所描述的范式尤其有效,当你拥有大量数据但尚未将其索引到 LLM 中时,它在那里提供了巨大的好处。我认为当你开始看到你的数据集更新稀疏,或者一些新数据进来,但数量不多,而且相当频繁时,你可能更倾向于在推理时使用更接近深度研究的方法。嗯,那个家伙有个问题>> 是的,你能更详细地解释一下合成数据生成吗?比如,假设你有 YouTube 这样的术语,比如专有数据,对吧?比如数百万份文档,在那种情况下,合成数据生成有什么帮助?>> 所以,你的公司有数百万份文档,你说,你想让模型>> 这更像是一个场景。>> 是的。是的。好的。>> 是的。是的。是的。嗯,>> 因为你不会只训练混合工作,对吧?>> 是的。尝试不同的。我认为你谈到了合成数据。>> 是的。是的。不,我认为合成数据生成可以解决这个问题。所以,我想,这取决于你的数据信息密度有多高。如果你有数百万份公司文档,我猜其中许多都具有相同的格式,并且只为数据集贡献了可能只有几个比特的全局信息。所以,你想考虑的是,是否存在一个函数可以为 LLM 生成一个好的训练数据集,教它关于我的数据?而且很可能存在。比如,你也许可以设计一种策略,它查看文档,找出每个文档的新颖之处,并创建类似问答对的东西,但这非常理想化。我认为很多人现在都在研究这个问题,但我没有一个全局的答案如何实际操作>> 现在我唯一能想到的解决方案是,嗯,你知道,生成问答,>> 对吧?是的。是的。我认为这也取决于你将要问的关于文档的类型。比如,你真正想要模型的是所有可能的问题,或者类似的东西,但我认为问答能让你走得很远。>> 酷。>> 是的。嗯,所以,通过这种方法,你提到了你训练模型的例子,比如 3M 的季度收益,比如 10-K、10-Q 文档。提示基本上会是什么样的?比如,在上下文学习中,是否还需要指定任何内容才能将你的数据带入上下文?>> 是的。嗯,所以,我认为问题是,如果你从我们之前提到的 3M 示例开始,并使用一些神奇的合成数据将所有这些训练到模型中,那么提示实际上是什么样的?>> 是的。>> 我认为实际上,如果你做得对,你根本不需要提示,你只需要问模型一个问题。没有系统提示,没有额外信息,如果什么都没变,它应该知道一切。比如,甚至在某些情况下,只有一个文档,模型就知道它是哪个文档,所以你不需要指定你甚至在问一个关于文档的问题,它是隐含的,你知道,所以,这取决于你如何设置它,但我认为在理想情况下,根本没有提示。>> 是的,我并不清楚信息是否最好存储在模型中。为什么你会有那个,你有什么,>> 好问题。>> 所以他说,信息不一定需要存储在模型中。是的。是的。这是个好问题。我认为,我并不是说将信息存储在权重中是最好的。我想说的是,这能让你获得很多东西,而我们现在却没有利用它。>> 而且一旦你达到像 GitHub 仓库那样的规模,你可能有数百万个 token,这非常昂贵。所以,至少这是最便宜的实现方式。关于我们是否可以生成合成数据来做得比上下文更好,这是一个难题。我认为这是研究,你知道我的意思,更便宜吗?比如,如果你有一个一百万 token 的提示,你可以把它压缩到权重中,然后生成一个模型,在没有提示的情况下给出相同的输出,然后推理成本就更低了。我有一个之后,没有对抗性数据。>> 这是个非常好的问题。我以前从未想过。嗯,我认为这可能非常困难。比如,如果你在训练用户数据,而且你有一个用户想破坏你的系统,而你从他们的输入中生成训练数据,那么很可能有很多安全风险。而且,我想在这种情况下,如果你服务的是同一个用户模型,而它不再工作了,那不是你的问题。但一旦你开始聚合来自用户的信息,我敢打赌这会变得很困难。我敢肯定,ChatGPT 也有同样的问题,有些人总是点击向下而不是向上,试图(笑)>> 研究(哼哼)它在地理上按国家划分。所以,一些文化倾向于>> 所以(笑)文件中的数据。>> 这很有趣。>> 是的。嗯,所以,也许(清嗓子)稍微考虑一下这种东西的实际实现。嗯,尤其是在版本控制方面,你提到了 GitHub 模型,你随着时间的推移不断微调。假设你的公司刚刚更改了一项政策,而这只是一个(哼哼)一句话。我们遵守某项规定,我们不再遵守了。>> 这来来回回。你是否会从基础模型开始,然后找到它,或者回到那个已经很好地代表了它的模型?你只需要改变那一个小的东西,然后你知道,这与幻觉是如何紧密相连的,这也就是为什么我们使用全上下文来避免这种情况。你对此有什么看法?是的,我认为,所以,所以他的问题是关于当你开始对模型进行多次更新时会发生什么,特别是当你遇到冲突信息时。我认为,最佳的合成数据策略是在训练过程中以某种方式解决这个问题,甚至可能,如果几天前有一些文档不再相关,你可以直接删除它们,但我不知道如何>> 关于我们如何在同一时间给予更多关注,比如,如果信息与我正在进行的预训练或我正在提供的正面文档相冲突,但我想从我的文档中获得更多偏好,我们正在通过提问来做到这一点,从地面真相中,那么它将如何取代这种情况?>> 我不确定我是否理解这个问题。>> 对不起。>> 我不确定我是否理解你的问题。>> 我不确定你是否理解我的问题。>> 所以我的问题是,我们有,我们正在提供给它的训练数据,它与预训练数据相矛盾,它是冲突的。现在,在提问时,在推理时,我想更偏好我的数据,我不需要预训练信息,这就是我们使用 RAG 的原因,我需要来自我的地面,我正在提供的上下文的输出。>> 所以,我们如何在训练中实现这一点?我认为我提出的范式具有与 RAG 相同的所有限制。我不确定这是否回答了你的问题,但比如,如果,也许在他所说的场景中,他说过某件事很多次,然后事实证明并非如此,RAG 会检索到它,而在最愚蠢的设置中,它也会存在于训练数据中。所以,我认为必须解决同样的问题。>> 你做过任何关于用户参数的联邦微调的研究吗?>> 你在这方面做过任何研究吗?>> 不,不,不,不,不是真的,但我认为这是一个有趣的机会。所以,回到过去,很多人都对你可以共享梯度并在多台机器上训练同一个模型这个想法感到非常兴奋。这就是联邦学习。我认为,它之所以困难,部分原因在于现在的模型太大了,网络成本太高了,而且因为我主张你只需要训练一百万个参数而不是一万亿个。它可能会重新发挥作用。所以,我认为这是一个非常好的主意,尤其是在 RL 领域,你花很长时间做很多工作,然后很少进行梯度计算。所以,我认为它可能会回来,而且考虑它很聪明,但它还没有真正实现。嗯,也许我再问两个问题。是的。去。>> 嗯,所以你关于在信息中训练的论点似乎与 Karpathy 关于推理引擎的观点相反,比如将模型的纯粹的智能方面提炼成一个二十亿参数的东西。嗯,嗯,而且我认为那里有一些重叠,比如,律师并不记得整个法律法规,但他们知道如何使用可用的工具来找到他们需要的东西。所以,我认为其中一部分是这两种事物的结合,你正在进行特定任务的训练,比如用这个相对较小的推理大脑来了解它需要在哪里找到可能过时或,你知道,我是否在正确的轨道上?>> 是的。是的。所以,我认为可能有人说过,“哦,我们能拥有的最好的模型就是非常小的,一无所知,但能很好地使用工具。”或者类似的东西。我想我提出了类似的想法。我说模型知道得太多了。我认为每个人都同意,模型不需要知道塔吉克斯坦最小省的首府,至少在大多数用例中,比如在我的一生中。>> 它不需要记住,你知道,加密密钥。>> 是的。但我认为,这是一个非常哲学的问题,但我认为,创造一个一无所知的模型非常困难。所以,我更主张使用专门的模型,它们擅长你关心的事情,但对其他事情很糟糕,而不是主张一个对所有事情都很糟糕的模型。>> 好的,最后一个问题。>> 是的。你是否做过关于信息的时间元素的任何研究?不,但我认为这是首先要考虑的事情之一,比如,好吧,如果你有来自第一天、第二天和第三天的信息,你是直接将所有东西连接起来,还是按顺序训练,就像你问的那样,还是你训练多个模型并将它们合并?我实际上不知道,但这很好。所以,现在我正在处理与此相关的大量问题,思考这个问题很多。嗯,我和另外几个人一起创办了一家公司,嗯,这是我们正在做的研究。如果有人认识住在旧金山并且是优秀工程师的人,并且你认为他们对此感兴趣,请告诉我,或者给我发邮件。或者如果你对使用这种东西感兴趣,给我发邮件。那将是太棒了。>> 是时间的东西还是>> 不一定,我的意思是,这基本上都是。我想说,嗯,试图构建你可以教东西的模型。好了,非常感谢你的邀请。这太棒了。 [掌声] [音乐] >> [音乐]