跳到正文
原文
Hacker News· wondersky·· 9 天前精选AI 评分70

特斯拉Roadster用强化学习飞得比GPT-6

Post-training 4B model with RL to fly Tesla Roadster 21% better than GPT-6 Astra

AI 摘要

上周四,特斯拉新款Roadster从弯曲跳台跳下翻转后直立降落,并跳过Cybertruck,展示了未来飞行汽车的可能性。研究人员构建了强化学习环境,让DeepSeek V4.1 Flash、Muse Spark Open、Beam 1.0。

正文 · AI 翻译

上周四(10月15日),特斯拉新款Roadster从弯曲的跳台上滑落,最终翻倒、在空中翻转直立并着陆。随后它使用推进器跳过了一辆Cybertruck。事实证明,未来确实有飞行汽车。

Elon Musk on X, October 15: "Turns out the future does have flying cars", with a video frame of the Roadster flipping over a row of parked Teslas. 48K replies, 133K reposts, 834K likes, 78M views.

这次演示已经推迟了两周,"由于大风" (埃隆·马斯克在X上)。这让我们不禁思考:如果驾驶舱里有语言模型,这辆车在大风中会如何表现?

我们围绕一个飞行Roadster的物理模拟器构建了一个RL环境来一探究竟,将控制权交给LLMs,并加大了风力。我们让一些最新的最佳模型来驾驶它:DeepSeek V4.1 Flash、Meta的Muse Spark Open、Reflection的Beam 1.0、NVIDIA的Nemotron 3.5 Super VL、TypeSafe的Jev 1.14,甚至还有OpenAI的GPT-6 Astra.

这些模型被要求实时做决策,它们几乎每次飞行都坠毁:大多数模型需要1到6秒来回答,而汽车每0.2秒就需要一个新的动作。当我们暂停世界,让模型尽可能长时间地思考时,它们仍然输给了我们在风暴中用RL训练的4B模型.

风暴,33 m/s的风:DeepSeek,有无限时间思考,倾斜着降落并撞路。我们用RL训练的4B平稳着陆。

简而言之

  • 我们围绕一个带有四个空气推进器的飞行Roadster物理模拟器构建了一个RL环境,模拟了有阵风和两个特技:跳台翻转和跳过Cybertruck的空翻。LLM每0.2秒发出一个指令,而汽车持续移动.
  • 最新的开放模型无法实时驾驶它。 DeepSeek V4.1 Flash、Nemotron 3.5 Super、Muse Spark Open和Beam 1.0每个决策需要1到6秒,并且踢翻0%的空翻和3%以下的跳台翻转。GPT-6 Astra在计时中也着陆0%。
  • RL后训练使4B模型成为我们的最佳飞行员。 Qwen3-4B,训练成本约13美元,在0.09秒内回答,并能实时着陆90%的空翻。暂停世界让模型思考时,最好的开放模型DeepSeek V4.1 Flash着陆87%,其他开放模型着陆58到62%。即使GPT-6 Astra也只着陆74%。
  • 所有内容都是开源的,你可以在没有GPU的情况下飞行自己的模型 (试试看)。

Storm kickflips, 384 held-out flights per model. Open circles are runs with unlimited time to think. In real time, DeepSeek, GPT-6 Astra, Muse, Nemotron and Beam land 0%, and the RL-trained 4B lands 90%.

风暴空翻,每个模型保持384次飞行。实心圆圈是无限时间思考的运行。实时中,DeepSeek、GPT-6 Astra、Muse、Nemotron和Beam着陆0%,而RL训练的4B着陆90%。

观看模型如何驾驶汽车。 选择一个特技、风力等级和一个模型,在保留场景中重播相同的飞行。该完整页面还显示了每0.2秒的飞行员决策、模型所见遥测数据以及每个回复所需的时间.

四个空气推进器将汽车抬起,并在汽车翻倒时将其向下推

汽车是一个刚体,长4.5米,干重2000公斤,以500 Hz的频率模拟。升力来自汽车地板角落的四个冷气推进器。每个推进器能产生12 kN的推力,由一个压缩空气罐(每飞行110到170公斤)供能。它们直接从地板向外推进。如果左对推进器推力更大,汽车会滚动,如果前对推进器推力更大,汽车会俯仰

