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