人工智能云平台:原理、设计与应用
上QQ阅读APP看书,第一时间看更新

1.5 人工智能云平台的主要环节与基本组成

前几节讨论了人工智能云平台的概念和功能需求,本节将对人工智能云平台所包含的环节和基本的组成部件进行介绍。

人工智能云平台的主要环节紧紧围绕在集群或云计算环境下人工智能应用的工作流程展开。在这个流程中,算法科学家“教”计算机做出预测或推断。首先,使用算法和样本数据训练一个模型;然后将模型集成到应用程序中产生实时和大规模的推理预测。在生产环境中,模型通常会从中学习数以百万计的示例数据项,并在几十或几百毫秒内做出预测。

人工智能云平台的基本组成如图1-4所示。

(1)样本数据准备环节

在将数据用于模型训练之前,数据科学家经常要花费大量时间和精力来获取样本数据,观察、分析、预处理以及增强样本数据。准备样本数据,通常需要执行以下操作。

图1-4 人工智能云平台的基本组成

数据获取。用户可以通过自有渠道或者从公开数据集中获取数据,并进行标注整理。获取数据后需要对数据格式进行相应的转换,使人工智能云平台能够解析。一般来说,网络爬虫和数据标注工具并非人工智能云平台的必备功能,不同的人工智能云平台服务可以根据自身业务特点决定是否提供这些能力。通常公有云计算服务只提供数据集上传功能,默认接收的是已经具备标注信息的标准样本数据集和与之配对的数据解析脚本,或者与他们自己的云存储服务整合一体,提供从云存储中接入数据的功能。而对于一些企业的私有云平台来说,因为这些系统并不对外提供服务,只针对企业内部的智能应用业务流程,因此可以深度定制。他们可以将网络数据爬取、数据标注、数据格式转换等一整套数据获取流程整合封装,为企业内部研发人员提供闭环的数据获取解决方案。

数据清理。并非每个数据集都是完美的,没有缺失值或异常值。实际的数据十分杂乱,这就要求在开始分析之前,对数据进行清理并将其转化为可接受的数据格式。数据清理是实际业务中最容易被忽视但却必不可少的一部分。为了提高模型的性能,还需要进行必要的数据标准化和数据正则化操作。数据标准化可以将通过不同手段获取的数据转换为统一均值和方差的样本。这样可以在模型训练时避免受数据量纲、值域范围的影响。数据正则化将每个样本缩放到单位范数,例如采用L1范数、L2范数等,这样在度量样本之间的相似性时会有统一的基准。

数据增强。收集样本数据准备训练模型时,经常会遇到某些数据严重不足的情况,尤其是在进行深度学习模型训练时。因为数据集过小往往会造成模型的过拟合。数据增强的目的是一方面增加样本数据的数量,另一方面丰富样本数据的变化,尽量覆盖没有出现在原始样本数据中的变化情况,增加模型的鲁棒性。数据增强的手段有很多,不同的数据有不同的增强方式。以图像样本增强为例,常见的增强方法有:图像亮度、饱和度、对比度变化(Color Jittering)、采用随机图像差值方式,对图像进行裁剪(Random Crop)、尺度和长宽比随机变化(Scale Jittering)、水平/垂直翻转(Horizontal/Vertical Flip)、平移变换(Shift)、旋转变换(Rotation)等。

(2)模型开发训练环节

探索性数据分析。在完成较为烦琐的数据清理工作之后,为了发掘数据中隐含的模式,需要采用多种可视化的交互方式分析样本数据的特点和蕴含的信息。探索性数据分析是一个开放的过程,可以计算统计数据,通过画图分析并发现数据中的趋势、异常、模型和关系。探索性数据分析的目标是了解数据,并从数据中发现信息。这些信息有助于建模选择和帮助我们决定使用哪种特征或网络模型。

