训练可视化工具哪款是你的菜?MMCV一行代码随你挑

简介: 在深度学习中可视化模型的训练过程有助于我们分析模型的状态。可视化训练过程的库很多,我们将一些常用的库集成到 MMCV 中方便用户使用。在 MMCV 中使用这些库只需简单配置。在本文中将介绍这些库以及它们在 MMCV 中的使用方法。

在深度学习中可视化模型的训练过程有助于我们分析模型的状态。可视化训练过程的库很多,我们将一些常用的库集成到 MMCV 中方便用户使用。在 MMCV 中使用这些库只需简单配置。在本文中将介绍这些库以及它们在 MMCV 中的使用方法。


TensorBoard



https://pytorch.org/docs/stable/tensorboard.html


介绍


TensorBoard 最初是随 TensorFlow 提出的一款可视化工具包,其便捷性和完善的记录功能使它得到了广泛应用,并扩展到 PyTorch 等多种深度学习框架。TensorBoard 支持记录多种数据类型:


- 指标和损失

- 超参数和模型 config

- 图片数据(可视化权重、张量、多个图像)

- 模型图

- Embedding Projector(在低维空间可视化高维数据)


作为一款可视化工具,TensorBoard 可以基本满足深度学习实验的记录和可视化需求,它提供了本地端口展示可视化结果,使用起来十分便捷。但也正因为 TensorBoard 的主要功能是可视化,如果涉及到纷繁复杂的实验管理以及机器学习生命周期的记录,我们可能需要借助于其他工具。


使用


在 OpenMMLab codebase 中 使用 TensorBoard 只需一行配置,举 MMClassification 为例:


- 安装 MMClassification

- 安装 TensorBoard


OpenMMLab codebase 网址:

https://github.com/open-mmlab


MMClassification 网址:

https://github.com/open-mmlab/mmclassification


pip install tensorboard


- 修改 MMClassification 中的 log_config 字段

log_config = dict( 
    interval=100, 
    hooks=[ 
        dict(type='TextLoggerHook'), 
        dict(type='TensorboardLoggerHook') 
    ])

- 运行命令

python tools/train.py configs/resnet/resnet18_b16x8_cifar10.py 
# 另起一个终端 
tensorboard --logdir work_dirs/resnet18_b16x8_cifar10

- 打开 chrome 浏览器 输入 http://localhost:6006/

-如果想分享 tensorboard 日志,可以在上面的 tensorboard 命令中加入 dev 参数)

640.jpg


Neptune



https://neptune.ai/


介绍


Neptune 是一个集实验记录、数据存储、可视化、模型注册等多种功能于一体的机器学习实验管理工具,用户可以在网页端 UI 轻松地查看所有的记录与可视化结果。Neptune 支持记录的数据类型包括但不限于:


- 指标和损失

- 超参数和模型 config

- 模型 checkpoints

- Git 信息

- 数据版本管理

- 硬件消耗

- 文件

- 控制台日志

- 图片数据(图片文件、Matplotlib figure、PIL image、Numpy array、Tensor)

- 交互式可视化(自动将 Matplotlib figure 转为交互式,同时支持其他格式如 html 文件、Altair chart)


相较于 TensorBoard,Neptune 支持记录更多种类的数据,并且提供了用户友好的 UI,使用户可以灵活地调整可视化界面。Neptune 还提供了 TensorBoard 接口,可以很方便地把 TensorBoard logs 转换为 Neptune experiments。


使用


- 安装 neptune


pip install neptune-client

- 注册 neptune 账号并设置 NEPTUNE_API_TOKEN

- 修改 log_config 字段,其中 YOUR_WORKSPACE 是账号名,YOUR_PROJECT 是项目名

log_config = dict( 
    interval=100, 
    hooks=[ 
        dict(type='TextLoggerHook'), 
        dict(type='NeptuneLoggerHook', init_kwargs=dict(project='<YOUR_WORKSPACE/YOUR_PROJECT>')) 
    ])  

- 运行命令

python tools/train.py configs/resnet/resnet18_b16x8_cifar10.py

- 效果图

640.jpg


Weights & Biases



https://wandb.ai/site


介绍



Weights & Biases(简称 WandB)也是一个综合了多种功能的机器学习实验管理工具,其基本功能和Neptune 类似,也有一些细微差别。WandB 支持记录的数据类型包括但不限于:


- 指标和损失

- 超参数和模型 config

- 硬件消耗

- Git 信息

- 控制台日志

- 数据集

- 模型参数和梯度


WandB 的一大优势是提供了 PyTorch / TensorFlow / Keras 的 warpper,通过 wrapper 可以自动地记录模型中每一层的 weights / biases / gradients 。另外,WandB 的 reports 功能也非常实用,它可以将可视化结果以及用户的笔记整理成 report,便于归档整理和团队协作。WandB 也提供了 TensorBoard 的集成功能。


使用


- 安装 wandb


pip install wandb


- 注册 wandb 账号并获取 API key

- 终端输入 wandb login 回车并输入 API key

- 修改 log_config 字段


log_config = dict( 
    interval=100, 
    hooks=[ 
        dict(type='TextLoggerHook'), 
        dict(type='WandbLoggerHook', init_kwargs=dict(project='Your-project')), 
    ])  

