很多搞机器学习的人都苦于数据管理。要么数据集很旧,需要人工修改和标注。要么同一个数据集有很多版本被别人调过,无从下手。或者,如果根本没有合适的数据集,则需要自己创建。在国外,一个叫SimonLousky的程序员终于忍无可忍,开发了一套机器学习的数据版本控制工具(DataVersionControl,DVC)。一键访问数据集,一键查看编辑历史……最重要的是,在DVC工具的背后,有一个类似GitHub的数据托管社区。“振兴”数据集SimonLousky在学生时代做项目时就已经感受到了机器学习数据集管理不便的痛点。当时,他的模型需要植物和花卉数据集进行训练,而开源数据集无论如何都无法产生合理的结果。于是他自己花了几个小时,将数据集中大量过时、不合理的标签一一修正,训练结果很满意。除了这个项目,他还进行了许多数据集的修正、补充和创建。他将这些费时费力的过程称为“数据集的试错调试”,并开始有意记录操作历史。他逐渐发现,在自己的项目中,数据管理总是乱七八糟,而GitHub托管的代码却总是井井有条。那么为什么不做一个类似GitHub的专门做数据管理的工具呢?因此,DVC诞生了。这是一个预装的工具库,实现了包括调用数据集、查看历史运行信息等功能。它的出现意味着研究人员在本地“死”数据集上训练模型的方式已经完全改变。您可以将项目链接到在线托管的数据集(或任何文件),从而建立实时、准确的连接。数据集的任何更新和变化都能及时获知,方便项目的开发。例如,现在有一个RepositoryA,它是一个“实时”数据集,其中元数据文件指向存储在专用服务器上的真实大文件。用户可以将数据集文件组织成目录,并添加带有utils函数的代码文件,方便调用。另外还有一个RepositoryB,对应机器学习项目,项目代码包含使用DVC导入数据集的说明。只要创建一个数据注册表,就可以在A和B之间建立连接:mkdirmy-dataset&&cdmy-datasetgitinitdvcinit这时候dataset目录会是这样的:当需要查看dataset的相关信息时,进入命令:dvcaddannotationsdvcaddimagesgitadd.&&gitcommit-m“Startingtomanagemydataset”数据集预览保存到一个目录,该目录也由DVC跟踪。然后用户只需要把代码和数据推送到托管仓库,就可以随时随地访问,分享给其他人。当然,DVC要发挥作用,自然少不了其背后的DAGsHub。DAGsHub是GitHub的数据管理版,由三部分组成,git仓库、DVC、机器学习流程平台mlflow。用户可以提交自己的项目,DAGsHub会自动扫描提交的内容并提取有用的信息,例如实验参数、数据文件和模型的链接,并将它们组合到一个简单的界面中。DAGsHub可以在不下载任何东西的情况下浏览和比较代码、数据、模型和实验。此外,它还可以生成可视化的数据管道、数据运行历史、记录模型性能,自动化且美观。如何在机器学习项目中使用“实时”数据集要使用DAGsHub,只需注册并登录即可。通过以下命令安装DVC:pip3installdvc在DAGsHub上找到一个数据集,如何在自己的模型中使用它?首先,从托管数据集中导入一个目录作为原始文件:mkdir-pdata/rawdvcimport-odata/raw/images\https://dagshub.com/Simon/baby-yoda-segmentation-dataset\data/imagesdvcimport-odata/raw/annotations\https://dagshub.com/Simon/baby-yoda-segmentation-dataset\data/annotations然后,图片和注释会被下载到你自己的项目中,并保留历史信息信息。当你想知道数据集的变化历史时,只需要运行命令:dvcupdate,将可视化结果返回到默认目录保存:是不是很方便?对了,DVC和DAGsHub都是开源免费的,快来试试传送门:DVC教程:https://dagshub.com/docs/experiment-tutorial/2-data-versioning/DAGsHub主页:https://dagshub.com/