当汽车翻倒时,相同的推进器将其推向地面,这就是两个特技都很难的原因

汽车平地或侧翻时会受到更多的风

一辆车是设计成车头先行的。当它完全平放,或者风从侧面吹到它时,它向空气展示的面积会增加到五到九倍,因此风会把它吹得更远。靠近道路时风速较弱,并且平均风速上会叠加阵风。每一次飞行都会从三个随机方向中的一个获得平均风速,这些方向分为:轻风(最高14米/秒)、大风(14至24米/秒)或暴风(24至33米/秒)。

车轮可以承受4米的落差,但车顶不能触地

汽车可以用四个悬挂车轮或车身接触地面。当出现以下情况时,计为碰撞:

展示中的两个特技:一个跳跃翻转和一个跨越 Cybertruck 的踢翻

在斜坡翻转中,斜坡弯曲,汽车在10至14米的高度从台面上颠倒着离开,然后必须翻转正立并着陆。在踢翻中,汽车以50至94公里/小时的速度进入,越过一辆停放的Cybertruck,翻转完整的360度并着陆。

只有当汽车最终在14米长的道路上以四个车轮着陆,倾斜度在约20度以内,不再旋转,且没有发生碰撞时,飞行才成功。每个任务都会随机化速度、油箱中的空气、风和阵风,以及斜坡大小或卡车位置。保留的任务使用的是模型训练中未使用的种子。

模型看到的内容,以及它返回的内容

每次飞行开始时,模型会收到一份简报。它描述汽车、碰撞规则以及模型可以发送的五个命令,然后是任务。以下是某个保留的暴风飞行简报的任务部分:

之后,在模拟时间的每0.2秒,模型会收到一行遥测数据,并回复一个JSON对象。这是我们的训练Qwen 4B模型在飞行1.2秒时看到的内容,当时它正颠倒在卡车上方:

模型在0.15秒内回复了{"mode": "rotate", "axis": "roll", "to": 360.0, "lift": 1.0},这保持了翻转的进行。整个飞行共进行了19次回复:

时间

遥测数据显示的内容

模型的回复

回复时间

0.0 s

在道路上,卡车25.7米远(1.1秒内到达)

climb以7米/秒的速度

0.09 s

0.2至0.4秒

起飞,上升0.5米,然后1.2米高

climb再次以7米/秒的速度

0.09 s

0.6秒

2.3米高,卡车11.8米远(0.5秒内到达)

rotate翻转360°,提升1.0

0.15 s

0.8至1.6秒

翻转卡车:21°、95°、182°、267°、335°

相同的rotate,五次

0.15 s

1.8秒

6.7米高,翻转360°,卡车在后方16米

land

0.08 s

2.0至3.4秒

下降,然后两个车轮接触

land,另外八次

0.08 s

3.6秒

四个车轮在道路上,距离中线3米

coast

0.05 s

每行中的卡车部分还提供了当前速度下汽车到达卡车的时间以及超越它的剩余时间,因此模型不必自己进行除法计算。本文中的每个LLM都看到相同的数据行,手写的飞行员也读取相同的数字。

五个命令是coast(所有推进器关闭)、climb(在给定的垂直速度下保持水平)、hold(保持给定的倾斜和俯仰)、rotate(绕一个轴旋转到总角度,并在其上制动停止)和land(调整水平并轻柔下降)。模型在每次回复中选择一个命令及其编号。飞行计算机随后将这个命令转换为四个推进器的推力,每秒50次,直到下一个回复到来。

模型思考时汽车不会停止

如果模型需要2秒来回复,汽车将在旧命令下飞行十个0.2秒间隔,然后新命令才会生效。我们计算每个回复的端到端时间。只有第一个决策是不计时的,就像起飞前的计划一样。

我们选择了0.2秒,因为空翻的滚动大约需要一秒钟,并且必须在正确的时刻几十分之一秒内开始。在一秒钟的决策间隔内,无论是模型还是脚本,飞行员都无法计时。为了将判断与速度分开,我们还以另一种方式飞行每个模型,即模拟器在每次回复到达之前暂停,以便模型有无限的时间思考。

Halfoftherewardisforacleandelanding