- 运行命令


python tools/train.py configs/resnet/resnet18_b16x8_cifar10.py  

- 效果图

640.jpg


MLflow



https://mlflow.org/


介绍



MLflow 是一个用于记录机器学习生命周期的开源工具,实验记录和可视化只是其中一个基础功能,因此它的可视化功能不如 Neptune 和 WandB 那样丰富灵活。MLflow 支持记录的数据类型有:


- 指标和损失

- 超参数和模型config

- Git信息

- Artifacts(图片、模型、数据等)


MLflow 只能以 artifacts 的形式记录图片,没有交互式功能,因此很难从图片中直接获取实验数据。MLflow 也不适用于大型实验,过多的实验可能导致 UI 滞后。然而,MLflow 的主要优势在于机器学习生命周期的完整记录,包括实验可复现性的实现、模型注册、模型和数据的版本管理等。


使用


- 安装 mlflow

pip install mlflow


- 修改 log_config 字段,其中 exp_name 是项目名

log_config = dict( 
    interval=100, 
    hooks=[ 
        dict(type='TextLoggerHook'), 
        dict(type='MlflowLoggerHook', exp_name='your-project'), 
    ])  

- 运行命令

python tools/train.py configs/resnet/resnet18_b16x8_cifar10.py 
# 另起一个终端 
mlflow ui

- 打开 chrome 浏览器 输入 http://localhost:5000/

- 效果图

640.jpg


Dvclive



https://dvc.org/doc/dvclive


介绍



Dvclive 是一个用于追踪机器学习模型训练过程的开源 Python 库。Dvclive 与 DVC 无缝集成,它生成的 logs 可以作为 dvc plots;另一方面,Dvclive 也可以独立于 DVC 工作,TSV 格式的 log 文件可以通过其他可视化工具转换为图表。Dvclive 主要用于记录指标和损失。在与 DVC 集成后,可以通过plots 功能将 log 可视化,用户可以选择折线图等多种绘图模板,也可以自定义模板。


作为可视化工具,Dvclive 的功能是有限的。因此在大多数情况下,它与 DVC 集成使用,用于记录实验过程并自动生成 training summaries。


使用


- 安装


pip install dvc


- 修改 log_config 字段

log_config = dict( 
    interval=100, 
    hooks=[ 
        dict(type='TextLoggerHook'), 
        dict(type='DvcliveLoggerHook', path='dvclive'), 
    ])

- 运行命令

dvc init 
python tools/train.py configs/resnet/resnet18_b16x8_cifar10.py 
# 另起一个终端 
dvc plots show dvclive/train/loss.tsv

效果图,另外也可以搭配 DVC Studio 使用

640.jpg


总结



最后对以上工具做一个简单的总结:


如果你偏好在本地使用,想要一款能满足基本的实验记录需求、且上手容易的,推荐使用 TensorBoard;


如果对可视化和实验记录有较高要求,推荐使用 Neptune 和 WandB 。两者的实验记录功能都非常强大,并且都支持多人协作,适合大型项目的管理。


如果你是开源项目的爱好者,或者你希望记录完整的 ML 实验全过程,MLflow是一个不错的选择。


如果你只需要记录基本的实验数据,但是对于大规模数据的版本管理有比较高的需求,那么推荐你使用 DVC。


文章来源:公众号【OpenMMLab】

 2022-01-14 18:39

目录
打赏
0
1
0
0
42
分享
相关文章
豆瓣评分9.6!有趣又实用的典范,Python小白应该人手一份!
在这个浮躁的当下,程序员已经沦为IT民工,但这并不意味着学习编程不是一件错事。 苹果创始人乔布斯曾在接受访谈时说过:我觉得每个人都应该学习一门编程语言。学习编程教你如何思考…我把计算机科学看成是基础教育,每个人都应该花 1 年时间学习编程。
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
蓝桥杯Python编程练习题的集合,涵盖了从基础到提高的多个算法题目及其解答。
228 3
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
从菜鸟到大师:Scikit-learn库实战教程,模型训练、评估、选择一网打尽!
【9月更文挑战第13天】在数据科学与机器学习领域,Scikit-learn是不可或缺的工具。本文通过问答形式,指导初学者从零开始使用Scikit-learn进行模型训练、评估与选择。首先介绍了如何安装库、预处理数据并训练模型;接着展示了如何利用多种评估指标确保模型性能;最后通过GridSearchCV演示了系统化的参数调优方法。通过这些实战技巧,帮助读者逐步成长为熟练的数据科学家。
223 3
【python】python化妆品销售logistic逻辑回归预测分析可视化(源码+课程论文+数据集)【独一无二】
【python】python化妆品销售logistic逻辑回归预测分析可视化(源码+课程论文+数据集)【独一无二】
绝不可错过!R语言与ggplot2实现SCI论文数据分析神器
绝不可错过!R语言与ggplot2实现SCI论文数据分析神器
258 0
我的收藏:第四章:八十种在线工具
我的收藏:第四章:八十种在线工具
176 0
我的收藏:第四章:八十种在线工具