加速训练#
强化学习可能是一个非常计算密集型的问题,既样本效率低下,又难以扩展到更复杂的环境。在本页中,我们将讨论加速训练的通用策略:向量化环境、优化训练和算法启发式方法。
向量化环境#
通常在训练中,智能体会从单一环境中采样,这限制了每秒的步数(样本)到环境的速度。通过同时在多个环境中行动,可以显著增加训练量,这称为向量化环境,其中同一环境的多个实例并行运行(在多个CPU上)。Gymnasium提供了两个内置类来向量化大多数通用环境:gymnasium.vector.SyncVectorEnv
和 gymnasium.vector.AsyncVectorEnv
,可以通过 gymnasium.make_vec()
轻松创建。
应该注意的是,向量化环境可能需要更改您的训练算法,并且在非常大数量的子环境中可能会导致训练不稳定。
优化训练#
通过优化代码,通常可以实现加速训练,特别是对于使用GPU进行训练的深度强化学习,通过需要将数据从RAM传输到GPU内存以及从GPU内存传输回RAM。
对于用 PyTorch 和 Jax 编写的代码,它们提供了 jit(即时编译)代码以适应 CPU、GPU 和 TPU(对于 jax)的能力,从而减少训练时间。
算法启发式方法#
学术界研究人员不断探索新的优化方法以提高智能体性能并减少训练智能体所需的样本数量。特别是,样本高效强化学习是强化学习的一个专业子领域,它探索了用于训练算法和环境启发式的优化,这些优化减少了智能体达到最大性能所需的观察次数。随着该领域的持续改进,我们建议读者查找综述论文和最新研究,以了解当前存在的最有效算法改进。