注意
转到末尾 下载完整的示例代码。
使用日志记录入门¶
注意
要在 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
将使 env 的 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)中,并按需转储为视频(为防止内存使用过载,建议您在适当的时候调用此方法!)。
rollout = record_env.rollout(max_steps=3)
# Uncomment this line to save the video on disk:
# recorder.dump()
在这种特定情况下,视频格式可以在实例化 CSVLogger 时选择。
(如果您想自定义视频的录制方式,请查看我们的知识库)。
这就是我们想在入门教程中涵盖的所有内容。您现在应该已准备好编写您的第一个 TorchRL 训练循环!