APP下载

基于全国产软硬件的深度学习平台设计

2022-02-21吕昊靳文兵郝志超郭潇刘瑞泽

科技信息·学术版 2022年5期
关键词:目标检测

吕昊 靳文兵 郝志超 郭潇 刘瑞泽

摘要:随着国内外形势的日益紧张,实现核心技术的自主可控就尤为重要。目前深度学习被应用到生活以及军事领域中,实现深度学习训练及推理的国产化具有重要意义。本课题主要设计一种基于全国产软硬件的深度学习平台,并打通目标检测领域模型的训练和推理,对平台的实用性进行验证。

关键词:全国产软硬件 深度学习平台 目标检测

0 引言:

在深度学习的发展研究过程中,数据的训练是非常重要的组成部分,如何高效的进行对数据的训练,并提供足够的计算资源,对深度学习的研究有非常重要的意义。国内外都展开了针对深度学习硬件加速平台的研发,如NVIDIA公司的GPU以及针对推理端的TX2[1],谷歌的TPU[2]等,以及国内百度推出了XPU[3],寒武纪的加速卡[4]以及华为的昇腾系列AI处理器[4]等。但是这些设备多数是针对推理端的硬件加速平台,在训练端,目前主要采用的还是x86体系的CPU+GPU的形式在进行,也有少数采用ARM平台进行训练的。在深度学习框架的应用上,目前应用较多的开源深度学习框架有谷歌的tensorflow,脸书的pytorch以及百度的Paddle等。在深度学习的训练以及推理平台上,我国进行深度学习训练的主流平台主要还是采用x86体系的CPU+GPU的形式,并在该硬件平台上搭载tensorflow或pytorch的深度学习框架。近年来,随着国内外形式的日益紧张,美国对我国高新技术的部分企业进行了限制和制裁,并对部分企业的部分设备和器件的采购进行了限制,因此发展基于国产化硬件平台并且可以实现软件·框架自主可控的深度学习平台具有重要意义。由于深度学习在图像处理,文本识别,数据挖掘以及个性化推荐等领域都取得了很多成果。因此想要直接实现软硬件自主可控的通用深度学习平台是不现实的。因此本文设计了针对目标检测领域,设计一种基于深度学习的全国产平台下的目标检测系统,利用软硬件自主可控平台,初步完成在目标检测领域部分模型的训练与推理的全流程的实现。

1 系统概述:

本文所设计的基于深度学习的全国产平台下的目标检测系统包括了在深度学习中训练+推理的全流程,完成从训练到推理全过程的硬件模块及应用软件的全国产化。其中硬件部分主要由使用FT-2000/64为CPU的硬件电路组成,利用XPU架构AI芯片[3]的算力进行深度学习的训练过程。软件部分则是在搭载银河麒麟操作系统的基础上,适配国产深度学习框架PaddlePaddle,完成深度学习的模型训练以及推理验证。

本文采用的FT-2000/64是飞腾推出的通用计算处理芯片。FT2000/64是基于ARMV8架构的国产服务器CPU,集成64个飞腾自主研发的内核,兼容64位ARMV8指令集并支持ARM64和ARM32两种执行模式,并且支持单精度和双精度浮点运算指令,在硬件层面增强了芯片的安全性,满足复杂应用场景下对性能和安全的需求。可以在满足国产化硬件的需求上,为深度学习的训练和推理过程提供稳定的运行环境。

根据本文选用的硬件环境,本文要针对ARMV8架构的CPU进行深度学习框架的适配。国产深度学习框架PaddlePaddle是由百度推出的中国国首个自主研发、功能完备并且开源开发的深度学习框架。PaddlePaddle支持在多种硬件设备以及多操作系统下的使用,由高兼容性,高性能的多端部署能力[3]。由于目前在ARM平台上进行深度学习训练的应用案例较少,考虑到PaddlePaddle对飞腾处理器的适应性以及支持的模型函数可能有一定不足,我们仅选用YOLOv3作为本系统所选用的模型,进行对系统设计的验证。

2 硬件方案:

