深入解析DI-engine训练文件夹:串行与并行模式详解
DI-engine通过创建不同的文件夹和文件来管理训练过程中的数据和模型状态。这些文件夹对于理解模型是如何训练的以及如何进行性能监控至关重要。但对于初学者来说,这些文件夹可能看起来实在是一团麻又难以理解。在本篇博客中,我们将详细解释串行与并行训练模式下DI-engine生成的文件夹,快速了解它们的功能和用途。
串行模式下的文件夹结构
在串行模式下,DI-engine会创建一个基本的文件树,用来存储日志(logs),模型检查点(checkpoints),配置信息等。下面是一个典型的文件夹结构示例:
cartpole_dqn
├── ckpt (模型检查点)
│ ├── ckpt_best.pth.tar (最佳模型)
│ ├── iteration_0.pth.tar (迭代0的模型)
│ └── iteration_561.pth.tar (迭代561的模型)
├── log (日志文件夹)
│ ├── buffer (数据缓冲区日志)
│ ├── collector (数据采集器日志)
│ ├── evaluator (评估器日志)
│ ├── learner (学习器日志)
│ └── serial (串行模式下的tensorboard日志)
└── total_config.py (完整配置文件)
例如:
ckpt文件夹
在ckpt文件夹中,您会发现模型训练过程中保存的检查点文件,包括最佳模型ckpt_best.pth.tar和其他迭代的模型文件。这些文件可以使用PyTorch的torch.load函数加载。
log文件夹
log文件夹包含了几个子文件夹,每个子文件夹记录了训练过程中不同组件的日志信息。
- buffer: 记录数据缓冲区(buffer)的日志,如数据使用情况、采样信息等。
- collector: 记录数据采集过程的日志,如每秒采集的样本数等。
- evaluator: 记录评估器与环境交互的详细日志,包括奖励信息和每个episode的平均步数。
- learner: 记录学习器(learner)的日志,包括学习率、损失等信息。
所有的tensorboard日志文件在serial文件夹中集中保存,以便在TensorBoard中进行可视化分析。
log/buffer
buffer文件夹下的buffer_logger.txt文件提供了数据缓冲区(buffer)的关键信息。数据缓冲区是强化学习中用于存储经验样本的地方,通常以回放缓冲区(replay buffer)的形式存在。
采样信息
buffer_logger.txt中会记录缓冲区的使用情况。这包括了以下指标:
- use_avg:平均使用率,表示缓冲区的使用程度。
- use_max:最大使用率,显示缓冲区用量的峰值。
- priority_avg:平均优先级,用于优先经验回放。
- priority_max:最大优先级,记录所存数据的最大优先级值。
- priority_min:最小优先级,记录所存数据的最小优先级值。
- staleness_avg:平均陈旧度,表示数据在缓冲区中的平均存放时间。
- staleness_max:最大陈旧度,表示所有数据中存放时间最长的数据。
通过监控这些指标,我们可以对数据的质量和使用情况有一个直观的了解。
吞吐量信息
此外,还会记录与吞吐量相关的信息,例如:
- pushed_in:新加入缓冲区的数据数量。
- sampled_out:从缓冲区取出用于学习的数据数量。
- removed:从缓冲区中删除的数据数量。
- current_have:当前缓冲区中有效数据的数量。
这些信息对于了解缓冲区的动态很有帮助,可以帮助我们判断是否需要调整数据采样或存储策略。
log/collector
collector文件夹包含了collector_logger.txt日志文件,记录了与环境交互相关的信息。这些信息对于了解数据采集过程至关重要,它包括了:
在收集器文件夹中,有一个名为“collector_logger.txt”的文件,其中包含一些与环境交互相关的信息。
设默认置 n_sample 模式。 collector 的基本信息: n_sample 和 env_num. n_sample 表示采集的数据样本数. 对于 env_num,它表示collector将与多少个环境交互。
例如:
- episode_count: 收集数据的episode数量
- envstep_count: 收集数据的envstep数量
- train_sample_count: 训练样本数据个数
- avg_envstep_per_episode: 每个 eposide中平均的 envstep
- avg_sample_per_episode: 每个episode中的平均样本数
- avg_envstep_per_sec: 每秒平均的env_step
- avg_train_sample_per_sec: 每秒平均的训练样本数
- avg_episode_per_sec: 每秒平均episode数
- collect_time: 收集时间
- reward_mean: 平均奖励
- reward_std: 奖励的标准差
- each_reward: collector与环境交互时的每个episode的奖励。
- reward_max: 最大reward
- reward_min: 最小reward
- total_envstep_count: 总 envstep 数
- total_train_sample_count: 总训练样本数
- total_episode_count: 总 episode 数
- total_duration: 总持续时间
log/evaluator
在evaluator文件夹中的evaluator_logger.txt文件,则记录了评估器与环境交互时的一些关键信息,这对于理解模型的表现和做出调整至关重要。
其中包含有关 evaluator 与环境交互时的一些信息。