训练可视化工具哪款是你的菜?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

目录
相关文章
|
缓存 API 开发者
魔搭社区牵手FastChat&vLLM,打造极致LLM模型部署体验
FastChat是一个开放平台,用于训练、服务和评估基于LLM的ChatBot。
|
2月前
|
JSON 搜索推荐 API
拼多多商品详情API技术指南
拼多多商品详情API(pdd.goods.detail.get)支持通过商品ID获取商品标题、价格、销量、图片、库存及评价等详细信息,适用于电商数据分析、竞品监控与价格策略优化,返回标准JSON格式,便于集成开发。
|
5月前
|
安全 Windows
电脑屏幕一闪一闪,电脑闪来闪去,问题解决办法
闪屏是电脑显示器常见问题,表现为画面闪烁或抖动,可能由显卡故障、驱动问题、软件冲突或硬件连接不良引起。解决方法包括检查显卡、更新驱动、调整刷新率及排查电源等问题。
1532 6
|
12月前
|
机器学习/深度学习 新零售 人工智能
基于阿里云AI购物助手解决方案的深度评测
阿里云推出的AI购物助手解决方案,采用模块化架构,涵盖智能对话引擎、商品知识图谱和个性化推荐引擎。评测显示其在智能咨询问答、个性化推荐和多模态交互方面表现出色,准确率高且响应迅速。改进建议包括提升复杂问题理解、简化推荐过程及优化话术。总体评价认为该方案技术先进,应用效果好,能显著提升电商购物体验并降低运营成本。
1238 0
|
搜索推荐 数据库
MaxKB创建本地知识库
这篇文章详细介绍了如何使用MaxKB创建本地知识库,并通过上传文档来构建个性化的问答系统,使得大模型可以根据上传的知识内容来回答问题。
1038 1
MaxKB创建本地知识库
|
数据采集 安全 算法
李飞飞数字表兄弟破解机器人训练难题!零样本sim2real成功率高达90%
李飞飞团队提出“数字表兄弟”(Digital Cousins)概念,通过自动化创建数字表兄弟(ACDC)方法,大幅提升了机器人在真实环境中的训练效果。该方法在零样本sim2real迁移实验中成功率达到90%,显著优于传统方法。
275 3
|
PyTorch 算法框架/工具 异构计算
PyTorch 2.2 中文官方教程(十三)(4)
PyTorch 2.2 中文官方教程(十三)
820 1
PyTorch 2.2 中文官方教程(十三)(4)
|
存储 机器学习/深度学习 算法
如何准确的估计llm推理和微调的内存消耗
最近发布的三个大型语言模型——Command-R+ (104B参数), Mixtral-8x22b (141B参数的MoE模型), 和 Llama 3 70b (70.6B参数)——需要巨大的内存资源。推理时,Command-R+需193.72GB GPU RAM,Mixtral-8x22B需262.63GB,Llama 370b需131.5GB。激活的内存消耗根据序列长度、批大小等因素变化。文章详细介绍了计算这些模型内存需求的方法,并探讨了如何通过量化、优化器优化和梯度检查点减少内存使用,以适应微调和推理。
2215 0
|
Unix Shell
shell指定参数名传参
shell指定参数名传参
335 0
|
算法 数据挖掘
一些连续离散化方法
一些连续离散化方法
511 0

热门文章

最新文章