加速训练¶
强化学习可能是一个计算上很困难的问题,它既样本效率低,又难以扩展到更复杂的环境。在本页中,我们将讨论加速训练的一般策略:矢量化环境、优化训练和算法启发式方法。
矢量化环境¶
通常在训练中,代理将从单个环境中采样,将每秒的步数(样本)限制为环境的速度。通过同时在多个环境中采取行动,可以大幅提高训练速度,这被称为矢量化环境,其中多个相同环境的实例并行运行(在多个 CPU 上)。Gymnasium 提供了两个内置类来矢量化大多数通用环境:gymnasium.vector.SyncVectorEnv
和 gymnasium.vector.AsyncVectorEnv
,它们可以通过 gymnasium.make_vec()
很容易创建。
需要注意的是,矢量化环境可能需要更改您的训练算法,并且会导致大量子环境训练不稳定。
优化训练¶
加速训练通常可以通过优化您的代码来实现,特别是对于使用 GPU 进行训练的深度强化学习,因为需要将数据传输到 RAM 和 GPU 内存之间。
对于使用 PyTorch 和 Jax 编写的代码,它们提供了 jit
(即时编译)代码顺序的能力,用于 CPU、GPU 和 TPU(对于 jax)来减少训练所需的时间。
算法启发式方法¶
学术研究人员一直在探索新的优化方法,以提高代理性能并减少训练代理所需的样本数量。特别是,样本高效强化学习是强化学习的一个专业子领域,它探索了训练算法和环境启发式方法的优化,这些方法减少了代理最大化性能所需的代理观察次数。由于该领域不断改进,我们建议读者寻找调查论文和最新研究,以了解当前存在的最高效的算法改进。