一款强大的机器学习可视化IDE

专注Python、AI、大数据,请关注公众号七步编程!
人工智能方向的项目,和数据可视化是紧密相连的 。
模型训练过程中梯度下降过程是什么样的?损失函数的走向如何?训练模型的准确度怎么变化的?
清楚这些数据,对我们模型的优化至关重要 。
由于人工智能项目往往伴随着巨大数据量,用肉眼去逐个数据查看、分析是不显示的 。这时候就需要用到数据可视化和日志分析报告 。
TensorFlow自带的Tensorboard在模型和训练过程可视化方面做得越来越好 。但是,也越来越臃肿,对于初入人工智能的同学来说有一定的门槛 。
人工智能方面的项目变得越来越规范化,以模型训练、数据集准备为例,目前很多大公司已经发布了各自的自动机器学习平台,让工程师把更多精力放在优化策略上,而不是在准备数据、数据可视化方面 。
本文,就来给大家介绍一款新型的机器学习可视化IDE,能够让人工智能研发过程变得更加简单明了 。
wandb
一款强大的机器学习可视化IDE

文章插图
 
wandb是Weights & Biases的缩写,这款工具能够帮助跟踪你的机器学习项目 。它能够自动记录模型训练过程中的超参数和输出指标,然后可视化和比较结果,并快速与同事共享结果 。
通过wandb,能够给你的机器学习项目带来强大的交互式可视化调试体验,能够自动化记录Python脚本中的图标,并且实时在网页仪表盘展示它的结果,例如,损失函数、准确率、召回率,它能够让你在最短的时间内完成机器学习项目可视化图片的制作 。
总结而言,wandb有4项核心功能:
  • 看板:跟踪训练过程,给出可视化结果
  • 报告:保存和共享训练过程中一些细节、有价值的信息
  • 调优:使用超参数调优来优化你训练的模型
  • 工具:数据集和模型版本化
也就是说,wandb并不单纯的是一款数据可视化工具 。它具有更为强大的模型和数据版本管理 。此外,还可以对你训练的模型进行调优 。
wandb另外一大亮点的就是强大的兼容性,它能够和Jupyter、TensorFlow、Pytorch、Keras、Scikit、fast.ai、LightGBM、XGBoost一起结合使用 。
因此,它不仅可以给你带来时间和精力上的节省,还能够给你的结果带来质的改变 。
举几个例子:
验证数据可视化
wandb会自动选取一部分验证数据,然后把它展示到面板上 。例如,手写体预测的结果、目标识别的包围盒 。
一款强大的机器学习可视化IDE

文章插图
 
自然语言
使用自定义图表可视化基于NLP注意力的模型
一款强大的机器学习可视化IDE

文章插图
 
这里只给出2个示例,除了这些,它目前还有更多实用有价值的功能 。而且,它还不断在增加新功能 。
使用教程官方称wandb为IDE,但是它更像TensorFlow、Pytorch一样,是一款高级Python第三方工具包 。它的安装、使用都和Python其他工具包大同小异 。
安装
wandb的使用需要Python3,安装非常简单,直接通过pip命令即可安装:
$ pip install wandb登录网站
使用wandb需要登录wandb网站,你可以创建一个新账号,也可以用GitHub或者google账号进行登录 。
登录之后,你会发现它像很多其他的web版IDE一样,可以创建项目,而且每个项目下都会有各种看板、报告 。
API Keys
登录之后,点击右上角头像,进入User Settings,可以看到有API Keys 。这个API Keys主要用于登录,用于连接桌面项目和wandb后台系统 。
回到自己电脑桌面,打开终端,使用API Keys进行登录:
$ wandb login <YOUR API KEYS>记得,<YOUR API KEYS>要替换成你自己的API Keys 。
训练脚本
到此为止,工具层面的配置已经完成了,你需要的就是准备好你的训练脚本 。
训练脚本的准备和正常情况完全一样,像导入其他工具包一样导入wandb,在wandb可以定义配置参数、dropout、日志监控等 。
这里,给一个简单的示例,写一个名为train.py的脚本:
# Init wandbimport wandbwandb.init(project="demo")# Model instantiation code ...# Log metrics with wandb for _ in range(num_epochs):train_model()loss = calulate_loss()wandb.log({"Loss": loss})# Save model to wandbnp.save("weights", weights)wandb.save("weights.npy")可以发现,它和Tensorboard的使用有一些相通之处,直接可以在代码中定义初始化、上传日志、保持模型 。


推荐阅读