Ming-Yu Liu 谈 Cosmos 3:物理 AI 如何跨语言、视频与动作学习
点播放,字幕跟着声音走
Subtitles follow the audio
逐句文字稿
点任意一句,从那里开始听
正在加载字幕…
-
这辆车正在做一个转弯。
-
你能想象出这辆车的行驶轨迹和生成的视频吗?你猜怎么着?
-
那条路从来没有被拍摄过。
-
它是Nvidia的Cosmos 3生成的。
-
它能读取视频,能模拟道路,还在学习怎么处理物体。
-
Ming-Yu Liu负责这项研究,本期节目是与Nvidia的付费合作。
-
那么,Cosmos把文本、视频、音频和动作作为输入。
-
我们先从最简单的情况说起。
-
作为模型,视频里发生了什么?
-
视频里有几辆车?
-
视频里的机器人是否成功完成了动作?
-
好,有三辆车,机器人成功地把苹果拿起来放进了篮子里。
-
当你有视频和文本输入并生成文本时,它就变成了一个视觉语言模型。
-
那我们为什么不把它反过来呢?
-
模型不再描述场景,而是开始生成场景。
-
我们把Cosmos Dreams定义为一套构建闭环模拟器的技能,不只是用于自动驾驶。
-
我可以雇一百个司机,开一百辆车,去不同的路口,看看哪个方案效果更好,或者我可以用这个模拟器来验证准确性。
-
你不再受车队规模的限制。
-
任何时候你需要做大量测试,只要有计算机,直接启动就行。
-
好,那如果我们把同样的思路用在更难的问题上,比如机器人,会怎么样?
-
你知道,导航的时候,你不希望你的物理设备碰到别的东西,但操作任务需要各种各样的交互。
-
有交互的时候,就会有缓冲。
-
操作物体的时候,可能会有形变。所以这更有挑战性。
-
我们会达到一个状态,能够用神经模拟很好地处理这种复杂的操作。
-
一旦达到那个状态,你就可以用这个模拟器来测试你的机器人策略。
-
好,所以一个模型,Cosmos 3,干三件事。
-
在机器人领域操作物体就是未来。这非常令人兴奋。
-
所以你能看到,你面对的是一个非常多样、多功能的模型架构。
-
而且我们现在把动作当成一等公民,这意味着模型真的可以采取一个动作,然后它下一个观察结果可能就是由它之前做的事引起的。
-
我们从语言模型开始。
-
我们要么自己从头训练它,要么拿现有的开源模型,对吧?从语言模型开始。
-
它对语言结构有基本的理解,你懂的,能理解语言。
-
然后我们有一个视觉编码器,可以接收视频或者一组图像作为输入。
-
然后我们把这个视觉编码器连接到大型语言模型上。
-
把视觉编码器连接到语言模型,我们就差不多构建出了一个视觉语言模型,对吧?
-
有时候你也可以直接从一个预训练的视觉语言模型开始,好吧?
-
现在,这个语言模型是以自回归的方式运行的,我们一次处理一个token,对吧?
-
好,它学会了把视觉输出连接到语言空间。
-
它用语言思考,它解释它看到的东西,对吧?
-
所以你就有了一个视觉语言模型。
-
好,现在我们拿这个视觉语言模型,用预训练好的权重,去初始化一个生成器,对吧?
-
关键的一点是,这个视觉语言模型是自回归的,而我们的生成器其实是扩散模型,是双向的。
-
现在这个双向的生成塔学会了生成视频、动作和音频。
-
在这个塔里,每个token都会关注其他所有token。
-
所以当你生成视频或动作时,它生成的那一块内容是连贯的。
-
每一次生成里,这一块内部的信号都是连贯的。
-
它也和视觉语言模型那部分区分开了,就是那个自回归塔,应该叫自回归塔。
-
所以它也能理解指令,知道你想生成什么。
-
而且在生成器的训练里,有两个阶段。
-
预训练,学基础的东西,然后中期训练,我们加入动作。
-
在你看来,什么是世界模型?
-
这是个非常有挑战性的问题。
-
我觉得早些年也有类似的情况,人们试图给AGI下个定义。
-
我记得是几年前开始的,但直到今天,大家对AGI是什么还是没有共识,对吧?
-
每个人都有自己的定义。
-
我觉得世界模型也会是这样,对吧?
-
所以我认为世界模型是一组有用的工具,对吧?
-
我们对某个东西建模,是因为我们想达成某个目标,对吧?
-
比如,可以是预测未来,也可以是理解为什么会发生这件事。
-
机器人学里有三种重要的建模,四种动力学,就是给定起点和采取的动作,未来会怎样,预测接下来会发生什么。
-
逆动力学,就是给定视觉上的变化,推断出采取了什么动作。
-
还有策略,机器人该怎么做才能完成任务?
-
我们把音频、动作、视觉这些不同的模态组合在一起,它们可能运行在不同的时间尺度上。
-
你怎么让它们都运行在同一个时间尺度上?
-
不同的信号有不同的频率。
-
就连视频,帧率也不一样。
-
高速视频或者低速视频,音频呢,也有不同的赫兹,动作也不一样。
-
所以我们有一个时间位置编码方案,基本上把所有信号都归一化到同样的单位,
-
同样的……这样当token代表信号中不同的时间块或者不同的特定时间块时,就能知道哪些其他token处在同一个时间点上,也能知道不同时间点之间的相对距离。
-
所以这是让这个统一模型能work的关键部分。
-
处理音频、视频和动作,它们的频率都各不相同。
-
你刚才讲到这些不同的模态,前向动力学、逆动力学和策略,都在同一个模型里。
-
它们到底是怎么互相促进的?
-
我们训练模型的时候,把它们放在一起,对吧?
-
然后我们给它一个信息瓶颈。
-
你只有这么多的容量来展开所有这些。
-
这些都是在试图……就是从视频的视觉观察到动作。
-
所以在世界动作模型里,你有一个测试指令,说明你想达成什么,这是你观察到的东西,然后你开始生成动作和可能的输出。
-
而可能的输出就类似于前向动力学。
-
当你输入动作,输出可能是什么?
-
在动力学里,当你有了这种视觉上的转变,动作可能是什么?
-
这也跟世界模型里发生的情况类似,对吧,你有视频和动作,还有它们之间的关联,对,所以我觉得这三个东西,它们本质上都是在试图捕捉观察和动作之间的关联,只不过它是
-
一个不同的切片、不同的视角,对,而且一旦你加上信息瓶颈,加上容量限制,你知道,这个模型……
-
而且我们在论文里的结果表明,这里存在协同效应,一个确实能帮助另一个。
-
而且我觉得可以说,训练数据上是有点不对称的,对吧?
-
所以有大量人类生成的视频数据,而动作数据要少得多。
-
但你会得到这种模态之间良性的迁移。
-
但模型能知道什么时候不该迁移吗,什么时候迁移可能是有害的?
-
我觉得模型其实并不知道,就像你说的,我们有大量的第一人称视角视频,对吧,第一人称视角,两只手去完成某些任务,而我们有非常少量的,肯定更少量的
-
机器人视频,你知道,机器人也有头部摄像头,你知道,夹爪摄像头,你知道,看它完成某些任务,对吧,所以我觉得这更多是关于不同具身形态之间共享的词汇表。
-
所以人或者机器人看起来像人,对吧?
-
人手怎么操作一个物体,那种视觉模式,视觉和动作的关联,人怎么操作一个物体,那个模式,你能看到它和机器人操作物体的方式非常相似,
-
尽管动作空间并不精确对应。
-
一旦你把一组动作关联起来,模式是相似的,就更容易泛化到另一组。
-
而且它还能给你,当你把几种不同的具身形态纳入进来,它也能帮你泛化到没见过的具身形态。
-
因为我是说,人形机器人看起来会像人。
-
也许有些手更大,有些手更长,但它不可能完全一样,对吧?
-
所以,夹爪也可以不同,但你知道,功能也是相似的。
-
关键其实就是那个模式,视觉观察和动作之间的关联,对吧?
-
而从一种动作、一种具身形态迁移到另一种具身形态,我觉得相对来说更容易。
-
显然,其中一个失败模式就是任务定义得不够明确。
-
我觉得系统二才是关键,它能把模糊的测试变得更具体,好让系统一去执行。
-
是啊,这很有意思,因为我在想,我们是想把这技术用在安全攸关的环境里,对吧?
-
有些任务本身就挺模糊的,但估计我们可以加上一层层的,你知道,也许我们并不完全清楚该怎么把要做的事定义清楚,但我们可以加上一层层的测试和检查,还可以做红队测试,让它随着时间不断改进。
-
你给一个任务,它会跟LLM智能体差不多,对吧?你给一个任务。
-
智能体或者说模型最开始的那次调用,是要找出一串需要完成的任务,对吧?
-
然后它会一个一个地执行,每执行完一个,就检查一下是不是完成了。
-
到了某个节点,可能会出现需要做选择的情况,对吧?
-
那么,好,我该做这个还是那个,对吧?
-
我觉得这就要求我们从系统层面来看待这些机器人任务,稍微高于模型层面一点。
-
你得有一套框架,把各种资源汇集到一起,不管是过去的记忆,还是你能用的工具。
-
所以我感觉,看待物理任务的方式会变得更复杂。
-
有一件事我们聊得还不够多,就是把Cosmos本质上当作一个模拟器来训练策略。
-
我就在想,这样做会不会有一些潜在的问题,因为你知道,在强化学习里存在仿真到现实的差距。
-
会不会出现这样的情况:策略可能学会去利用模拟器内部的一些特性?
-
是啊,有可能。
-
我对这个神经模拟器进展的看法是,我觉得一开始,它会更多地用于被动验证。
-
正向验证是这样的任务,你知道,如果你是做模型的,任何一个模型错了,你都会有一大堆检查点。
-
你可能会做版本研究,然后每一个,你知道,每一个变体,你都会有很多检查点。
-
那你怎么知道哪个更好呢,对吧?
-
理想情况是把每个策略都部署到真实机器人、真实环境里,去测成功率,对吧?成功率。
-
在自动驾驶里,大家也是这么希望的,对吧?
-
每次你更新驾驶策略,你怎么知道它管用呢?
-
所以你得有一队司机,开到各种不断变化的路况里去,看看这个策略行不行,对吧?这太贵了,检查点又那么多。
-
所以就是真实世界和真实司机的部署。
-
你让策略直接和世界模拟器交互。
-
而世界模拟器在推演结束时,你可以衡量这个测试有没有完成,然后你就有了成功率。
-
如果世界模拟器——也就是你知道的、新的世界——测试出来的成功率,排序能保持住。
-
你不需要它们很精确。
-
你只需要知道在神经模拟器里,策略A比策略B好。
-
而很可能在真实世界里,策略A也会比策略B好。
-
你只需要这个排序保持住。
-
有了这个,你就能快速缩小需要做真实部署的检查点范围。
-
这能大幅提升你的开发速度,帮你更快找到更好的策略。
-
而且在这种被动验证里,你并不是直接用视觉输出、用推演结果去训练模型,对吧?
-
而且这个模型,我是说,大规模语言模型上发生的事,在世界模型上也会发生。
-
我们会看到世界模型快速进步,对吧?
-
所以甚至在它成熟到能给被动模型提供训练数据之前,模拟器就可以用来做被动验证。这就是我的看法。
-
好,那我们现在回到你问的问题。会有钻空子的情况。
-
钻空子会发生,你知道,就算你用深度学习,只要存在某种模式、某种可以被利用的东西,它们就会钻,不然就太简单了。
-
所以我觉得,新的模拟器会被钻空子,别的模拟器也一样会被钻空子。
-
而且我认为,等我们到了那个阶段,应该会有办法对模型训练做正则化,确保那些东西没法被利用。
-
所以具体用什么方法,我还说不准。
-
我觉得这也是一个非常令人兴奋的领域。
-
我就是相信,人们会找到办法的。
-
对,还有关于把 Cosmos 当作老师、本质上是给策略当老师这件事,你们围绕这个有一整套配方,你应该讲讲,但有意思的一点是,它能想象出那个大家都心知肚明却没人提的“房间里的大象”,
-
也就是那些相当不自然、在训练数据里出现频率会很低的东西。
-
你可以想象出这些,但你也可以有这种自适应系统,可以先做教育,然后随着时间推移不断改进策略。
-
Cosmos 当老师,所以在 Cosmos 里,对,我们想用三种方式帮助整个生态。
-
更好的数据、更好的环境、更好的起点,对,所以我们相信,Cosmos 模型,只用一个模型,把视频、动作、测试连在一起学习共享表征,是成为一个策略模型的很好的起点。
-
这不只是理论,我们实际上在 ZOE 数据集上对 Cosmos 模型做了后训练,还拿到了抓取放置策略的结果。
-
原因,我是说,我们的直觉是,如果我们能很好地预测像素动态,又能学到像素和动作之间的关联,那就会帮你构建出一个策略模型。
-
随着我们不断推进 Cosmos 模型,引入更多具身形态,它会成为一个越来越好的起点。
-
而适应一个新具身形态所需的投入也会更少。
-
嗯,也许你应该讲讲那些配方,因为这真的能帮到家里的听众快速上手。
-
我们在把 Cosmos 打造成平台的同时,也在我们的 Cosmos 仓库里提供了后训练配方。
-
这样用户、开发者就能利用配方,从 Cosmos 模型出发复现我们的结果。
-
我们期待在那里加入更多配方,也许还有技能来帮你提供数据,然后有智能体帮你微调 Cosmos,做你想做的事。
-
所以就是想用这种方式服务社区。太棒了。
-
你能跟我讲讲 Cosmos Dreams 吗?
-
我们把 Cosmos Dreams 定义为一套技能,用来构建一个云端闭环模拟器,不只是给自动驾驶用的,而是适用于各种具身形态,对吧?
-
这其实就落到了机器人领域里传统意义上的世界模型定义,对吧?
-
输入动作,然后输出未来的观测,也就是前向动力学。
-
你不再受限于自己车队规模的大小,对吧?
-
任何时候你需要做大量测试,只要有算力,直接启动就行。
-
而且它还能帮你应对需求的高峰。
-
自动驾驶,非常有用。
-
我觉得这在机器人领域同样成立。
-
我认为现在一个模型已经足以应付导航任务了。
-
在机器人领域,另一个挑战是操作任务。
-
导航的话,你不希望你的物理设备碰到任何其他场景。
-
但操作任务需要各种各样的交互。
-
只要有交互,就会有摩擦。
-
而且物体被操作时还可能发生形变。所以这更有挑战性。
-
我对整个领域的这股热情非常乐观。
-
在世界模型方面,加上深度学习研究和算力的持续进步,我们会达到一个状态,能够用神经模拟很好地处理这种复杂的操作任务。
-
一旦到了那个状态,你就可以用世界模拟器来测试你的机器人策略了,对吧?
-
而且你知道,自动驾驶汽车今天需要大量的正向验证,因为汽车是在我们人类的空间里行驶的,对吧?
-
所以我们需要它们足够安全,对吧?
-
所以当机器人,当人类拥有的机器人达到要部署到很多人家里这个状态时,安全性就更加重要了。
-
你不会指望在自己家里看到一辆车吧。
-
但一旦人形机器人到处都是,你就会期望身边有机器人围着你,也许还有你的孩子、你的宠物,对吧?
-
所以你确实希望它们足够安全。
-
那你怎么知道呢,对吧?
-
所以作为人形机器人的开发者,你怎么确保你的策略每一次迭代,或者说整个系统都足够安全呢?
-
你需要策略验证。
-
而且你不会有足够的空间去搭建各种各样的厨房、各种各样的任务场景。
-
所以我觉得用Neos模拟器是唯一能给你所需开发速度的办法。非常酷。
-
你还有这个Cosmos 3 Edge模型。
-
所以它是在单台设备上运行的。
-
Cosmos模型有三种不同的尺寸。
-
我们有Super、Nano和Edge。
-
Super给你最高的保真度。
-
它是旗舰级模型。
-
如果你想要非常高的精度,又得考虑资源,那肯定选Super。
-
Nano介于两者之间,更小,更容易用你手头的各种GPU资源来部署。
-
我们要确保它能在边缘设备上运行得很好,比如Jetson、Thor、Orin或者DJI Spark。
-
我们做这个的原因,是想让世界模型留在机器人所在的地方。
-
这样你想执行某个动作时,就不需要往返数据中心。
-
我觉得到了真正部署的时候,这很重要,你可能没法指望网络连接好到能完成所有任务。
-
而且有时候它还挺敏感、挺关键的。
-
你得一次就把任务完成。
-
所以我们开发了Edge版本,让它足够小,但性能又足够强,能在那些边缘设备上跑起来。
-
而且因为模型更小,占用的计算资源也更少,所以很容易做微调。
-
之前我们有一套方法,能在一天之内微调Cosmos边缘模型,提升它的视觉理解能力。
-
所以我觉得这三个版本都会非常重要。
-
我还设想,将来做机器人开发时,它们可能需要以某种方式协同工作。
-
这是非常有挑战性的任务。
-
这种时候你可能就需要一个非常强大的模型。
-
就像喊人、求助一样。
-
而对于更简单的任务,你得马上完成。
-
这时候你就想依靠边缘设备上的那个模型。
-
那对于在家里的听众来说,他们去哪里能拿到这些模型、了解更多信息呢?
-
好,我们所有的模型都是开源的。
-
所有的代码,甚至一部分训练数据也都会开放。
-
模型和数据放在Hugging Face上,代码放在GitHub仓库里。
-
我们的主仓库是github.com/Emilia/Cosmos。
-
从那里你可以找到通往Hugging Face模型、数据集,还有训练脚本也就是后训练脚本的链接。
-
我们仓库里还有一些技能,能帮你的智能体快速上手Cosmos提供的东西。
-
我们做Cosmos是为了帮助整个生态,帮助各种各样的物理AI开发者。
-
一点小反馈,你知道,我会盯着我的邮箱,关注提交到Cosmos仓库的每一个issue,我们真的很想看到你们的反馈,好的坏的都行,
-
两种都非常欢迎,我们一定会让它越来越好。
-
Mingyu,能请到你上MLSD真是荣幸又开心,非常感谢你今天来参加。谢谢你,Tim。