模型设计实验。模型设计实验是一个建模的过程,这也是算法科学家的核心工作之一。人工智能云平台需要为数据科学家提供交互式的模型设计开发环境,在开发环境中提供基础的编程环境以及典型的常用算法组件,以便算法科学家快速搭建实验,验证想法。另外,设计开发环境需要实现多租户的实验目录管理和数据管理,为用户记录实验过程和结果,保存实验模型文件和评估数据,并在一定程度上提供可视化曲线绘制功能,以便于对实验进行分析比对,迭代改进模型的设计方案。针对编程基础弱的用户,可以提供抽象化接口的图形化交互形式搭建实验,虽然这种方式灵活性受限,但很适合在模型定型后通过微调和更新样本数据对模型进行更新。

模型训练。模型训练是人工智能云平台中重要的功能之一,涉及的技术点较多。在实验阶段基本确定模型结构和参数范围后,就可进行计算资源配置,提交训练任务,开始模型训练。模型训练是对数据进行模型拟合的过程,是一个离线过程,时间往往较长。高效地进行模型更新,对平台的计算资源分配和任务调度能力都提出了较高的要求。对于大规模的训练任务来说,还需要提供分布式训练机制,使计算具有可靠性和扩展性。另外,在模型训练环节还涉及一个重要的步骤,即模型调参。在试验超参数的过程中,经常需要对一组参数组合进行试验。批量提交任务功能可以节约用户的时间,提供更多的便利。平台也可以将这组结果直接进行比较,提供更友好的界面。人工智能云平台需要提供便捷直观的超参数调节工具,甚至是更高级的自动机器学习(Automated Machine Learning,AutoML)机制,通过对网络结构和超参数的自动化选择来提升建模工作的效率。

模型评估。经过模型训练之后,需要对模型效果进行精确评估,以确定模型是否可以上线,或哪些方面需要继续改进。人工智能云平台可提供可视化的界面,绘制多种性能曲线和评估矩阵,辅助决策。除了模型效果外,还需要评估计算资源负载和响应速度。如果模型有了较大的改动,可能会在执行性能上有较大的变化。在资源紧张的情况下,如果没有注意到这些因素,可能会因为模型发布而造成服务负载过高,甚至会影响到其他线上服务,进而影响整个业务的稳定。

(3)模型部署服务环节

模型发布。在完成模型训练并通过了模型评估之后,通过模型发布将模型以Web服务的形式发布出来,可以通过RPC或REST的形式进行访问调用。现代的运维体系关于如何提供服务已经有很多成熟的技术,完全可以结合传统的云计算框架或者容器化集群管理框架实现。可以通过设置模型发布模板,将模型发布嵌入自动化流程。在模型发布阶段需要注意:较大的模型文件需要预加载的时间和模型预热(Warm-up)时间,之后才能高效地提供模型访问服务。如果人工智能云平台底层采用了已经提供模型访问服务功能的智能开发框架,例如TensorFlow的TensorFlow Serving,那么访问效率会更加高一些,不过代价可能是要对模型进行重新编译。

智能服务。由于模型训练和模型推理预测的程序代码逻辑是不同的,所以模型发布后,智能应用的开发者还需要根据业务实际,开发业务访问服务,对外接收和处理智能应用请求,对内调用模型部署提供的模型服务响应接收到的请求。智能应用全流程可以搭建为一个数据闭环:发布模型并提供智能服务之后,平台可通过在线服务持续收集样本,同时不断地进行模型评估以判断模型是否能适应数据分布的持续变化;然后,使用收集的新数据集重新训练模型,提高在线推理预测的准确性。随着可用的样本数据越来越多,可以继续对模型进行迭代训练,以提高准确性。

在人工智能云平台中,智能开发应用的各个阶段对平台提出了较多要求,包括分布式存储、交互式开发环境构建、训练过程结果的可视化、多任务调度、集群资源管理、分布式训练机制、容器虚拟化支撑、日志管理、持续集成以及系统监控等。本书将在后续章节逐一展开这些内容。