专注Python、AI、大数据,请关注公众号七步编程!
人工智能方向的项目,和数据可视化是紧密相连的。
模型训练过程中梯度下降过程是什么样的?损失函数的走向如何?训练模型的准确度怎么变化的?
清楚这些数据,对我们模型的优化至关重要。
由于人工智能项目往往伴随着巨大数据量,用肉眼去逐个数据查看、分析是不显示的。这时候就需要用到数据可视化和日志分析报告。
TensorFlow自带的Tensorboard在模型和训练过程可视化方面做得越来越好。但是,也越来越臃肿,对于初入人工智能的同学来说有一定的门槛。
人工智能方面的项目变得越来越规范化,以模型训练、数据集准备为例,目前很多大公司已经发布了各自的自动机器学习平台,让工程师把更多精力放在优化策略上,而不是在准备数据、数据可视化方面。
本文,就来给大家介绍一款新型的机器学习可视化IDE,能够让人工智能研发过程变得更加简单明了。
wandb是Weights & Biases的缩写,这款工具能够帮助跟踪你的机器学习项目。它能够自动记录模型训练过程中的超参数和输出指标,然后可视化和比较结果,并快速与同事共享结果。
通过wandb,能够给你的机器学习项目带来强大的交互式可视化调试体验,能够自动化记录Python脚本中的图标,并且实时在网页仪表盘展示它的结果,例如,损失函数、准确率、召回率,它能够让你在最短的时间内完成机器学习项目可视化图片的制作。
总结而言,wandb有4项核心功能:
也就是说,wandb并不单纯的是一款数据可视化工具。它具有更为强大的模型和数据版本管理。此外,还可以对你训练的模型进行调优。
wandb另外一大亮点的就是强大的兼容性,它能够和Jupyter、TensorFlow、Pytorch、Keras、Scikit、fast.ai、LightGBM、XGBoost一起结合使用。
因此,它不仅可以给你带来时间和精力上的节省,还能够给你的结果带来质的改变。
举几个例子:
验证数据可视化
wandb会自动选取一部分验证数据,然后把它展示到面板上。例如,手写体预测的结果、目标识别的包围盒。
自然语言
使用自定义图表可视化基于NLP注意力的模型
这里只给出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 wandb
import wandb
wandb.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 wandb
np.save("weights", weights)
wandb.save("weights.npy")
可以发现,它和Tensorboard的使用有一些相通之处,直接可以在代码中定义初始化、上传日志、保持模型。
开始训练
工具配置完了,训练脚本也准备完了,下面开始训练模型即可。
$ python train.py
这些步骤都是在本地终端下完成的,一定不要忘记前面第3步,用API Keys登录。
这样的话,执行训练之后,它会在网页端wandb项目管理界面自动添加一个对应的项目,点击进入这个项目,就可以看到看板、报告等内容。