日志记录器
ClearML Logger 类用于报告实验结果,例如指标、图表和调试样本。它通过 ClearML Task 对象提供。
Logger对象用于执行以下操作:
记录结果的类型
ClearML 支持四种类型的报告:
- 文本 - 主要从stdout和stderr自动捕获,但也可以手动记录。
- 标量 - 时间序列数据。X轴始终是一个连续的数字,通常是迭代次数,但也可以是周期或其他。
- 图表 - 通用图形和图表,例如直方图、混淆矩阵、折线图和自定义的plotly图表。
- 调试样本 - 图像、音频和视频。可以按每次迭代报告。
自动报告
ClearML 自动捕获报告给领先的可视化库(如 TensorBoard 和 Matplotlib)的指标,无需额外的代码。
此外,ClearML 捕获并记录所有写入标准输出的内容,从调试信息到错误再到库警告信息。
GPU、CPU、内存和网络信息也会自动捕获。
支持的包
自动报告示例
查看一些ClearML支持的包的自动报告示例:
- TensorBoard
- TensorBoard PR曲线 - 记录TensorBoard输出和TensorFlow标志
- TensorBoard 玩具 - 记录TensorBoard直方图、标量、图像、文本和TensorFlow标志
- Tensorboard with PyTorch - 记录TensorBoard标量、调试样本和集成到使用PyTorch的代码中的文本
- TensorBoardX
- TensorBoardX with PyTorch - 使用PyTorch记录TensorBoardX标量、调试样本和代码中的文本
- MegEngine MNIST - 使用TensorBoardX的
SummaryWriter
记录标量
- Matplotlib
- Matplotlib - 记录使用Matplotlib绘制的散点图
- Matplotlib与PyTorch - 记录由Matplotlib显示的调试图像
手动报告
ClearML 还支持手动报告多种类型的指标和图表,例如折线图、直方图,甚至是 plotly 图表。
用于报告指标的对象称为logger,通过调用Task.get_logger()
获得。
媒体报告
ClearML 还支持在每次迭代时报告媒体(如音频、视频和图像)。 本节主要用于调试。建议使用 artifacts 来存储稍后将使用的脚本输出。
为了防止服务器过载,每个标题/系列只保存最后X个结果。
详情请参见Logger.report_media
。
显式报告示例
查看ClearML的各种结果类型的显式报告示例:
- 文本
- 标量
- 图表
- 2d 图表
- 直方图
- 混淆矩阵
- 散点图
- 3d 图表
- 表面图
- 散点图
- 表格
- Pandas 数据框
- CSV 文件
- Matplotlib 图表
- Plotly 图表
- 2d 图表
- 调试示例
- 在Jupyter Notebook中的显式报告 example
日志记录器配置
Logger 类提供了控制 ClearML 日志记录各个方面的方法。
上传目的地
使用Logger.set_default_upload_destination
方法设置用于上传调试样本的默认存储URI。
调试样本是单独上传的。每个样本的链接都会被报告。
目标存储的凭据在ClearML配置文件中指定。
自动日志记录设置
Logger类提供了用于微调ClearML与Matplotlib和Tensorboard的自动日志记录行为的方法。
例如,使用Logger.matplotlib_force_report_non_interactive
类方法来控制如何记录matplotlib对象。参见Logger.tensorboard_auto_group_scalars
类方法。
设置默认的NaN和Inf值
当你报告包含NaN或Inf值的指标时,ClearML默认将它们记录为0
。你可以分别使用Logger.set_reporting_nan_value
和Logger.set_reporting_inf_value
类方法为NaN和Inf指定不同的默认值。