AI开放平台介绍&AI模型性能调优纪要

文-李红涛

1. 背景说明

AI在业务层由各种各样的模型发挥着神奇的价值。开发者一般基于TensorFlow、paddlepaddle等深度学习平台进行AI模型训练;

AI开发平台,一般为这些深度学习平台下的子产品,提供机器学习能力,解决一站式模型开发、生产预测的平台;

 

一般AI开发平台包括如下能力:

  • 数据能力:数据获取、数据预处理(ETL)、数据集管理、数据标注、数据增强…
  • 模型能力:模型管理、模型训练、模型验证、模型部署、模型处理、模型详情…
  • 算法能力:支持各种算法、深度学习、数据运算处理框架、预置模型、算法调用、对算法组合操作…
  • 部署能力:多重部署方式、在线部署、私有化部署、边缘端部署、灰度/增量/全量部署…
  • 其他能力:AI服务市场、工单客服、权限管理、工作流可视化…

某AI商品模型训练平台如下,包括数据中心、模型中心,核心框架如下:

 

2. 模型调优阶段

在整个模型训练、开发、发布等环节,都会涉及到模型调优问题,比如训练效率低、模型训练效果不好等;

2.1 训练阶段调优问题

1、美团AI团队利用TensorFlow评论WDL推荐模型,针对性能瓶颈分析与调优如下:

在使用TensorFlow训练WDL模型时,主要发现3个性能问题:

  • 每轮训练时,输入数据环节耗时过多,超过60%的时间用于读取数据。
  • 训练时产生的网络流量高,占用大量集群网络带宽资源,难以实现分布式性能线性加速。
  • Hadoop的默认参数配置导致glibc malloc变慢,一个保护malloc内存池的内核自旋锁成为性能瓶颈。

 深入底层熟悉框架、处理逻辑,定位问题,最后给出解决方案

针对第一个问题,解决办法是使用TensorFlow Dataset接口,该接口不再使用Python线程读数据,而是用C++线程实现,避免了Python GIL问题。

针对第二个问题,社区提供了批量读数据接口TFRecordReader.read_up_to,能够指定每次读数据的数量。我们设置每次读入1000条数据,使读数句接口被调用的频次从10000次降低到10次,每轮训练时延降低2-3倍。

针对第三个问题,发现Hadoop有一项默认的环境变量配置限制进程所能使用的glibc内存池个数为4个。通过社区查询了解,将MALLOC_ARENA_MAX的默认设置改为4之后,可以不至于VIRT增加很多,而且一般作业性能没有明显影响。但这个默认配置对于WDL深度学习作业影响很大,我们去掉了这个环境配置,malloc并发性能极大提升。经过测试,WDL模型的平均训练时间性能减少至原来的1/4。

 

2、神经网络性能调优方案

https://www.jianshu.com/p/69e73704a709

(1)数据增广
(2)图像预处理
(3)网络初始化
(4)训练过程中的技巧
(5)激活函数的选择
(6)不同正则化方法
(7)来自于数据的洞察
(8)集成多个深度网络

 

3、自动调参-深度学习模型的超参数自动化调优详解

https://cloud.tencent.com/developer/article/1528472

 

2.2 模型迭代阶段

1 、模型效果优化技巧

http://www.python88.com/topic/55243

 

2、模型预测性能调优:

http://vearne.cc/archives/39300

 

2.3 模型上线前性能评估

1、模型评估性能指标

https://blog.csdn.net/u014203453/article/details/77598997

错误率、精度

准确率(查准率)、召回率(查全率)

P-A曲线 (平衡点)

mAP值-对AP值的平均值

AP值-平均精度值

 

3. AI开放平台发展趋势

AI开放平台总体目标:解决的是效率问题。

效率的提升体现在:
1、开发前(数据自动化处理、导入提速、数据自动化标注等)
2、开发中(模型组件化、模型训练效率、模型管理效率、自动调参)
3、开发后(模型发布效率、模型推理、迭代更替管理等)

 

基于效率,看到三个发展趋势:
1、PaaS平台趋向SaaS化,在做更多应用层的打包方案。本质上更简单、不用开发者/商户做过多开发,实则打包才具有更多差异性、让用户有更多依赖;服务的差异化

2、用户角色兼容性,向更多非具备开发能力/弱开发能力的多角色提供服务;
小白用户/pm/运营(搞定模型训练、可视化操作一键部署 eg.站长、创业者、公司一线业务人员)
弱开发者(基于PaaS或S-Paas能力就能满足 大量的模型市场,模型服务商提供中上层的服务 可以很方便快速调整模型 或者导入新数据训练新模型)
高阶开发者(基于底层IaaS能力,完全自主开发所需能力)

3、生态优势建设
腾讯云、阿里云,都有基于自身的泛娱乐、电商商户体系做服务。
金山云深挖的政企、视频、游戏等。

 

4. 概念科普

机器学习,是人工智能的一个分支;

深度学习,是机器学习的一个重要分支;深度学习的概念源于人工神经网络的研究,但是并不完全等于传统神经网络。深度学习可以说是在传统神经网络基础上的升级,约等于神经网络。

神经网络,是人工神经网络的简称。人工神经网络(Artificial Neural Network,即ANN ),是20世纪80 年代以来人工智能领域兴起的研究热点。 它从信息处理角度对人脑神经元网络进行抽象, 建立某种简单模型,按不同的连接方式组成不同的网络。 在工程与学术界也常直接简称为神经网络或类神经网络。

算法,用作训练模型的基础原理性能力,比如CNN 图像检索中的找相同-相似近邻检索;

模型,基于业务场景需求导向,基于算法+数据训练的解决问题的模型;

算力,模型训练所需要的计算能力,一般主要依靠CPU、GPU提供算力;

 

 

扩展阅读:

百度飞浆AI Studio  https://aistudio.baidu.com/

阿里云PAI 机器学习平台 https://help.aliyun.com/product/30347.html?spm=a2c4g.11186623.6.540.15e77d61BMqXV5

华为云ModelArts  https://www.huaweicloud.com/product/modelarts.html

京东云NeuHub https://www.jdcloud.com/cn/neuhub/all

使用TensorFlow训练WDL模型性能问题定位与调优
https://tech.meituan.com/2018/04/08/tensorflow-performance-bottleneck-analysis-on-hadoop.html

神经网络性能调优方案  https://www.jianshu.com/p/69e73704a709

AI平台详细介绍 https://zhuanlan.zhihu.com/p/102581335