在硬件设计上,本文主要采用了以FT-2000/4为CPU,并挂载百昆仑AI加速卡XPU,实现对深度学习训练过程的加速。在以FT-2000/4为CPU的主板上,通过PCIE总线搭载百度XPU神经处理器架构k100来实现硬件设计。

FT-2000/4集成4个飞腾自主研发的内核,兼容64位ARMV8指令集并支持ARM64和ARM32两种执行模式。最高主频为2.6GHz,拥有2个DDR4接口,2个x16PCIE接口,2路10/100/1000Mbps自适应以太网接口,除此以外,还拥有1个SD2.0、4个UART、32个GPIO、1个LPC以及4個I2C等接口。可以提供高效完整的计算流程支撑。

XPU的处理器采用14nm工艺,拥有16B HBM高带宽内存,提高最高512GB/s的内存带宽。采用标准的PCIe Gen4接口使加速卡可以被快速安装到不同类型的设备上。XPU在着重于计算密集型、基于规则的任务的同时, 确保效率、性能和灵活性的最大化,并且原生支持深度学习框架PaddlePaddle的推理和训练任务,并实现对矩阵运算等的性能加速。其中SDNN(Software-defined Neural Network engine),即软件定义神经网络引擎是用来处理张量和向量运算。可以以软件形式灵活实现卷积,矩阵计算等操作,支持8位及16位的整型运算;Cluster是通用计算核,用来处理标量和向量计算。有良好的通用性和可编程性,可以根据需求灵活实现多种函数;Shared Memory即片上内存,为每个计算单元共享。可以提供比片外DDR更低延时和高带宽的访问;每个HBM高带宽内存的容量为8GB,采用的PCIe Gen4的总线,兼容3.0/2.0/1.0协议,提供单向16GB/s,双向共32GB/s的带宽,可以满足高速率的数据交互。

3 软件设计

在软件层面,本文选用百度推出的PaddlePaddle作为训练和推理的深度学习框架。整个PaddlePaddle的生态主要分为开发训练框架,模型以及部署三个部分。开发训练框架是Paddle全生态的最底层。在这部分,Paddle核心框架是Paddle深度学习框架的核心,集成了深度学习所需要利用的基本函数库,其余不同的训练框架是为了适应不同环境体系下进行训练而准备的。模型主要作用是方便利用核心框架进行训练开发的工具,在这一部分主要根据应用方向分出来了不同的模型库,并在这几个方向,根据不同的应用领域提供不同的开发套件。根据需要,利用模型库或开发套件进行训练开发。压缩工具是为了针对训练完的模型进行压缩优化,方便模型进行更好的部署。PaddleSlim主要目的是对模型进行优化,提供剪裁、量化、蒸馏、和模型结构搜索等模型压缩策略。部署部分主要是将进行推理的部分。Paddle Inference是原生推理库,主要面向服务器端进行推理预测的部属;Paddlelite是轻量化的推理引擎,主要用在手机以及嵌入式的硬件设备上。

本文在利用该框架的过程中,在训练和推理的过程中采用不同的组件进行开发。在训练端,本文采用Paddle核心框架+Paddledetection开发套件的形式。其中Paddle核心框架提供在深度学习过程中会调用的基本运算函数以及提供各种接口函数。为了便于Paddle能够调用足够的硬件资源,我们在新的硬件环境,即FT-2000/4+百度XPU的硬件环境下,对Paddle进行源码编译。这使Paddle可以有效调用XPU以及ARM的硬件资源进行运算。Paddledetection是目标检测开发套件,用于目标检测任务的模型训练、优化工作。通过配置yml参数文件,通过max_iters对最大迭代次数进行设置,通过pretrain_weights指定预训练模型地址,并通过dataset_dir以及anno_path对标定完成的数据集进行定义。完成对yml参数文件进行配置和修改后,调用train.py可以进行训练。通过训练可以获得model_final以及xxxxxx_final,之后通过inference.py对训练结果进行验证。在推理端,本文采用Paddlelite推理框架+在训练过程中获得的model及参数文件的形式来进行。Paddlelite重点支持在移动端设备上的推理预测,相比起一般的推理框架,可以以更轻量级的框架做到更加高性能的推理过程,并已经在多种硬件上进行了测试运行。因此本文选用Paddlelite在FT-2000/4上进行推理的部署,为后期将Paddlelite适配到ARM体系下的系统以及其他AI加速芯片提供技术储备。在Paddlelite适配过程中,本文针对编译运行环境进行配置,包括python3,arm-gcc交叉编译库以及cmake等,编译环境是进行源码编译的基础。在实际编译过程中,在确认框架所需要的三方库并进行安装配置后,调用build_linux.sh进行编译,根据硬件环境需要,设定为ARMV8的体系结构,并设定编译python版本的Paddlelite库。在编译完成后,在生成文件夹build.lite.linux.armv8.gcc中,生成了c++静态编译库以及动态编译库,以及python的安装库。Python版本的Paddlelite库还负责模型转换工具opt的运用,模型转换工具opt优化原始的训练模型,其中包括量化、子图融合、混合调度、Kernel优选等方法,将训练过程中生成的模型及参数文件转化为在训练端Paddlelite可以输入的模型参数格式。在获取Paddlelite可以输入的模型参数格式后,将模型输入到推理的脚本,并调用opencv将预测目标的坐标以及锚框显示在源图像中,完成目标检测的任务。

