1.1 深度学习开发周期

正如前文所述,深度学习系统是深度学习项目开发能够高效推进的必要基础设施。因此,在我们深入探讨深度学习系统结构之前,审视一下深度学习系统所支持的开发范式才是明智之举。我们将这个范式称为深度学习开发周期

你可能会想,为什么要在技术书籍中强调产品开发这类非技术性的东西。事实上,大多数深度学习工作的最终目标都是将一个产品或服务推向市场。然而,很多工程师对产品开发的其他阶段并不熟悉,就像许多产品开发人员对工程或建模不了解一样。根据我们构建深度学习系统的经验,我们了解到,能否说服公司内的多个角色采用一个系统很大程度上取决于这个系统能否真正解决他们的问题。我们相信,对深度学习开发周期中的各个阶段和角色进行概述会有助于问题的阐明、解决和沟通,并最终解决每个人的痛点。

了解开发周期还可以解决其他一些问题。在过去的十年里,为了解决不同领域中的各类问题,许多新的深度学习软件包被开发出来,其中一些软件旨在解决模型训练和服务问题,而另一些软件则用于处理模型性能跟踪和实验。数据科学家和工程师在需要解决特定应用程序或用例中的问题时会将这些工具组合在一起。这被称为MLOps(机器学习运营)。随着这些应用程序的数量不断增长,每次都从头开始组合这些工具以处理新的应用程序就变得重复且耗时了。与此同时,随着这些应用程序的重要性持续增加,对其质量的要求也在提升。这两个问题都要求我们采取一种一致的方法来快速、可靠地开发和交付深度学习功能。而实现这种一致的方法的第一步便是让所有人在一个相同的深度学习开发范式或周期下工作。

深度学习系统如何融入深度学习周期?一个构建良好的深度学习系统将支持产品开发周期,使执行周期变得简单、快捷和可靠。理想情况下,数据科学家可以将深度学习系统作为基础设施来完成整个深度学习周期,而无须学习底层复杂系统的所有工程细节。

由于每个产品和组织都是独一无二的,对系统构建者来说,了解各种角色的独特需求对于构建成功的系统而言至关重要。在阅读本书的整个过程中,当我们深入探讨深度学习系统的设计原则并研究每个组件的工作方式时,你对相关角色需求的理解将帮助你运用这些知识,并形成自己的系统设计。在讨论技术细节时,我们将指出在系统设计的特定过程中需要注意哪些类型的相关角色。深度学习开发周期将为我们考虑深度学习系统的每个组件的设计需求提供指导框架。

让我们从一幅图开始。图1.1展示了一个典型的深度学习开发周期的大致样貌。它展示了机器学习(尤其是深度学习)开发的不同阶段。可以看到,跨功能合作几乎在每个步骤都有发生。我们将在接下来的两小节讨论这个图中涉及的各个阶段和角色。

图1.1 将深度学习从研究成果转化为产品的典型场景。我们称之为深度学习开发周期