对于RL,奖励从0到1。它为高度、越过卡车、旋转和着陆质量部分计分,然后成功着陆得0.4分,干净完成(软着陆,留有空气,居中在道路上)得0.1分。

一个手工编写的飞行员表明这两个特技都可以飞行

在训练任何东西之前,我们想知道这两个特技是否可以用这五个命令来飞行。所以我们手工编写了一个飞行员:几十行if-then规则,读取相同的遥测数据,并通过相同的0.2秒接口发送命令。例如,在空翻中,当卡车距离1.1秒时,它开始爬升;当汽车在卡车屋顶1.4米以上时,开始滚动;向任何侧向漂移倾斜,当汽车越过卡车时着陆。

手工编写的飞行员立即回答,并看到与LLM相同的输入。它着陆了每个轻风斜坡翻转的98%,但只有61%的轻风空翻,在风暴中只有61%的空翻。我们在本文的其余部分称其为脚本飞行员。

脚本飞行员在轻风中飞行两个特技。

我们飞行了四个开放模型(DeepSeek V4.1 Flash、Muse Spark Open、Nemotron 3.5 Super和Beam 1.0)、风暴中的GPT-6 Astra,以及Jev 1.14,这是一个为快速决策构建的模型,它从命令菜单中选择而不是编写JSON。每个模型都飞行了我们训练的飞行员相同的保留飞行:轻风和风暴中每个特技192次,风暴中384次。所有运行都使用温度0和每个模型的默认推理设置。我们通过OpenRouter调用开放模型,Nemotron、Muse和Beam分别固定到一个提供商。

有思考时间,模型做出了好的决定

当模拟器等待每次回复时,四个开放模型在轻风中很好地飞行空翻。DeepSeek V4.1 Flash着陆98%,Muse、Nemotron和Beam着陆72%到82%。

风使其更加困难。在风暴中,DeepSeek降至87%,Muse降至62%,Nemotron降至60%,Beam降至58%。GPT-6 Astra着陆74%的风暴空翻。

在计时器上,它们没有空翻着陆

当汽车移动时,四个开放模型没有空翻着陆。它们的中间决策需要1到6秒,因此典型的命令在需要后5到29个间隔后到达。在实时运行中,有16个飞行并行,回复仍然更慢(DeepSeek的中位数是2到3秒)。

GPT-6 Astra每个决策大约需要2秒,并且实时没有着陆其768次风暴飞行。在同一个时钟上,我们训练的4B着陆了90%的风暴空翻。

DeepSeek V4.1 Flash在同一飞行中,两次。在左侧,模拟器等待每次回复,汽车着陆。在右侧,时钟持续运行,回复迟到,汽车坠毁。

回答更快并不能解决问题

在我们的第一轮中,关闭推理,DeepSeek在0.3秒内回答,但做出了更差的决定,Muse和Beam在低努力下仍然每个决策需要大约2秒。Jev回答大约需要0.17秒,足够快以供时钟,但它实时只着陆2%的风暴空翻。一个飞行员必须快速回答并做出好的决定。

Median decision time against storm kickflip success. Jev and the RL-trained 4B both answer inside 0.2 s, and only the 4B lands most flights (90%).

风暴翻转成功的中位决策时间。Jev 和 RL 训练的 4B 都在 0.2 秒内做出回答,只有 4B 成功着陆了最多的飞行(90%)。

汽车倒着飞出甲板 10 到 14 米高,一个简单的计划有效:翻正,逆风倾斜,然后刹车着陆。在模拟器暂停时,大型模型进行飞行。Muse 着陆 88 到 97%,DeepSeek 大约 80%,GPT-6 Astra 383/384 次风暴飞行。

按时间计算,它们都没有超过 3%。第一个命令通常是翻正,这是正确的,但坠落时间不到 2 秒,下一个回复在汽车已经上路后到达。

实时进行斜坡翻转。DeepSeek 的第一个命令,翻正,是正确的,但它的下一个回复在汽车已经上路后到达。右边,训练的 4B 每 0.2 秒回答一次并着陆。

斜坡翻转,分享那片土地

微风

大风

风暴

Qwen3-4B,未训练(实时)

100%

99%

85%

Muse Spark Open,无限思考时间

97%

92%

88%

DeepSeek V4.1 Flash,无限思考时间

