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