超数据集数据版本控制
视频教程
你好,欢迎来到ClearML。在本视频中,我们将更详细地了解Hyper-Datasets,这是ClearML Data的增强版本。
Hyper-Datasets 是一个为文本、音频或视觉数据等非结构化数据设计的数据管理系统。它是 ClearML 付费产品的一部分,这意味着它比开源的 clearml-data
带来了相当多的升级。
两者之间的主要概念区别在于,Hyper-Datasets 将元数据与原始数据文件解耦。这使您能够以各种方式操作元数据,同时抽象出处理大量数据的物流问题。
操作元数据是通过查询和参数完成的,这两者都可以使用实验管理器进行跟踪。
这意味着不仅可以轻松追溯训练时使用的数据,还可以克隆实验并使用不同的数据操作重新运行,而无需更改任何一行代码!将此与clearml-agent
和自动扩展器结合使用,您就可以开始看到潜力。
数据操作本身成为实验的一部分,我们称之为数据视图。机器学习工程师可以创建模型训练代码,然后数据工程师或质量保证工程师可以在不编写任何代码的情况下尝试不同的数据集配置。本质上,数据访问是完全抽象的。
相比之下,在ClearML数据中,就像许多其他数据版本控制工具一样,数据和元数据是纠缠在一起的。以这个例子为例,图像的标签是由它所在的文件夹定义的,这是一种常见的数据集结构。如果我只想训练甜甜圈呢?或者如果我有一个大的类别不平衡怎么办?即使我可能只使用其中的一小部分,我仍然必须下载整个数据集。然后我必须更改我的代码,只抓取甜甜圈图像或通过过采样或欠采样来重新平衡我的类别。如果以后我想在混合中添加华夫饼,我必须再次更改我的代码。
让我们来看一个例子,它将向你展示如何使用Hyper-Datasets来调试一个表现不佳的模型。但首先,我们从任何优秀的数据科学项目开始的地方开始:数据探索。
当你打开Hyper-Datasets以探索数据集时,你可以在这里找到该数据集的版本历史。数据集可以有多个版本,每个版本又可以拥有多个子版本。每个子版本将继承其父版本的内容。
默认情况下,数据集版本将处于草稿模式,这意味着它仍然可以修改。您可以按下发布按钮来锁定它,确保它不再更改。如果您想对已发布的数据集版本进行更改,请基于它创建一个新版本。
您将在这里找到自动生成的标签统计信息,这些信息为您提供了数据集中标签分布的快速概览,以及一些版本元数据和其他版本信息。
在这里,您实际上可以看到数据集本身的内容。在这种情况下,我们存储的是图像,但它也可以是视频、音频、文本,甚至是存储在别处(例如S3存储桶中)的文件的引用。
当你点击其中一个样本时,你可以看到图像本身以及图像可能被标注的任何边界框、关键点或遮罩。事实上,在这里你可以看到图像中所有标注的列表,包括图像本身的分类标签。回到主屏幕后,你还可以将样本以表格形式查看,而不是预览网格,这对于音频或文本等非常方便。
在表格上方,您可以在这里切换到高级过滤器来尝试查询功能。例如,您可以创建一个查询,只包含确定性至少为75%的甜甜圈。您基本上可以查询任何元数据或注释,所以尽情发挥吧!
这些查询的目标不仅仅是作为数据探索的一个简洁过滤器,我们希望将这些查询作为我们机器学习实验的一部分!
输入我在本视频开头介绍的数据视图。数据视图可以使用复杂的查询将一个或多个数据集中的特定数据连接到实验管理器中的实验。本质上,它创建并管理远程数据集的本地视图。
举个例子,假设你已经创建了一个实验,该实验尝试使用Hyper-Datasets基于特定数据子集来训练模型。
要获取你需要训练的数据,你可以轻松地从代码中创建一个数据视图,如下所示。然后你可以添加各种约束,如类过滤器、元数据过滤器和类权重,这些将根据需要过度或不足地采样数据。
运行任务后,我们可以在实验管理器中看到它。模型正在报告标量并按预期进行训练。使用Hyper-Datasets时,还有一个Dataviews标签,其中包含所有可用的可能性。你可以看到你使用的输入数据集和版本,并可以看到用于子集化的查询系统。这将为你提供一个很好的、干净的方式来在数据的非常特定的子集上训练你的模型,但还有更多!
如果你想重新映射标签,或者将它们动态地枚举为整数,ClearML 会跟踪所有完成的转换,并确保它们是可重现的。当然,还有更多内容,所以如果你感兴趣,请查看我们关于超数据集的文档。
ClearML的老手们已经知道接下来会发生什么。克隆。
想象一下,机器学习工程师已经创建了我们之前看到的模型训练代码,并将数据视图集成为数据源。
现在,一位质量保证工程师或数据分析师发现数据分布不太平衡,这导致模型偏离了预期。
无需更改底层代码,任何人都可以克隆现有的实验。这允许他们在数据视图中更改任何查询或参数。在这个例子中,我们将更改类别权重为其他值,从而修改数据分布。然后,您可以将此实验排队,以便远程ClearML代理开始工作。只需点击几下,完全相同的模型将在远程机器上重新训练,使用不同的数据分布,无需更改代码。
在远程机器上对新数据视图执行实验后,我们可以轻松比较这两个实验,以进一步帮助我们进行分析。这是一种非常快速和高效的方法,可以迭代并减少大量不必要的工作。
如果你一直在关注其他入门视频,你应该已经开始看到这种方法的潜力。例如:我们现在可以对数据本身进行超参数优化,因为之前展示的所有过滤器和设置都只是任务上的参数。整个过程可以在云自动扩展器上并行运行。想象一下,为每个类别找到最佳的训练数据置信度阈值,以优化模型性能。
如果您有兴趣为您的团队使用Hyper-Datasets,请通过我们的网站联系我们,我们将立即为您提供帮助。同时,您可以在app.clear.ml上享受开源组件的强大功能,如果您需要任何帮助,别忘了加入我们的Slack频道!