加速训练

强化学习可能是一个计算上困难的问题,它既样本效率低下,又难以扩展到更复杂的环境。在本页中,我们将讨论加速训练的通用策略:向量化环境、优化训练和算法启发式。

向量化环境

通常在训练中,智能体从单个环境中采样,将每秒的步数(样本数)限制为环境的速度。通过同时在多个环境中进行操作,可以显著加快训练速度,这被称为向量化环境,即同一环境的多个实例并行运行(在多个 CPU 上)。Gymnasium 提供了两个内置类来向量化大多数通用环境:gymnasium.vector.SyncVectorEnvgymnasium.vector.AsyncVectorEnv,它们可以使用 gymnasium.make_vec() 轻松创建。

需要注意的是,向量化环境可能需要修改您的训练算法,并且在子环境数量非常庞大的情况下,可能导致训练不稳定。

优化训练

加速训练通常可以通过优化代码来实现,特别是对于使用 GPU 进行训练的深度强化学习,这涉及到数据在 RAM 和 GPU 内存之间的传输。

对于用 PyTorch 和 Jax 编写的代码,它们提供了 jit(即时编译)代码排序的功能,以便在 CPU、GPU 和 TPU(对于 Jax)上减少训练时间。

算法启发式

学术研究人员一直在探索新的优化方法,以提高智能体性能并减少训练智能体所需的样本数量。特别是,样本高效强化学习是强化学习的一个专业子领域,它探索训练算法和环境启发式方法,以减少智能体为最大化性能所需的观测次数。由于该领域持续改进,我们建议读者查阅综述论文和最新研究,以了解当前最有效的算法改进方法。