在《01.AI工程(AI Engineering)初探》中,我们介绍了为何Gartner要把AI工程化作为未来重要战略技术趋势之一,这是因为AI软件与传统软件之间存在根本性差异,简单照搬传统软件工程方法来解决AI领域的问题是行不通的,因此需要发展新的工程技术来支撑AI大规模、平民化的落地。
本篇中,我们将进一步对AI工程进行解读,主要包括:
“软件工程”这一名词诞生于1968年,它的出现是为了克服当时出现的“软件危机”,目标是通过系统化、规范化、可度量的工程方法,来确保软件项目的进度、成本和质量能够达到预期。
AI工程的出现,也有着类似的背景,同样也是为了应对AI软件可能的“危机”而诞生的。
在2019年,由国际系统工程理事会(INCOSE)主办的“系统工程的未来”(FuSE)研讨会上,首次提出了“SE for AI”(又称SE4AI)这一术语,来描述应对人工智能实际应用的挑战所需要的工程方法与技术,这些挑战主要被概括为三方面:AI系统本身的不可预测性、AI系统中新的故障模式、以及AI系统在可信和健壮性方面的不足[1]。
后来,Gartner公司等其他机构也经常用“AI工程”(AI Engineering)这个词来描述面向AI系统的过程、方法与工具,虽然表述不同,但要解决的都是AI领域工程化的问题。这就是AI工程这一概念的由来。
近年来,学术界研究机构 及 工业界各大公司都已争先在AI工程领域布局,学术界以创新研究、前沿技术探索、人才培养为主;工业界则以实用的技术和工具的发展为主,如下所示:
图2. 2010-2020年AI工程相关论文分布(Software Engineering for AI-Based Systems: A Survey, ACM TOSEM, 2021)
在上面的内容中,我们分析了AI工程在业界的发展现状。接下来,我们从不同视角解读AI工程。
回到软件工程的本质,我们会发现AI工程的本质与软件工程是一致的,即在AI软件开发的整个生命周期过程中系统化、规范化、可度量地使用各种工程方法和工具,来确保所交付的软件能达到预期。
而AI工程相对于传统软件工程方法变化的部分,只是在应用对象和要达成的目标上发生了外延,应用对象变成了基于AI的软件,而达成的目标从进度、成本、质量可控进一步外延为希望克服AI软件固有的问题(不可预测性、特有的故障模式等),从而交付可信、健壮、行为可预期的AI系统。
图3 AI工程与软件工程、人工智能的关系
2. 从产业实践视角看AI工程(Gartner)
Gartner公司在关于2022年战略技术趋势的一份报告中提出[2],如果企业让人工智能提供变革性的价值,就不能只是单点地应用AI技术,而是需要在其商业生态系统中将AI模型工业化,以便快速、持续地提供新的业务价值,而要做到这一点的关键就是应用AI工程技术。
围绕着数据处理、机器学习模型训练与推理、应用交付与维护这几个关键流程,Gartner认为,AI工程主要由DataOps、MLOps和DevOps三部分核心技术组成,其目标是通过跨职能协作、自动化、快速反馈等方法,来缩短数据分析、机器学习和应用部署上线的周期,从而让AI模型快速、持续地提供业务价值。
图4 Gartner AI Engineering的组成
DevOps:是一组软件开发和运维团队之间的文化理念、实践和工具的结合,以便提高团队的快速交付能力,在微服务与云原生应用的交付团队中备受推崇;
DataOps:是将数据处理和集成过程与自动化和敏捷软件工程方法相结合的技术实践,以提高数据分析的质量、速度和团队协作,并促进持续改进 [3];
MLOps:是在生产环境中可靠而高效地部署和维护机器学习模型的实践 [4]。
3. 从生态视角看AI工程(LF AI & Data Landscape)
AI软件开发的生态系统,特指围绕AI软件开发的一系列基础设施和工具链,包括制品仓、数据管理工具、模型管理器、持续训练流水线、模型验证与评估工具、模型部署与监控系统等。
Linux基金会旗下的子基金会LF AI & Data Foundation,致力于AI与大数据领域的开源软件发展,目前在维护一个名为LF AI & Data Landscape的开源软件产品全景图,可以作为AI软件开发生态系统的一个很好的参考。
该全景图当前已包括300多款开源软件,涉及AI框架、MLOps流水线、特征工程、可视化等多个子领域。
AI软件开发生态系统中的组件,在功能、用途甚至名称上都与传统软件开发的生态系统存在差异,包括但不限于:
四、AI工程技术全景图
综合业界、学术界以及研究机构的主流观点,再结合目前在MindSpore中研究的内容,笔者认为,AI工程从广义上应包括AI软件开发生命周期、工程实践、生态系统三部分:
1. AI软件开发生命周期:即从问题分析与抽象开始,进行设计开发,直到最后部署上线的整个流程,各类软件工程技术也是按照软件开发生命周期进行分类和组织的。
2. AI工程实践:AI软件开发过程中所使用的各种工程化方法和最佳实践,可分为两类,一类是与AI软件开发生命周期中某个步骤对应的专项技术,如数据分析对应于数据准备环节、设计模式对应于模型训练环节;另一类则是与整个软件开发生命周期相关的技术,如机器学习团队中的角色组成、工程师的能力模型,以及对AI系统的治理技术。
3. 生态系统:AI软件开发所需使用的基础设施和软件工具的集合,包括数据分析、编码检查、调试调优、部署监控等各种专项工具。
图6 AI工程技术全景图
在本专栏后续的文章中,会围绕MindSpore框架,全方位介绍基于AI工程的技术实践与生态组件。
小结
软件工程是一门为了克服危机而诞生的工程学科,AI工程的出现也有着类似的背景,同样也是为了应对AI软件可能的“危机”而诞生的。作为一门新兴学科,目前学术界和工业界都已在这个领域积极布局。
AI工程,就是在AI软件开发生命周期中应用各种工程方法和工具,来确保所交付的AI系统可信、健壮、行为可预期。AI工程技术包括了对AI软件开发生命周期的定义、AI工程方法实践,以及由各种基础设施和工具链所组成的生态系统。
AI框架作为AI领域的基础软件,在AI软件栈中处于承上启下的位置,并能够在AI软件开发生命周期的主要步骤中提供多项关键工程能力。学好AI框架的使用,能够帮助打下牢固的AI工程技术基础。
上一篇: 01 - 开篇词:AI工程(AI Engineering)初探
下一篇: 03-迭代0:机器学习项目开始前要做哪些准备工作?
更多精彩分享,欢迎访问和关注:https://www.zhihu.com/people/wldandan