Dreamer
因为“使用 latent space”只说明每次预测比较便宜,并不决定整个实验要预测多少次。Dreamer 的总算力大致是:
总算力≈环境步数×每步更新次数×batch size×序列长度×模型大小\text{总算力}\approx \text{环境步数} \times \text{每步更新次数} \times \text{batch size} \times \text{序列长度} \times \text{模型大小}
再加上 actor–critic 的大量 imagined rollout。
主要差别来自以下因素。
1. 任务难度不同
简单控制任务:
- 64×64 图像
- 单一机器人
- 动作维度小
- 奖励密集
- 几十万到几百万环境步
这种 Dreamer 可以在单卡上训练。
复杂任务,例如 Minecraft、复杂机器人或户外环境:
- 场景变化巨大
- 奖励稀疏
- 需要更长时间记忆
- 必须探索大量状态
- 需要更大的 RSSM 和更多环境数据
即使 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{ 个想象状态}
每个状态都要运行:
- RSSM transition
- actor
- reward predictor
- critic
- 反向传播
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可以使用:
- 低维关节状态
- 64×64 RGB
- 多摄像头RGB
- RGB-D
- 图像+触觉+本体状态
只使用关节角、速度等低维状态,encoder/decoder非常便宜;多相机高分辨率输入则会贵很多。
所以正确理解是:
latent imagination降低了每一次未来推演的成本,但总算力仍由模型大小、数据量、想象次数和任务复杂度决定。
对于你想做的机器狗“操场避人”,如果一开始限制为固定场地、低分辨率RGB、短期避障、密集奖励、小型RSSM,单卡完全可能;如果要求任意户外环境、多人交互、长时间导航和端到端视觉学习,就会迅速变成大算力问题。