在具体软件设计与验证的过程中,我们根据任务性质的不同可以将任务分为训练段和推理端进行。在训练端,我们主要是通过以Paddle核心框架作为训练的核心,之后调用PaddleDetction开发组件开展训练任务,之后通过训练脚本进行具体训练,在训练完成后,通过测试脚本对训练结果进行测试。在推理端,我们主要通过Paddlelite轻量化推理框架展开推理任务,并利用具体的推理脚本+Opencv绘图,完成推理,并输出结果。根据任务的走向,首先本文在获取训练所需的训练数据以后,在搭载好的训练平台上进行训练,并将训练好的模型进行优化裁剪,之后利用优化好后的模型进行推理,并完成验证。

4 系统验证

在上述的硬件和软件设计中,本文已经搭建了基于深度学习的全国产平台的软件硬件系统。之后本文选用主干网络为SSD_MobileNet_v1模型文件以及公开的预训练模型参数进行模型训练,使用pascalvoc VOC 2007公开数据集进行训练,并通过配置yml文件进行参数设置,指定模型及数据集路径,设定迭代次数为400000次,之后利用PaddleDetection中的train.py开始训练,在训练过程中损失拟合曲线,基本符合训练要求。训练完成后,利用test.py针对测试图片进行验证,可以对图片中目标进行检测,通过导出模型文件,对模型文件进行压缩优化为model.nb文件并运用Paddlelite框架进行推理,如图7所示,成功实现推理,完成目标检测任务。

5 结论

本文针对目标检测领域,设计了一种基于深度学习的全国产平台下的目标检测系统,利用软硬件自主可控平台,初步完成在目标检测领域部分模型的训练与推理的全流程的实现。经过验证,本文所设计的基于深度学习的全國产平台下的目标检测系统包括了在深度学习中训练+推理的全流程,完成从训练到推理全过程的硬件模块及应用软件的全国产化设计。

参考文献:

[1]齐健.NVIDIA Jetson TX2平台:加速发展小型化人工智能终端[J].智能制造,2017(05):20-21.

[2]乐学.谷歌推出定制化机器学习芯片速度是传统GPU的15到30倍[J].信息与电脑(理论版),2017(08):7-8.

[3]张依依. 7nm昆仑二代量产  百度芯片直面通用化商用化大考[N]. 中国电子报,2021-08-24(008).DOI:10.28065/n.cnki.ncdzb.2021.001050.

[4]王哲,冯晓辉.AI芯片:加速智能时代的发动机[J].人工智能,2018(02):20-33.DOI:10.16453/j.cnki.issn2096-5036.2018.02.002.

猜你喜欢

目标检测
多视角目标检测与跟踪技术的研究与实现
视频中目标检测算法研究
行为识别中的人体运动目标检测方法
移动机器人图像目标识别
基于背景建模法的运动目标检测
基于P3电位的目标检测研究
智能视频技术在电力系统领域的应用
相关K分布杂波中扩展目标积累检测性能分析
基于连通域标记的目标检测算法设计与实现
一种改进的峰均功率比判源方法