82%

78%

79%

Beam 1.0,无限思考时间

72%

72%

68%

Nemotron 3.5 Super VL,无限思考时间

67%

56%

50%

DeepSeek V4.1 Flash,实时

1%

2%

3%

Muse、Beam 和 Nemotron 实时着陆 1% 或更少。

未训练的 Qwen3-4B 在 0.07 秒内回答并着陆 85 到 100% 的斜坡翻转,但它从未成功着陆踢翻。像 Jev 一样,它的速度足够快以满足计时要求。不像 Jev,它是一个我们可以训练的模型,所以这是我们开始的地方。

训练后的 Qwen3-4B 飞行员 #

我们从 Qwen3-4B-Instruct-2507 开始,使用一个秩为 64 的 LoRA(小型的附加权重在基础模型冻结时进行训练)。训练代码是 SkyRL,一个开源的 RL 库。最终模型大约需要 4 个 GPU 小时的训练,或 13 美元。

一个热启动,然后 60 步的 RL

训练有两个阶段:

  • 热启动(2 小时 20 分钟): 在成功着陆的飞行上进行监督微调:每个特技 64 个脚本化的微风飞行,加上 350 个 DeepSeek V4.1 Flash 在模拟器暂停的训练种子上成功着陆的风暴踢翻。我们训练一个 epoch,损失仅限于飞行员的回复。大部分时间用于将优化器状态从 GPU 移动,以便模型适合 GPU 内存。
  • RL(1 小时 35 分钟): GRPO 多次执行相同任务,并将模型推向超过小组平均值的尝试。每 60 步中的每一步飞行 16 个任务,每个任务 8 次飞行,跨越三个风速级别。每 0.2 秒的决策是一个对话回合,奖励是整个飞行的奖励。训练器与飞行模型的 vLLM 服务器共享 GPU。

我们每 5 步保存一个检查点,使用单独的验证种子选择一个,然后对保留的种子飞行一次。配方本身来自多轮实验,这些实验在验证种子上评分,我们为这次最终运行保留了测试种子。

RL 训练的 4B 实时着陆风暴踢翻。

本节其余部分是我们如何得到这个配方的。

为什么单独的 RL 从未学会踢翻

第一次运行,从未训练的模型开始的 RL,在 10 步内学会了斜坡翻转。踢翻奖励从 0.07 开始并保持在同一水平。在 68 次踢翻决策中,66 次是翻滚,22 次中的 21 次在 t=0 时车轮仍在路上,这使汽车的车顶朝上。

一组中的 8 次飞行都以相同的方式坠毁并获得了相同的奖励。GRPO 通过比较组内的样本进行学习,所以当它们都相同时,它没有任何参考依据。

训练前后同样的顺风飞行。未训练的Qwen3-4B从轮子着地开始翻转,最终侧翻。模仿和强化学习后,它先爬升再翻转。

我们尝试了两种廉价的解决方法。首先,我们在简报中增加了一条说明,即路上滚动会导致车辆侧翻。这使得起始动作变成了最大升力的滚动,但仍然以车顶结束。

其次,我们在脚本飞行员完成起始动作后才开始一半的练习飞行(一种反向课程,借鉴自机器人学)。训练成功率上升到约70%,但t=0时的保留成功率仍为零,因为模型只学会了完成脚本飞行员开始的翻转。

暖启动使用了两个教师,每个都在它最擅长的风况下飞行

暖启动是有效的方法,而且大多数LLM强化学习配方从一开始就使用一个。困难之处在于选择模仿什么,因为我们拥有的两个飞行员在任何风中都不是全能的:

  • 脚本飞行员在顺风中表现良好,但在风暴中表现糟糕(61%的风暴翻转)。
  • DeepSeek在无限时间内表现良好,但它每个决策大约需要一秒钟,太慢了,无法实时飞行汽车。

因此,暖启动复制了脚本飞行员的顺风飞行和DeepSeek的顺风和风暴着陆飞行。仅凭暖启动,它就能在顺风、大风和风暴中分别着陆97%、93%和84%的保留翻转,这除了风暴外与DeepSeek非常接近。

强化学习进一步改进了教师所教的内容

