1.4 智能框架与人工智能云平台
在机器学习和深度学习初始阶段,每个智能开发者都需要写大量的重复代码。为了提高工作效率,开源研究者和具有前瞻性的科技公司开发了机器学习和深度学习的算法框架,供研究者共同使用。随着时间的推移,较为好用的几个框架更受大多数开发者的欢迎,从而流行起来。迄今,全世界较为流行的智能开发框架有TensorFlow、PyTorch、Caffe、MXNet、Keras和scikit-learn等。本书将在后面的章节对这些流行的智能开发框架进行介绍。
智能开发框架的出现大大降低了智能应用开发的门槛,算法开发者不再需要从零开始搭建复杂的神经网络,而是可以根据需要选择已有的模型结构,也可以在已有模型的基础上增、删、改网络层以及选择需要的分类器和优化算法。总的来说,智能开发框架提供了一系列的深度学习和机器学习的标准组件,实现了许多经典的、通用的算法,提高了算法开发效率。算法开发者需要使用新的算法时,可以灵活定义扩展,然后通过智能开发框架的特定接口调用自定义的新算法。
可以说,对于算法研发人员而言,智能开发框架是算法模型的直接生成工具,并逐渐成为事实上的模型开发和生成的标准规范。目前主流的人工智能云平台都是在流行的智能开发框架基础上构建智能服务的,具体如图1-3所示。
图1-3 智能开发框架和人工智能云平台的关系
智能开发框架解决了算法开发者快速进行算法模型开发的问题,但其只是一套开发库和计算引擎,尚缺乏系统而完善的运行管理机制和透明的分布式资源管理能力。其主要不足有以下几个。
资源隔离。智能框架中并没有租户的概念,如何在集群中建立租户的概念,做到资源的有效隔离成为比较重要的问题。
缺乏完善的GPU调度机制。智能框架通过指定GPU的编号来实现GPU的调度,这样容易造成集群的GPU负载不均衡。
分布式应用。分布式应用需要在运行时显示指定集群的IP和GPU资源,而且许多智能开发框架的分布式模式会出现进程遗留问题。
训练的数据分发以及训练模型保存都需要人工介入。
训练日志保存、查看不方便。
缺少提供作业和任务的排队调度框架。
与大数据系统的兼容性问题。智能开发框架支持的数据源和输入/输出数据结构与云计算场景下的大数据生态并不完全兼容,这对多种计算引擎协同处理统一数据集的应用场景并不友好。
因此,TensorFlow、PyTorch、MXNet等智能框架尚不足以支持大规模商业云计算场景下人工智能的全流程生产化应用,无法在进行大规模模型训练的云计算资源上提供面向多租户的智能学习全流程服务。其欠缺诸如大数据样本管理和预处理、多用户模型训练、管理和运行、资源管理、任务调度和运行监控等能力,最终导致用户形成生产力的成本过高。因此,需要一个集群调度和管理系统解决GPU调度、资源隔离、统一的作业管理和跟踪等问题。
人工智能云平台则是以智能开发框架为底层计算引擎,在为用户屏蔽了计算、存储以及运行环境的复杂性之后,提供了面向算法科学家的多租户云计算PaaS,达到扩展人工智能算法服务的训练生产能力,缩短智能服务的上线、更新周期,提高人工智能服务的生产效率的目的。
人工智能云平台集成各主流智能开发框架的优势,并在此基础上构建了统一框架进行优势的整合,梳理了智能应用从数据上传到训练学习再到模型发布的全流程,为智能应用提供基础的、面向通用智能处理算法的训练测试功能,提供学习模型、训练样本数据的管理维护工具。用户可以通过智能开发框架构建自己的业务模型,并对已有模型进行训练更新;同时也可将智能框架提供的智能应用支撑功能应用到自己的业务流程中,提高业务的智能化程度。因此,人工智能云平台是构建在智能开发框架上的云计算环境中的PaaS。
为了降低AI学习门槛,构建高效的资源调度能力,提供一站式智能应用服务体验,人工智能云平台注定要面临许多挑战。这些挑战多数都是围绕“异质性”“大规模”这些特点展开的。在构建一个人工智能云平台时,一般不会重复制造算法科学家早已熟悉的“轮子”,而是可以充分利用一些开源框架,甚至一些开放平台,再做进一步的封装和处理。