注意
跳转到末尾下载完整的示例代码。
开始使用日志记录¶
作者: Vincent Moens
注意
要在 notebook 中运行本教程,请在开头添加一个安装单元格,其中包含
!pip install tensordict !pip install torchrl
本系列教程的最后一个章节,在我们把所有内容组织到一个训练脚本中之前,我们将学习日志记录。
日志记录器¶
日志记录对于向外部报告结果以及检查算法是否正常学习至关重要。TorchRL 提供了多种日志记录器,可以与自定义后端对接,例如 wandb (WandbLogger
)、tensorboard (TensorBoardLogger
) 或轻量便携的 CSV 日志记录器 (CSVLogger
),这些几乎可以在任何地方使用。
日志记录器位于 torchrl.record
模块中,各种类可以在 API 参考中找到。
考虑到底层后端的差异,我们努力使日志记录器的 API 尽可能相似。虽然日志记录器的执行大部分是可互换的,但它们的实例化可能会有所不同。
通常,构建一个日志记录器至少需要一个实验名称,可能还需要一个日志目录和其他超参数。
from torchrl.record import CSVLogger
logger = CSVLogger(exp_name="my_exp")
一旦日志记录器被实例化,剩下的就只有调用日志记录方法了!例如,log_scalar()
在多个训练示例中用于记录奖励、损失值或执行一段代码所花费的时间等值。
logger.log_scalar("my_scalar", 0.4)
录制视频¶
最后,录制模拟器的视频会非常方便。一些环境(例如 Atari 游戏)已经渲染为图像,而其他环境则需要你自行创建。幸运的是,在大多数常见情况下,渲染和录制视频并不太困难。
让我们先看看如何创建一个 Gym 环境,使其在观察值之外输出图像。GymEnv
为此接受两个关键字参数:- from_pixels=True
将使环境的 step
函数写入一个包含与你的观察值对应的图像的 "pixels"
条目,以及
pixels_only=False
将表示你需要
同时返回观察值。
from torchrl.envs import GymEnv
env = GymEnv("CartPole-v1", from_pixels=True, pixels_only=False)
print(env.rollout(max_steps=3))
from torchrl.envs import TransformedEnv
现在我们已经构建了一个能随观察值一起渲染图像的环境。要录制视频,我们需要将该环境与录制器和日志记录器(日志记录器提供保存视频的后端)结合使用。这将在一个经过转换的环境中进行,就像我们在第一个教程中看到的那样。
from torchrl.record import VideoRecorder
recorder = VideoRecorder(logger, tag="my_video")
record_env = TransformedEnv(env, recorder)
运行此环境时,所有 "pixels"
条目将保存在本地缓冲区(即 RAM)中,并根据需要导出为视频(为防止 RAM 过度使用,建议在适当时调用此方法!)
rollout = record_env.rollout(max_steps=3)
# Uncomment this line to save the video on disk:
# recorder.dump()
在这种特定情况下,实例化 CSVLogger 时可以选择视频格式。
(如果你想自定义视频的录制方式,请参阅我们的知识库。)
这就是本入门教程要涵盖的全部内容。你现在应该准备好用 TorchRL 编写你的第一个训练循环了!