强化学习从暖启动复制的内容开始,然后在教师最薄弱的地方进行练习。它在训练组合中的两个选择来自于阅读失败的飞行:

  • 风暴计数加倍。 风暴是获得奖励最困难的地方,因此训练组合中的风暴飞行次数是顺风或大风的两倍。
  • 练习缓慢进近。 早期的模型在顺风中的一种飞行方式输给了DeepSeek:一辆慢车(14到16米/秒),卡车大约在3秒外。它在land时刻与往常一样发送,大约在1.8秒时,最终降落在卡车上。在同一批飞行中,DeepSeek保持高度,直到遥测数据表明它已经飞过卡车,然后着陆。在最终运行中,一半的训练翻转是这些慢车、远卡车的情况,因此强化学习必须学会等待。

翻转。 保留测试飞行中着陆的比例,括号中的数字是着陆的数量。顺风和大风每个风级有192次飞行,风暴中有384次,并且每一行都执行相同的任务。

飞行员

顺风

大风

风暴

脚本飞行员(手写规则,即时决策)

98% (188)

83% (160)

61% (233)

DeepSeek V4.1 Flash,实时

0% (0)

0% (0)

0% (0)

DeepSeek V4.1 Flash,无限思考时间

98% (189)

90% (172)

87% (334)

Qwen3-4B,未经训练(实时)

0% (0)

0% (0)

0% (0)

Qwen3-4B仅模仿后:在教师的飞行中微调,尚未进行强化学习

97% (187)

93% (179)

84% (322)

Qwen3-4B仅模仿+强化学习(实时)

96% (185)

96% (184)

90% (347)

训练飞行员在0.09秒内回答(由vLLM服务,一次飞行一次),在0.2秒间隔内,因此它的所有命令都不会迟到。无论模拟器以实时运行还是等待,每批飞行都以相同的方式结束。

强化学习的部分体现在风暴中。仅模仿后的同一模型仅着陆了384次风暴飞行中的322次,而强化学习后它着陆了347次。逐次飞行测试,26次风暴任务仅在强化学习后才着陆,1次仅在未进行强化学习时着陆(精确配对测试,p < 0.000001)。在顺风和大风中,暖启动已经非常接近,强化学习使它们在两侧移动了几次飞行。

在无限制思考时间下,针对 DeepSeek 的逐飞对比测试:

  • Gale: 13次飞行中只有4B成功降落,1次 DeepSeek(精确配对测试,p = 0.002)。
  • Storm: 29次降至16次(p = 0.07)。4B领先,但p值超过了我们测试前设定的0.05阈值,因此不将 Storm 的领先视为显著结果。
  • Light wind: 2次降至6次(p = 0.29)。DeepSeek 表现稍好,脚本飞行员(188次降至185次)也是如此。

在无限制思考时间下,针对 GPT-6 Astra 的384次 Storm kickflips 测试中,4B 显著领先:它成功降落347次,而 Astra 为286次,即多21%。70次仅4B成功,9次仅Astra成功(精确配对测试,p < 0.001)。在 Storm ramp 测试中,Astra 略微领先,8次对1次(p = 0.04)。

RL 运行结果不一。重新运行相同配方在96次验证 Storm 飞行中成功85次至92次,我们保留的运行结果是其中最好的。重新运行很可能与 DeepSeek 降落 Storm kickflips 的数量相当。

Ramp flip. 测试集和规模与 kickflip 表格相同。

Pilot

Light wind

Gale

Storm

脚本飞行员(手写规则,即时决策)

100% (192)

100% (192)

96% (368)

DeepSeek V4.1 Flash,实时

1% (2)

2% (3)

3% (11)

DeepSeek V4.1 Flash,无限制思考时间

82% (157)

78% (149)

79% (304)

Muse Spark Open,无限制思考时间

97% (186)

92% (176)

88% (336)

Qwen3-4B,未经训练(实时)

100% (192)

99% (190)

85% (325)

Qwen3-4B 仅模仿后:在教师飞行数据上微调,尚未进行RL

100% (192)

100% (192)

96% (369)

Qwen3-4B 模仿+RL(实时)

100% (192)

100% (192)

98% (376)

