注意
转到末尾 下载完整的示例代码。
开始使用日志记录¶
注意
要在 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 训练循环 了!