1.3 云计算与人工智能云平台
人工智能云平台本质上是一种特殊的云计算平台。因此,要了解人工智能云平台就不得不回顾一下云计算。
对云计算的定义很多,目前被大家广为接受的是美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)的定义:云计算是一种模型,可以提供对可配置计算资源(例如网络、服务器、存储、应用程序和服务)共享池的便捷、按需访问,且只需要很少的管理工作量或与资源服务提供商进行很少的交互。
可以说,云计算是分布式并行计算、网络共享存储、虚拟化、负载均衡、冗余备份等传统计算机和网络技术发展融合的产物。“云”是一种比喻说法,用“云”来抽象地表示互联网和底层基础设施。云计算可以为用户提供每秒10万亿次以上的运算能力,用户只需通过租用的方式就可以拥有这么强大的算力,而不需购买实体的算力资源硬件设备。利用这些算力,用户可以完成模拟宇宙爆炸、天气预报等超大计算任务。通过台式电脑、笔记本电脑、手机等低成本终端,超越地域的限制以便捷的形式接入数据中心,用户就可以按自己的需求进行运算。云计算服务供应商集中管理必须的软硬件,而不需要用户进行机房的维护。这样用户就能够随时随地调用计算资源,在使用完或不用时及时释放计算资源以供再分配,从而提高资源使用率,降低IT 使用成本。
云计算服务有多种分类方式,比较常用的是按层级划分,主要有以下几种类型。
基础设施即服务(Infrastructure as a Service,IaaS)。用户通过互联网就可以获得充足的计算机基础设施服务,例如在线的硬件服务器租用。
平台即服务(Platform as a Service,PaaS)。PaaS供应商将研发的软件平台作为一种在线服务。
软件即服务(Software as a Service,SaaS)。SaaS供应商通过互联网提供应用软件,用户无需购买软件,而是向供应商租用基于Web的软件来管理企业经营活动。
IaaS、PaaS和SaaS三者之间的区别如图1-2所示。
众多科技巨头都会根据自身的业务特点和能力对外提供云计算服务。例如亚马逊 AWS(Amazon Web Services)、谷歌 Cloud、IBM Blue Cloud、微软 Azure,国内的阿里云、华为云、腾讯云、百度云等。这些大公司的云计算产品比较丰富,往往既有IaaS也有PaaS和SaaS。
图1-2 IaaS、PaaS和SaaS三者之间的区别
近年来,随着AI的爆发式发展,除了传统的IaaS、PaaS以及SaaS层级外,机器学习即服务(Machine Learning as a Service,MLaaS)逐渐变成云计算领域最火的词。MLaaS包含一系列服务,这些服务将机器学习工具作为云计算服务的一部分。MLaaS帮助客户从机器学习中受益,而无需承担建立内部机器学习团队的经济成本、时间成本和风险。通过MLaaS可以缓解数据预处理、模型训练、模型评估以及最终预测等基础设施问题。MLaaS是未来大型互联网公司必争的重要领域,各云计算供应商要想在这个领域占据主动地位,就必须为AI开发提供最先进的开发工具和最高性能的硬件平台。
实际上,MLaaS对应人工智能云平台的概念,其本质是一种特殊的云计算服务,因其特殊性被单独列为一个新的层级。本质上,人工智能云平台与PaaS非常类似,一方面允许进行基本的AI相关应用程序开发,另一方面又因提供人工智能和机器学习功能而具有鲜明的特点。
与常规的PaaS云计算服务相比,人工智能云平台具有以下特点。
计算资源特殊性和多样性。通常云计算服务为各种应用提供的计算设备较为单一,主要是以X86架构的中央处理器(CPU)为主,其对计算资源的管理调度和虚拟化管理也较为成熟。由于智能算法尤其是深度学习算法具有高计算复杂度,因此人工智能云平台需要为智能算法提供高性能计算设备。这些计算设备不仅限于CPU,还包括图形处理器(GPU)、张量处理单元(TPU)、现场可编程门阵列(Field Programmable Gate Array,FPGA)等。这些异构设备的架构不一、特点迥异,应用场景有较大区别,虚拟化机制也远没有CPU成熟。因此,这些问题为人工智能云平台的计算资源管理调度能力提出了更高的要求。
大规模分布式并行计算。人工智能云平台提供智能算法的训练和推理预测运行环境。虽然GPU、TPU等高性能计算设备的出现大大提高了智能算法的运行效率,但单一的计算节点和单一的高性能计算设备还是无法满足智能算法训练和推理预测所需要的算力需求。因此,人工智能云计算平台还需要提供大规模分布式并行计算的能力,充分利用计算设备的算力,最大化并行计算的规模效率比,降低不同节点的通信和同步损耗,同时,还要对上层用户尽量透明,以免使算法科学家卷入复杂的分布式调度机制中。
对样本数据的标注、预处理、管理与访问。智能算法需要的训练样本包含了样本数据和数据的标注,尤其是监督学习(Supervised Learning)更需要这些数据。数据标注的过程是将人类知识赋予到数据上的过程。往往有了好的标注数据,才有可能训练出好的模型。训练时,会将数据和数据的标注同时输入机器学习模型,让模型来学习两者间的映射关系。
除了数据标注外,智能算法的训练过程还需要对样本数据进行预处理,包括随机裁切、样本增强、减均值、白化操作等。在训练过程中往往会综合采用多种预处理方法来进行数据增强。
此外,对海量的样本数据进行随机批量访问也是智能算法训练必须面对的问题。因此,需要解决对大样本数据集的共享存储管理和访问问题。同时,在训练时,为了避免数据I/O成为影响计算效率的瓶颈,往往需要采用多线程数据加载队列的策略,预读取下一次迭代需要的训练样本,以提高GPU或其他高性能计算单元的使用效率。
与人工智能应用流程密切相关。人工智能应用具有鲜明的业务特点,主要分为数据预处理、模型开发、模型部署预测三大环节。数据预处理主要包括存储、加工、采集和标注几大主要功能,前3项与大数据平台几乎一致,而标注功能是人工智能平台所特有的。模型开发包括特征提取、模型训练及模型评估:特征提取即设计并计算数据的有效特征表示;模型训练主要是平台的计算过程,将样本数据中蕴含的知识转化为模型参数;模型评估主要是对训练好的模型计算相应的评估指标,衡量模型算法性能。模型部署预测将模型部署到生产环境中进行推理应用,真正发挥模型的价值。
需要提供交互式的模型算法实验环境。设计开发智能算法的过程是一个实验过程,需要不断迭代模型结构、超参数,并通过代码调试、分析输出、绘制曲线、交叉验证等多种手段方便算法科学家进行交互式开发。对某一段代码提供所见即所得的交互式体验,对于调试智能算法代码来说非常方便,因此,人工智能云平台需要提供面向多租户的交互式模型算法实验环境。
目前,主流的商业云计算服务运营商纷纷在其云计算产品线中提供了人工智能云平台服务,我们将在第2章进行相关介绍。