在 ramp 测试中,模仿占主导地位。仅模仿后,4B 的飞行几乎与脚本飞行员完全一致,RL 在此基础上稍作提升。7次 Storm ramp 仅在RL后成功,无仅无RL成功的(p = 0.02),且8次成功是脚本飞行员失败的地点,反之则无。

风力越强,4B 的领先优势越大

Kickflip success by wind level for the scripted pilot, DeepSeek with unlimited time to think, and the RL-trained 4B.

按风力等级划分的脚本飞行员、无限制思考时间的 DeepSeek 以及RL 训练的4B 的 kickflip 成功率。

脚本飞行员在微风条件下近乎完美,在风暴中急剧下降,从98%降至61%。DeepSeek 表现更稳定,从98%降至87%,但每项决策需要约1秒时间。

训练后的4B 从96%降至90%。它在微风条件下略逊于两位教师,但在风力增强后超越两者。根据风力等级选择教师使其大部分工作完成。仅预热启动在风暴中成功率为84%,RL 将其提升至90%。

同一 Storm 飞行,由脚本飞行员(左)和RL 训练的4B(右)执行。脚本飞行器的车身在轮子接触地面前撞击路面,而4B 则以轮子着地。

失败飞行也呈现出不同特征。在风暴中,DeepSeek 的50次失败飞行中有34次以车身在轮子接触路面前结束。训练后的4B 的37次失败中有23次以14米跑道外的水平着陆结束。

在成功降落的 Storm 飞行中,4B 的飞行时间略短于 DeepSeek(中位数3.6秒对3.9秒)且燃油剩余更多(24%对18%),因此有推力稳定车辆。我们没有直接奖励短距离飞行。奖励机制是为软着陆、居中着陆且燃油剩余而设计,RL 自行找到了更短距离的飞行路径。

车辆下降过程中的倾斜程度,DeepSeek 与同一 Storm 飞行中训练后的4B 对比。DeepSeek 在车身接触路面时仍向风侧倾斜约20°。

1. 模拟器必须捕捉真实场景

我们在同一批次的飞行中两次测试了每个模型,排名发生了变化。在模拟器暂停时,DeepSeek V4.1 Flash 是我们测试过的最好的 kickflip 飞行员。当汽车在移动时,它什么都没落地。

大多数 LLM 基准测试会给模型足够的时间来回答,就像我们暂停的运行一样。如果你的模型必须在世界不断变化时行动,比如车辆或语音代理,那么它做决定所需的时间就是分数的一部分,所以要衡量它做决定的快慢以及做得好坏。

2. DeepSeek 在运行更少参数每个 token 时击败了更大的模型

在无限思考时间下,DeepSeek V4.1 Flash 以巨大的优势击败了我们测试过的所有其他开源模型:在微风中有 98% 的 kickflips,在暴风雨中有 87%,而其他模型为 72% 到 82% 和 58% 到 62%。它每个输出 token 只运行 16B 的 552B 参数。这是该组中最少的,除了 Nemotron 3.5 Super(12B 的 120B),远低于 Muse Spark Open(42B 的 816B)和 Beam 1.0(23B 的 501B)。所有飞行员中最好的仍然更小,经过 RL 后是一个密集的 4B。在一个如此狭窄的任务上,模型的训练方式比它每个 token 运行的参数数量更重要。

3. RL 使 4B 模型超越了它的老师

热启动复制了两个老师,每个老师在不同风力条件下都很擅长。经过 RL 后,在相同的保留飞行中,4B 模型在暴风雨中以 30 分的优势击败了脚本飞行员,在狂风中击败了 DeepSeek,并且在暴风雨中略微领先于它。它在不刮风的情况下没有击败任何一个老师,在那里两者都已经接近完美。

模仿使 4B 模型达到了老师们的水平,而 RL 在真实目标上使它超越了他们,在那里有改进的空间。在暴风雨中,这比单独的热启动多了 25 次落地,只有 1 次飞行是相反的。

4. GRPO 需要尝试在困难决策上有所不同

我们的第一次运行失败了一个很容易被忽视的原因。GRPO 比较同一任务的一组尝试。当所有八次都以相同的方式崩溃时,它们都会得到相同的奖励,模型什么也学不到。从飞行中的一部分开始练习将训练成功率提高到 70%,并将保留成功率保持在零,因为模型从未练习过开头的动作,这是最难的部分。一个简短的热启动通过使尝试在那个决策点上有所不同来解决了它。

