问题
在网络场景下的 AI 模型训练的过程中,KPI 异常检测项目需要对设备内多模块、多类型数据,并根据波形以及异常表现进行分析,这样的数据量往往较大,对内存和性能要求较高。
同时,在设计优化算法时,需要快速得到训练及测试结果并根据结果来调整算法,因此进一步要求计算内存和性能达到较高的水平。
当前,本地安全 PC 性能难以满足调试要求,难点主要在于,时间序列数据以 csv 文件格式存储,需要根据时序关系以及五维关键字拆分成以五维关键字为主键的唯一时序数据,这一过程需要将同一台设备所有 KPI 文件同时读入内存,一星期 KPI 数据文件就达到 GB 级别,单单本机训练就需要 41Min。同时,每台网管设备纳管几千台设备,训练花的时间将按设备数对应倍数增加,单进程执行网管设备局点数据分析的时间将到达 Month 级别。
KPI 异常检测项目希望能够根据 KPI 数据特点,显著缩短训练时间,以满足快速测试算法调优的需求。
华为解决方案
对华为NAIE训练平台现有任务机制进行拓展,任务可使用Master-Worker机制,即原来的任务变成Master控制消息分发,在其命名空间下创建N个子任务,循环处理数据
设计一套简单易用的API,尽量对业务代码无侵入
导入依赖:
我们从 naie sdk 中导入两个装饰器
定义数据:
假设我们有四个数据集实例,我们将它定义为一个列表
如上面代码所示,主程序每次接受一个列表中的元素,其余代码和单机保持一致。
after 装饰器下面的代码只会在主节点上运行一次,它执行的时机是所有的主程序运行完之后,请根据业务的需求决定是否添加。
改进效果
基于华为 NAIE 训练平台的拓展使用结果显示,显著缩短 KPI 异常检测项目的训练时间,50 个同等大小的文件夹如果在本地运行约需要 34hour,扩大训练任务节点数后(现为 30 个),50 个同等大小的文件夹在训练平台运行时间缩短为 2hour。
来自公众号:网络人工智能园地
作者:于泽阳
评论