QiuQiu

Dreamer

因为“使用 latent space”只说明每次预测比较便宜,并不决定整个实验要预测多少次。Dreamer 的总算力大致是:

总算力≈环境步数×每步更新次数×batch size×序列长度×模型大小\text{总算力}\approx \text{环境步数} \times \text{每步更新次数} \times \text{batch size} \times \text{序列长度} \times \text{模型大小}

再加上 actor–critic 的大量 imagined rollout。

主要差别来自以下因素。

1. 任务难度不同

简单控制任务:

这种 Dreamer 可以在单卡上训练。

复杂任务,例如 Minecraft、复杂机器人或户外环境:

即使 latent state 只有几百维,也可能需要训练几十亿次网络运算。

2. 模型大小不同

Dreamer 不是只有一个 latent vector,而是一整套网络:

Encoder+RSSM+Decoder+Reward Model+Actor+Critic\text{Encoder} +\text{RSSM} +\text{Decoder} +\text{Reward Model} +\text{Actor} +\text{Critic}

latent 维度、CNN大小、RSSM隐藏层、actor/critic宽度都可以扩大。

同样叫 Dreamer:

计算量当然不同。

3. 想象轨迹数量不同

一次 actor 更新通常不是只做一条梦,而是:

B 个起始状态×H 步 imaginationB\text{ 个起始状态} \times H\text{ 步 imagination}

例如:

1024 个状态×15 步=15360 个想象状态1024\text{ 个状态}\times15\text{ 步} =15360\text{ 个想象状态}

每个状态都要运行:

latent rollout 比生成未来图片便宜,但“同时做成千上万条梦”仍然消耗算力。

4. 训练数据量和 replay ratio 不同

假设机器人产生一个 environment step,有的实现只更新一次;有的可能从 replay buffer 抽取多个 batch,更新很多次。

例如:

1M environment steps×1次更新1\text{M environment steps} \times 1\text{次更新}

10M environment steps×16次更新10\text{M environment steps} \times 16\text{次更新}

计算量可以相差160倍。

5. “复现一个任务”和“复现整篇论文”不同

论文说“单张GPU可以训练”,通常可能指:

一个任务、一个随机种子、一次训练。

但论文完整实验可能是:

20个任务×5个随机种子=100次训练20\text{个任务} \times5\text{个随机种子} =100\text{次训练}

如果单次训练16 GPU小时,完整复现就是:

100×16=1600 GPU小时100\times16=1600\text{ GPU小时}

还没计算失败实验和超参数搜索。这是很多“算力看起来前后矛盾”的来源。

6. 输入不一定都是图像

Dreamer可以使用:

只使用关节角、速度等低维状态,encoder/decoder非常便宜;多相机高分辨率输入则会贵很多。

所以正确理解是:

latent imagination降低了每一次未来推演的成本,但总算力仍由模型大小、数据量、想象次数和任务复杂度决定。

对于你想做的机器狗“操场避人”,如果一开始限制为固定场地、低分辨率RGB、短期避障、密集奖励、小型RSSM,单卡完全可能;如果要求任意户外环境、多人交互、长时间导航和端到端视觉学习,就会迅速变成大算力问题。