OpenAI Spinning Up 项目实验运行指南
概述
OpenAI Spinning Up 是一个深度强化学习(Deep RL)教育项目,旨在帮助研究人员和开发者快速上手深度强化学习。本文将详细介绍如何在 Spinning Up 项目中运行实验,包括从命令行启动实验和通过脚本调用两种方式。
命令行启动实验
Spinning Up 提供了一个便捷的命令行工具 spinup/run.py,可以轻松启动任何算法及其超参数配置。
基本命令格式
python -m spinup.run [算法名称] [实验参数]
例如,要运行 PPO 算法在 Walker2d-v2 环境中:
python -m spinup.run ppo --env Walker2d-v2 --exp_name walker
框架选择
Spinning Up 同时支持 PyTorch 和 TensorFlow 实现:
-
PyTorch 版本:
python -m spinup.run [算法]_pytorch -
TensorFlow 版本:
python -m spinup.run [算法]_tf1
如果不指定框架后缀,系统会根据配置文件 spinup/user_config.py 中的默认设置选择框架。
超参数设置
所有算法超参数都可以通过命令行直接设置。要查看某个算法可用的参数:
python -m spinup.run [算法名称] --help
批量实验
可以通过提供多个参数值来批量运行实验,系统会自动组合所有可能的参数组合:
python -m spinup.run ppo --env Walker2d-v2 --exp_name walker --seed 0 10 20
注意:实验会按顺序执行,而非并行,因为每个实验通常会占用大量计算资源。
特殊参数说明
环境参数
--env或--env_name:指定 OpenAI Gym 环境名称
快捷参数
--hid:设置神经网络隐藏层大小--act:设置激活函数
配置参数
--cpu:设置使用的 CPU 数量--exp_name:实验名称,用于保存目录命名--data_dir:设置结果保存目录--datestamp:是否在保存目录中包含时间戳
实验结果保存
实验结果保存在以下结构的目录中:
data_dir/[outer_prefix]exp_name[suffix]/[inner_prefix]exp_name[suffix]_s[seed]
其中:
data_dir:由--data_dir参数指定outer_prefix和inner_prefix:可能包含时间戳suffix:基于实验超参数的标识字符串
通过脚本启动实验
除了命令行,还可以直接导入算法函数在脚本中运行:
from spinup import ppo_pytorch as ppo
import torch
import gym
env_fn = lambda : gym.make('LunarLander-v2')
ac_kwargs = dict(hidden_sizes=[64,64], activation=torch.nn.ReLU)
logger_kwargs = dict(output_dir='path/to/output_dir', exp_name='experiment_name')
ppo(env_fn=env_fn, ac_kwargs=ac_kwargs, steps_per_epoch=5000, epochs=250, logger_kwargs=logger_kwargs)
使用 ExperimentGrid
对于需要测试多种超参数组合的研究,可以使用 ExperimentGrid 工具:
from spinup.utils.run_utils import ExperimentGrid
from spinup import ppo_pytorch
import torch
if __name__ == '__main__':
eg = ExperimentGrid(name='ppo-pyt-bench')
eg.add('env_name', 'CartPole-v0', '', True)
eg.add('seed', [10, 20, 30])
eg.add('epochs', 10)
eg.add('steps_per_epoch', 4000)
eg.add('ac_kwargs:hidden_sizes', [(32,), (64,64)], 'hid')
eg.add('ac_kwargs:activation', [torch.nn.Tanh, torch.nn.ReLU], '')
eg.run(ppo_pytorch, num_cpu=4)
最佳实践建议
- 随机种子:RL 算法性能可能有较大波动,建议每个配置运行多个随机种子
- 超参数搜索:使用
ExperimentGrid可以方便地进行超参数搜索 - 结果保存:合理设置
exp_name和data_dir以便后续分析 - 框架选择:根据个人偏好和项目需求选择 PyTorch 或 TensorFlow 实现
通过本文介绍的方法,您可以充分利用 Spinning Up 项目进行深度强化学习实验和研究。无论是快速验证想法还是进行系统性的超参数搜索,Spinning Up 都提供了灵活的工具支持。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