显然,这并没有说明如何驾驶一辆真正的汽车。真正的汽车会使用传统的控制器,即使我们的脚本飞行员也会立即做出决定,而 LLM 不会。

这也不是一个机器人团队会这样构建飞行员的方式。像 Figure 的 Helix 这样的分层系统在 200 Hz 的 80M 参数策略之上运行 7B 视觉语言模型,频率为 7 到 9 Hz。大型模型选择做什么,小型策略每秒将这转化为 200 次电机命令。我们的堆栈有两层,50 Hz 的飞行计算机在 LLM 下方保持姿态和垂直速度,但我们的快速层是脚本的,不做决定。

我们故意将这个时间敏感的决策——何时开始滚动——留给语言模型,因为我们想知道 LLM 是否能在这个时间点上做出决定。我们还没有在模拟器上训练经典的控制器策略(例如,带有小网络的 PPO),我们预计它会几乎让所有东西落地。

RL环境及其中的所有车辆参数均为我们自己的假设,这是一个包含两种特技的环境。排除的意思是未看到的种子(风、速度、斜坡和卡车放置)属于同两种特技,不是新的特技。DeepSeek的风暴飞行是预热启动的一部分,因此在风暴中,4B模型与它从中学习飞行的模型进行比较。

最终模型大约花费了4个GPU小时(2小时20分钟的预热启动,1小时35分钟的RL),大约13美元(每H100约为3.39美元/小时)。找到配方需要更多的运行。我们以SkyPilot管理的作业方式运行每个训练运行和每个评估,一次最多六个,SkyPilot为每个作业找到一个空闲的GPU。当集群节点在运行中途出问题时,SkyPilot报告了卡住的作业,并在其他节点上重新启动它们。

训练、部署和评估作为一组Job Group并行运行

一个RL运行同时做三件事。它更新模型,使用最新权重生成部署,并对检查点进行评分。SkyPilot的Job Group将这些作为一组管理的作业启动,每个部分都在自己的硬件上:

  • trainer在其自己的H100上运行GRPO,并将新的LoRA权重每一步写入它共享的卷,供推理服务器使用。
  • inference server在另一个H100上运行vLLM,并使用这些权重生成部署。
  • eval watcher为每个新的检查点启动一个评估。每个评估都有自己的GPU,与训练并行运行,并作为Job Group的一个更多任务加入。

One job, all running at once: the trainer, the inference server, the eval watcher, and the step-5 eval it launched (marked Dynamic).

一个作业,所有这些同时运行:trainer、推理服务器、eval watcher,以及它启动的步骤-5评估(标记为Dynamic)。

本文中的数据来自与单独的训练和评估作业运行相同的配方。Job Group版本是train_eval.yaml在仓库中。对于每个评估,vLLM提供检查点,tools/pilot_bench.py通过兼容OpenAI的API飞行它,这是基准中所有其他模型相同的代码路径。

SkyPilot是开源的(pip install skypilot),以上所有内容都在它上运行。RL环境、提示和SkyPilot文件在SkyPilot仓库中的flying-roadster-rl示例中。

飞你自己的模型。基准与任何兼容OpenAI的端点通信,默认为SkyPilot Tokens,它提供DeepSeek V4.1 Flash、Muse Spark Open和其他开放模型。在那里创建一个帐户以获取API密钥,克隆仓库,cd llm/flying-roadster-rl,然后运行:

Drop --realtime以给模型无限的时间思考。--endpoint openrouter使用$OPENROUTER_API_KEY代替。对于本地服务器或任何其他兼容OpenAI的API,传递--base-url(如果密钥在另一个变量中,则传递--api-key-env)。本地服务器不需要密钥。

要训练你自己的pilot,让检查点在着陆时被评估,启动Job Group。您需要具有两个空闲H100和共享卷的Kubernetes集群,以及一个S3存储桶:

如果没有共享卷,train.yaml和eval.yaml将训练和评估作为单独的作业运行。

如果您有问题或我们应该添加的基线,请在仓库中打开一个问题。如果您希望在您自己的任务上后训练模型并获得帮助,联系我们。

来源:Hacker News · skypilot.ai

00