常见的加速方法

深度强化学习训练可能非常耗时。这里有三个立竿见影的加速策略。

1. 环境向量化

就像并行计算一样,同时运行多个环境实例(例如同时玩4局游戏)。这能成倍地增加样本收集速度,特别适合 CPU 密集型的环境。

2. GPU 加速

对于神经网络(Policy/Value Network),使用 CUDA 核心进行并行矩阵运算。Stable-Baselines3 等库会自动检测并使用 GPU。

3. 超参数调优

增大 batch_size 或减少不必要的日志记录频率。合适的超参数能让模型收敛速度提升数倍。


实战:向量化环境 (Vectorized Environments)

使用 DummyVecEnvSubprocVecEnv 来并行运行环境。

vectorized_training.py
import gymnasium as gym
from stable_baselines3 import PPO
from stable_baselines3.common.env_util import make_vec_env

# 1. 创建并行环境 (4个并行进程)
# make_vec_env 会自动处理多进程创建
n_envs = 4
env = make_vec_env("CartPole-v1", n_envs=n_envs)

# 2. 创建模型
# 此时每次 env.step() 会返回 4 个状态,模型会同时学习这 4 份经验
model = PPO("MlpPolicy", env, verbose=1)

# 3. 训练
# 总步数相同的情况下,墙钟时间(Wall-clock time)会显著减少
print("开始并行训练...")
model.learn(total_timesteps=100000)

print("训练完成!")
env.close()
💡 小贴士: 对于像 CartPole 这样极其简单的环境,创建多进程的开销可能比收益还大。向量化环境主要在环境模拟本身比较复杂(如图像处理、物理模拟)时效果显著。