- 设计深度学习系统
- (美)王迟 (美)司徒杰鹏
- 1189字
- 2025-03-13 16:30:30
CHAPTER 2
第2章 数据集管理服务
本章涵盖以下内容:
● 理解数据集管理
● 使用设计原则构建数据集管理服务
● 构建示例数据集管理服务
● 使用开源方法进行数据集管理
在对深度学习系统进行了一般性讨论之后,接下来的章节将重点关注这些系统中的具体组件。我们将首先介绍数据集管理,这不仅是因为深度学习项目是数据驱动的,还因为我们希望在构建其他服务之前强调关注数据管理的重要性。
数据集管理(DM)在深度学习模型开发过程中经常被忽视,而数据处理、模型训练和服务却受到最多的关注。在数据工程中,人们普遍认为有良好的数据处理流水线(如ETL流水线)就足够了。但是,如果在项目进行过程中忽视数据集的管理,数据收集和数据集使用逻辑会变得越来越复杂,模型性能的改进也会变得困难,最终使得整个项目进展缓慢。一个良好的DM系统可以通过解耦训练数据的收集和使用来加速模型开发;此外,通过对训练数据进行版本管理,还可以实现模型的可复现性。
我们保证,你将来会感激你先前做的明智决定,即在现有的数据处理流程之外建立或者至少设置一个数据集管理组件,并且在着手处理训练和服务组件之前先完成它的构建。长远来看,你的深度学习项目开发将会更加高效,能够产生更好的结果和更简单的模型,因为数据集管理(DM)组件会将上游数据复杂性与你的模型训练代码隔离开来,使你的模型算法开发和数据开发能够并行进行。
本章将介绍如何为你的深度学习项目构建数据集管理功能。由于深度学习算法、数据流程和数据源的多样性,数据集管理是深度学习行业经常讨论的话题。目前尚无统一的数据集管理方法,并且似乎永远也不会有一个统一的方法。因此,为了让你在实践中受益,我们将着重讲解设计原则,而不是提倡一种单一的方法。我们在本章中构建的示例数据集管理服务展示了一种可能的实现方式。
在2.1节中,你将了解为什么需要数据集管理、它应该解决哪些挑战,以及在深度学习系统中扮演怎样的关键角色。我们还将介绍其主要的设计原则,以便为下一节中的具体示例做好准备。
在2.2节中,我们将根据2.1节中介绍的概念和设计原则演示一个数据集管理服务。首先,我们将在你的本地机器上设置该服务并进行实验。其次,我们将讨论内部数据集存储和数据模式、用户场景、数据摄取API和数据集获取API,以及提供设计和用户场景的概述。在这个过程中,我们还将讨论服务设计中做出的一些重要决策的利弊。
在2.3节中,我们将研究两种开源方法。如果你不想使用自己设计的数据集管理服务,则可以使用已构建完成、可用且可调整的组件。例如,如果你现有的数据流程是构建在Apache Spark之上,则可以使用Delta Lake与Petastorm进行数据集管理。如果你的数据直接来自云对象存储,例如AWS Simple Storage Service(S3)或Azure Blob,则可以采用Pachyderm。我们将以图像数据集准备为例,展示这两种方法是如何在实践中处理非结构化数据的。通过本章的学习,你将深入了解数据集管理的内在特性和设计原则,从而可以自行构建数据集管理服务,或者改进现有的工作中的系统。