【技术解析】模型量化压缩

随着深度学习技术渗透入越来越多领域,人工智能在边缘侧的大规模应用被提上日程。尤其这两年人工智能-计算机视觉方向在安全生产、工业质检、智能硬件等应用场景中在广泛应用,这些应用场景往往对性能及数据安全有苛刻的要求,故而在边缘计算、移动终端、嵌入式终端的产品落地也随之进入白热化阶段。

终端落地很重要的两个指标依旧是推理时间存储开销。网络模型压缩的需求越来越大,模型量化应运而生。本篇我们将探讨模型量化的概念原理、优缺点及EasyDL-EasyEdge模型量化的实现方法。

 

什么是量化

所谓量化,就是把模型参数从浮点数转换成整数的一种模型压缩技术。工业界量化一般指int8,8表示存储一个权重元素所需的位数。把fp32的值经过线性变换转换成int8,网络中耗时的卷积层计算就成了整数的计算,运算量将大大降低,int8 使用的比特数只有 fp32的25%,模型推理所占的内存也随之降低。

【技术解析】模型量化压缩_第1张图片

 

为什么需要量化


用我们最日常的边缘设备——手机来举个例子。

目前的手机一般配备4G或6G内存来支持程序运行,即便部署相对较小的ResNet-50网络来对单张图片进行分类,运行一次就至少需要98M内存和3.8GFLOPs的计算量。而图像相关的应用程序通常需要实时处理摄像头接入的视频图像数据,这意味着至少30 FPS,那么除了内存容量和CPU计算的问题,还会存在内存带宽问题。模型在每次预测时都会使用模型的权重,因此,运行模型就需要3GB/s 的内存带宽。如果后台同时运行多个程序,甚至都可以明显感受到手机变得卡顿。并且,CPU的高速运行又会带来电池的飞速消耗。

 

EasyDL-EasyEdge模型量化

EasyDL-EasyEdge是百度推出的端计算模型生成和服务平台,可基于多种EasyDL或BML训练所得、或者用户本地上传的各类深度学习框架、网络结构的模型,快捷生成端计算模型及封装SDK,已经适配15种AI芯片与4大主流操作系统。EasyDL-EasyEdge后台在生成端计算模型过程中,会根据用户的选择进行模型的低比特量化操作,在不降低模型精度或者损失略微精度的前提下,减小模型的体积,提升模型的运行速度。

【技术解析】模型量化压缩_第2张图片

EasyDL-EasyEdge量化从算法上可以分为训练后量化和量化训练,根据目标端模型的不同又可以分为PaddleSlim、OpenVINO、NNIE和TensorRT的量化

量化是从r(fp32)到q(int8)的线性映射。

r和q的关系如下:

【技术解析】模型量化压缩_第3张图片

量化参数:

•         缩放因子(scale):S

•         偏移量(offset):Z

如何确定缩放因子和偏移量的值?目前EasyDL-EasyEdge采用的方法有:

•         abs_max: ±abs_max 映射为±127,偏移量Z恒为0(PaddleSlim量化)

•         min_max: min映射为-127, max映射为127,偏移量需要计算(OpenVINO量化)

【技术解析】模型量化压缩_第4张图片abs_max映射说明示意图

【技术解析】模型量化压缩_第5张图片min_max映射说明示意图

 

EasyDL-EasyEdge量化采用了训练后量化量化训练两种算法。

•         训练后量化:固定权重值,将权重提前量化, 权重进行的是逐通道量化——以通道为单位,每个channel单独使用一组S和Z;使用少量校准数据,在校准过程中观察模型的行为来计算激活张量的比例因子和偏差。整个量化过程最快只需2分钟。

【技术解析】模型量化压缩_第6张图片

量化训练:权重需要训练学习(Fine-Tune),采用量化训练得到的int8模型在效果上通常会比训练后量化的模型更好,但量化过程需要的时间也会稍微长一些。

【技术解析】模型量化压缩_第7张图片

目前在EasyDL-EasyEdge的多种部署方式里均可以获取量化加速模型的服务。比如在本地部署里,选择通用小型设备获取ARM加速版本或选择服务器获取CPU加速版等等。

【技术解析】模型量化压缩_第8张图片

在设备上使用量化后的模型,会发现设备功耗更低、推理更快。比如使用EasyDL经典版高精度分类模型,在通用 x86 CPU 上单张图片推理时间从 128ms 缩短至 30ms,高性能分类模型单张图片推理时间从 99ms 缩短至 15ms,性能大幅提升。

【技术解析】模型量化压缩_第9张图片x86 CPU版SDK量化前后性能数据对比表

 

而整个生成量化模型的过程你都无需费神,只要交给EasyDL-EasyEdge!快来一起体验量化带来的变化吧!

EasyDL零门槛AI开发平台与全功能AI开发平台BML也均集成了EasyEdge的全部服务,端到端实现从模型开发到模型量化,输出离线SDK的一站式开发流程,可便捷获取高精度高性能的离线服务。

 

文章来源:https://ai.baidu.com/forum/topic/show/980958

你可能感兴趣的:(深度学习,自然语言处理,机器学习,神经网络)