跳转到内容

向量化环境与分布式采样

on-policy 方法靠并行环境获得样本,off-policy 方法靠分布式 actor 填充回放缓冲。本章讲向量化环境的同步/异步实现、IMPALA 的 V-trace 修正策略滞后、Ape-X 的分布式优先回放,以及 SEED RL 的集中推理架构。

RL 的吞吐由两段流水线决定:采样(与环境交互、生成转移)与学习(梯度更新)。深度 RL 的采样远慢于学习(环境是物理模拟或游戏引擎,学习是 GPU 矩阵乘)——采样是瓶颈。架构设计的核心问题:怎么把采样并行化、怎么让采样与学习流水线化。

向量化环境(vectorized environments):把 NN 个环境放进一个接口,step 一次步进全部 NN 个环境:

  • 同步(SyncVectorEnv):等所有环境走完一步再继续——简单、批规整,但慢环境拖累快环境(木桶效应);
  • 异步(AsyncVectorEnv):各环境独立进程,取"已就绪"的环境——吞吐更高,批不规整(需要组 batch)。

规模的意义:on-policy 方法(PPO/A2C)只能用当前策略的数据,并行环境数直接决定单位时间能采多少样本(→ Actor-Critic 与 GAE)。64 个环境与 4096 个环境,是两种完全不同的训练体验。

IMPALA(Importance Weighted Actor-Learner Architecture, Espeholt et al., 2018):大量 actor(模拟器进程)持续采样,learner(GPU)集中学习。actor 的数据要排队送到 learner——到达时策略已经更新过了(策略滞后,policy lag),数据是 off-policy 的。

V-trace 是修正:对截断的重要性采样做限幅——

δtV=ρt (rt+γ ρˉt+1V(xt+1)−V(xt)),ρt=min⁡(ρˉ, π(at∣st)μ(at∣st)),\delta_t V = \rho_t\, \big( r_t + \gamma\, \bar{\rho}_{t+1} V(x_{t+1}) - V(x_t) \big), \qquad \rho_t = \min\big(\bar{\rho},\ \frac{\pi(a_t \mid s_t)}{\mu(a_t \mid s_t)}\big),

限幅 ρˉ\bar{\rho}(常取 1)让 off-policy 数据可用而不爆炸(重要性采样的方差问题,→ 蒙特卡洛方法)。V-trace 让"用 off-policy 数据跑 on-policy 算法"成为可能——这是 actor-learner 架构的理论粘合剂。

Ape-X(Horgan et al., 2018):off-policy 方法的分布式版本——大量 actor 各自持有旧网络副本采样、存入共享的分布式优先回放缓冲,learner 按优先级采样更新,定期把新网络发给 actor。

  • actor 用旧网络采样(滞后无妨,Q-learning 天然 off-policy);
  • 优先回放(PER,→ DQN 及其改进)在分布式缓冲上运行;
  • **采样与学习的比例(replay ratio)**成为核心超参:每条数据被学习几次——太高 learning 过拟合旧数据,太低 GPU 闲置。

SEED RL(Espeholt et al., 2020)再进一步:推理也集中——actor 只跑环境(CPU),动作由 learner 的 GPU 集中推理(gRPC 传输观测、传回动作)。省掉 actor 的模型副本与同步,简化架构;代价是网络往返延迟成为每步的开销(适合轻观测、重模型)。

三个架构的谱系:

架构推理在哪off-policy 修正适合
IMPALAactorV-traceon-policy 大规模
Ape-XactorQ-learning 天然off-policy 大规模
SEED RLlearnerV-trace轻观测重模型

Ray RLlib、Acme、TorchRL 等框架封装了这些架构(→ 库与框架对比)。选型的经验:先想清楚采样与学习的比例(多少 actor、replay ratio 多少),架构是比例的函数——比例错了,什么架构都救不了吞吐。

  • V-trace 让 off-policy 数据可用于 on-policy 算法
  • 采样与学习的比例(replay ratio)是关键超参
  • Ray RLlib 等框架封装了这些架构