- 设计深度学习系统
- (美)王迟 (美)司徒杰鹏
- 1434字
- 2025-03-13 16:30:31
2.1.2 数据集管理设计原则
在开始构建数据集管理服务之前,我们先概述五个设计原则。
注意 我们认为这五个原则是本章中最重要的要素。对于数据应用程序来说,我们遵循的设计原则比实际设计更重要,因为数据可能以任何形式存在,通常不存在通用的数据存储范式,也没有适用于所有数据处理用例的标准设计。因此,在实践中,我们通过遵循特定的通用原则来构建我们自己的数据应用程序。因此,这些原则至关重要。
这五个原则将为你构建新的数据集管理服务,或为改进现有的数据集管理服务提供明确的设计目标。
1.原则1:支持数据集可复现性以复现模型
数据集可复现性意味着数据集管理服务总是返回与过去相同的精确训练示例。例如,当训练团队开始训练一个模型时,数据集管理服务提供带有版本字符串的数据集。任何时候,训练团队或其他团队需要检索相同的训练数据时,都可以使用此版本的字符串查询数据集管理服务以检索相同的训练数据。
我们认为所有的数据集管理系统都应该支持数据集可复现性。更好的做法是还提供数据差异功能,这样我们就可以轻松地查看两个不同数据集版本之间的数据差异。这对于故障而言排查非常方便。
2.原则2:为不同类型的数据集提供统一的API接口
深度学习的数据集可以是结构化的(文本,如销售记录或用户对话的转录)或非结构化的(图像、语音录音文件)。无论数据集管理系统如何在内部处理和存储这些不同形式的数据,它都应该为上传和提取不同类型的数据集提供统一的API接口。API接口还将数据源从数据消费者中抽象分离出来,不管在幕后发生什么,比如数据解析变化和内部存储格式变化,下游消费者都不应受到影响。
因此,我们的用户(包括数据科学家和数据开发人员)只需要学习一个API就可以处理所有不同类型的数据集。这使得系统简单易用。而且,由于我们只公开一个公共API,代码维护成本将大大降低。
3.原则3:采用强类型数据模式
强类型的数据模式是避免由数据变化引起的意外故障的关键。通过数据模式强制执行,数据集管理服务可以确保其摄取的原始数据和生成的训练数据与我们的规格一致。
强类型的数据模式可以充当安全保护,确保下游的模型训练代码不会受到上游数据收集变化的影响,同时还确保数据集管理服务的上游和下游客户端的向后兼容性。如果没有数据模式保护,数据集的消费者——即下游的模型训练代码——就容易受到上游数据变化的影响。
数据模式也可以进行版本管理,但这会给管理带来另一层复杂性。另一个选项是使每个数据集只有一个模式。在引入新的数据变化时,要先确保模式更新是向后兼容的。如果新的数据需求需要一个破坏性的变化,就可以创建一个带有新模式的新数据集类型,而不是更新现有的数据集。
4.原则4:确保API的一致性并在内部处理扩展
当前深度学习领域的趋势是模型架构随着数据集不断增大而变得越来越庞大。例如,GPT-3(一种用于语言理解的生成预训练Transformer语言模型)使用了超过250 TB的文本材料,其中包含数千亿个单词;在特斯拉公司,自动驾驶模型消耗着以PB级计量的大量数据。另一方面,在某些狭窄领域的简单任务中,例如客户支持工单分类,我们仍然使用较小的数据集(约50 MB)。数据集管理系统应该内部处理数据规模的挑战,并且无论是对于大型还是对于小型数据集,系统向用户(数据开发人员和数据科学家)公开的API应该是一致的。
5.原则5:保证数据的持久性
理想情况下,用于深度学习训练的数据集应该以不可变的方式存储,以便复现训练数据和故障排查。数据的删除应该是软删除,只有少数情况下才会进行硬删除,例如,当客户选择退出或取消账户时,永久删除客户数据。