这段代码实现了一个基于 W&B(Weights & Biases)超参数调优 的强化学习实验。它通过加载环境参数、模型参数和超参数配置,运行多个实验以找到最优的超参数组合。以下是代码的详细解释:
1. 代码结构
代码主要由以下几个部分组成:
-
参数解析:
-
使用
ArgumentParser
解析命令行参数(如环境 ID、项目名称、配置文件名称等)。
-
-
超参数调优配置:
-
加载超参数配置文件(YAML 文件),并设置 W&B 的超参数扫描配置。
-
-
训练函数:
-
定义
train
函数,用于初始化 W&B 运行并调用run_hp_experiment
函数。
-
-
实验运行函数:
-
定义
run_hp_experiment
函数,用于初始化环境、模型和回调函数,并运行强化学习训练。
-
-
W&B 超参数扫描:
-
使用
wandb.sweep
和wandb.agent
启动超参数扫描。
-
2. 核心功能
2.1 参数解析
-
ArgumentParser
:-
解析命令行参数,包括环境 ID、项目名称、配置文件名称、总时间步长等。
-
2.2 超参数调优配置
-
sweep_config
:-
定义 W&B 超参数扫描的配置,包括扫描方法(如
bayes
)、目标指标(如eval/mean_reward
)和超参数范围。
-
-
parameters
:-
从 YAML 文件中加载超参数配置。
-
2.3 训练函数
-
train
:-
初始化 W&B 运行。
-
设置模型参数并调用
run_hp_experiment
函数运行实验。
-
2.4 实验运行函数
-
run_hp_experiment
:-
初始化训练环境和评估环境。
-
设置回调函数(如
TensorboardCallback
和WandbCallback
)。 -
初始化 PPO 模型并运行训练。
-
2.5 W&B 超参数扫描
-
wandb.sweep
:-
创建 W&B 超参数扫描任务。
-
-
wandb.agent
:-
启动超参数扫描,运行多个实验。
-
3. 代码的应用场景
-
超参数调优:
-
用于测试不同超参数组合对强化学习算法性能的影响。
-
通过 W&B 的超参数扫描功能,找到最优的超参数配置。
-
-
实验记录:
-
使用 W&B 记录实验过程和结果。
-
-
模型训练:
-
训练强化学习模型,并保存训练好的模型和归一化环境。
-
4. 关键参数
4.1 命令行参数
-
env_id
:-
温室环境的 ID(如
GreenLightHeatCO2
)。
-
-
project
:-
W&B 项目名称。
-
-
group
:-
W&B 运行分组。
-
-
env_config_name
:-
环境配置文件的名称(如
5min_four_controls
)。
-
-
tuning_file
:-
超参数配置文件的名称(如
5-min-four-controls.yml
)。
-
-
total_timesteps
:-
总训练时间步长。
-
-
n_eval_episodes
:-
每次评估的 episode 数量。
-
-
n_evals
:-
训练过程中评估的次数。
-
-
method
:-
超参数扫描方法(如
bayes
、random
等)。
-
-
algorithm
:-
强化学习算法(如
ppo
)。
-
4.2 环境参数
-
env_base_params
:-
温室环境的基本参数(如时间步长、状态数量、控制输入数量等)。
-
-
env_specific_params
:-
温室环境的特定参数(如作物状态、价格参数等)。
-
-
options
:-
温室环境的选项(如生长年份、起始日期等)。
-
4.3 模型参数
-
model_params
:-
强化学习算法的参数(如学习率、折扣因子等)。
-
4.4 超参数配置
-
parameters
:-
从 YAML 文件中加载的超参数配置(如学习率、批量大小等)。
-
5. 示例
运行实验
python hyperparameter_tuning.py --env_id GreenLightHeatCO2 --project tuning-5-min --group testing-evaluation --env_config_name 5min_four_controls --tuning_file 5-min-four-controls.yml --total_timesteps 1_000_000 --n_eval_episodes 60 --n_evals 1 --method bayes --algorithm ppo
输出结果
-
W&B 实验跟踪:
-
在 W&B 平台上查看超参数扫描实验的过程和结果。
-
-
模型保存:
-
保存训练好的模型和归一化环境。
-
-
实验结果:
-
记录每个超参数组合的实验结果(如奖励、利润、违规次数等)。
-
6. 总结
这段代码实现了一个基于 W&B 超参数调优的强化学习实验,用于测试不同超参数组合对强化学习算法在 GreenLight 温室环境中性能的影响。通过加载环境参数、模型参数和超参数配置,运行多个实验并记录结果,可以高效地进行超参数调优和实验分析。代码支持 W&B 实验跟踪和多 CPU 并行训练,适用于温室控制策略优化和强化学习研究。