企业级AI平台是个什么鬼?智能企业为什么需要他
首席数字官
2019-04-04
文 | 周阳
来源 | 凯哥讲故事系列
一直在寻找一个东西,
我们需要一个AI平台
所以,
AI平台就是帮助企业基于现有资源充分、
这个生产工具类似于计算机/操作系统 - AI资源(算法,AI硬件,数据)/AI平台,
所以,
AI平台的组成
所以,AI平台的构建首先是要满足算法工程师的日常工作需要。
算法工程师根据自己设定的检索条件获取数据,并组装训练、
测试和验证数据集; 算法工程师根据模型的需要对数据进行预处理;
算法工程师对于模型设定合适的超参数;
算法工程师申请GPU/CPU资源进行模型训练,
查看模型的收敛效果; 算法工程师根据模型收敛情况和模型精度等指标判断模型优化是否成
功; 根据模型优化结果决定模型是否发布上线;
模型优化达到上线指标,模型发布生产环境,正式上线。
结合算法工程师的日常工作,
数据准备
对于算法工程师而言,数据准备是非常重要,
想想看,
首先,启动一个类似于Workbench一样的数据库管理工具;
链接正确的数据库,手动翻查目标自动在那个表里;
找到之后,基于Sql做一些简单的筛查;
... ...
额,忘记了,这是结构化数据,如果是图片或者长文本数据,
所以,提供高效的数据准备功能是AI平台必须具备的能力。
图中,蓝色圆圈标识一种数据处理程序,内涵可简单可复杂,其中:
Clean:数据清洗,这是数据挖掘里的一个概念,
一般包括预处理、处理缺失数据、处理格式或内容错误的数据、 处理逻辑错误的数据、去除不必要的数据和关联性验证; Meta:基础元数据抽取,例如数据类型、创建日期、创建人等;
Tag:数据打标签,对数据进行粗力度等描述,例如场景(晴天、
上海、树荫)、文本语言等; Annotation:数据标注,这和AI领域强关联,
NLP领域是对文本做实体标注、 计算机视觉领域则是对图片进行实体标注, 当然基于不同的应用场景,标注本身又包含多种形式, 例如图像标注中的目标框选、语义分割、3D/2.5D标注等。
可能还存在其他的数据处理环节,但是就数据准备而言,
检索
数据检索的拆解参看下图:
除了结构化数据,半/非结构化数据都是基于全文检索来实现的,
而构建索引也恰恰是数据准备中最为困难和复杂的一个环节。
注:Annotation产生的索引信息,
当各种维度的索引信息被构建之后,
组装
数据组装,就是在检索功能之后,
对于检索结果的组装并不仅仅是数据的简单组合,它内涵很丰富:
预览:在检索出结果以后,可以进行对象/记录粒度的数据预览,
例如查看图片以及标注以后的图片、 一封邮件的文本以及实体标注后的邮件内容等;更先进一些, 在数据组装成数据集之后, 也可以对数据集中的数据进行同样粒度的预览。 去重:多次检索的数据难免会有重复的数据出现,
组装数据集的过程中需要进行去重处理。 关联:对于同一个目标数据的标注结果,需要进行合并或者关联,
只有这样才能保证数据的完整性和准确性,同时减少冗余。 指标:用于衡量数据集质量,
例如统计一个图片标注数据集中所有的标注对象数量, 可以以直方图的形式展示; 也可以基于一些算法或标准查看数据集中数据的分布情况。 分布:用于衡量数据集质量的高级功能,
例如基于词向量查看一个文本数据集中文本或句子的聚类情况; 对于时序类数据集基于指标展示时序分布图等。
数据组装的这些功能,看似和大数据平台的BI有些类似,
下载
数据组装成数据集之后,就可以进行数据预处理,
数据检索、数据组装对于数据的操作基本都可以在内存中完成,
所以,组装后的数据集一定要下载到一个特定的存储介质,
至于技术上使用什么样的存储介质,
模型训练
模型训练可以理解为一个AI模型的集成开发环境——IDE。
微软在2018年公布了自己的AI平台OpenPAI,
并心思巧妙的将之集成到Visual Studio2017,你看,还真给做成了一个IDE 。
那么AI平台到底是如何进行模型训练的?参看下图:
上图可知,模型训练核心是由两个pipeline构成:
数据pipeline
有别于数据准备阶段的数据处理环节,这里的预处理和模型、
注:针对不同领域或数据的预处理可能罗列的不够全面,欢迎补充。
不同领域或数据的预处理有各自的特点,但是目标是相同的(其实,
有别于数据准备阶段的数据处理的第二个不同点是数据集预处理往往
模型pipeline
runtime阶段
模型pipeline准确的描述应该是模型训练pipeline
从这个角度去看微软把OpenPAI集成到VisualStud
runtime环节其实只是代码开发阶段,
training阶段
training阶段的工作就类似于冰山理论中海平面以下的内容
资源调度目前已经有了比较成熟的开源解决方案K8s(
注:K8s并不保证兼容所有厂商和型号的GPU,
也不保证兼容所有的FS,对于不同FS的I/ O性能目前也没有官方的评测, 具体的技术细节需要企业在实施过程中自行调研,这里不做展开。
模型验证
模型验证包含两个阶段:
上线前的validation
这个环节通常包含在模型训练的阶段,
方法大体有两种:
留一验证:这个比较简单,
就是从任务提供的数据中随机采样一定比例作为训练集, 剩下的留作验证集。通常这个比例为4:1,也就是80% 作为训练,20%作为模型验证。也有很多是会是3:1等等。 这有一个问题,那就是随机采样验证集存在不确定性。 验证集合不是测试集,这是不同的两个概念。 交叉验证:其实就是多次留一验证的过程。
不过每次使用的验证集之间是互斥的, 并且保证每一条可用数据都被模型验证过。 例如所谓的5折交叉验证,就是将所有可用数据随机分为5分, 每次迭代用其中一组数据作为验证集,其他四组作为训练集。 相比留一验证,交叉验证更加可靠、稳定, 因为所有数据都被训练和验证过。
所以,
上线后的A/B测试
A/B测试必然和实际的生产环境和业务场景相关联,
那么对于企业的AI平台而言,结合自身业务构建业务端的A/
注:“生产环境带标签数据集”,
这意味着这个数据集绝对是生产环境新产生的数据集, 有别于模型训练中使用的测试集、验证集和训练集合,其次结合A/ B测试的技术手段可知,metric Index是基于统计规律计算而来的评价指标, 所以需要具备足够大的样本空间(参考大数定律),也就是“ 生产环境带标签数据集”需要数据量足够。
至于“生产环境带标签数据集”,恰恰和之前的“数据准备”
模型发布
模型训练pipeline,目的是为了产出模型文件——
注:对于通用模型文件格式,Google有TenserRT、
微软有ONNX, 由于目前对于此类技术的研究会同时涉及到AI框架和GPU芯片等 硬件层,所以每种格式都会有特定的限制条件, 构建AI平台时一定调研清楚再做选择。
除了通用的模型文件格式,另一个需要关注的点是模型发布的形式,
对于企业AI平台而言, 基于http协议来发布加载模型的应用服务是必然的,
AI平台的通用架构
在通观AI平台的组成之后,AI平台的通用架构呼之欲出:
AI平台的演进和未来
AI平台目前也仅仅处于行业高速发展的起始段,
在文章伊始,AI平台被定义为一种生产工具,
第一阶段:AI平台
注:预标注就是Pre-annotation。
上图是AI平台第一阶段的演化,这种演化是基于功能的,简言之,
第二阶段:中台发动机
当AI平台和业务越发紧密,基于AI平台能力的演进,
从更高的视角来审视这种趋势,
总结
全文洋洋洒洒几千字,
AI平台的定位:AI平台被定义为一种生产工具,
一种基于现有资源充分、 高效利用AI技术达到企业发展愿景的生产工具。 AI平台的核心组成:包括四个大模块——数据准备、模型训练、
模型验证和模型发布。 AI平台的通用架构:层级架构,包括四个层级:借口层、
APIs、Core Services、Platform Services。 AI平台的演进和未来:体现在两个层面,
第一个层面是AI平台自己的演化:模型文件到模型解决方案; 第二个层面是模型对于业务系统的改进,分三个阶段: 替换业务环节演化到替换整体方案,最后到衍生出新的业务场景。 最终联想到业务系统未来会向中台的方向演进, 给出了企业中台中AI平台的价值和定位。
总体而言,就目前AI产业化发展的起步阶段,
- 观点
- 制造
- IT/互联网
- CEO
- CTO
- CIO
- 生产制造
- 运营
- 大数据
- 协同办公
- 云计算
推荐
我要评论