5位CNN权重的算术编码与解码技术详解
1. 硬件解码需求与算法概述
在将权重数据发送到CNN加速器之前,需要对压缩的权重数据进行快速原位解压缩(即解码),这就需要一个硬件解码器。硬件解码器接收压缩权重的比特流(BS),并生成原始的5位量化权重数据。为了加快运行时解码过程,硬件解码器中设有多个解码单元(DU)。且该解码硬件与能进行5位量化权重卷积运算的CNN加速器没有依赖关系。
下面来看看算法的整体情况。存在三种编码方式的比较:理论算术编码、无范围缩放的二进制算术编码以及带范围缩放的二进制算术编码,还有对应的解码方式。理论上,算术编码能将原始数据编码为0到1之间的一个实数,但在实际编码为比特流时,由于要映射到有限的二进制数空间,可能会导致下溢,编码数据可能会有损失。若权重元素序列较长且二进制映射空间不足,下溢就容易发生。
为实现无损编码,所提出的技术采用了范围缩放方法,可自适应地缩放二进制映射空间的范围。编码时,根据元素的映射子范围,依据范围缩放条件进行自适应缩放,并将缩放信息和映射、缩放后的子范围信息记录到压缩比特流中。解码时,通过比特流中的滑动窗口,找到无符号整数所属的子范围,进而解码出对应的权重元素,再移动滑动窗口解码下一个权重元素。
2. 权重编码算法
编码5位量化权重数据时,需要输入5位量化权重数据(W)、每个权重值的出现概率(PROB)以及权重元素的数量(K),输出是编码后的权重比特流(BS)。编码前需设置一些变量:
- N:用于通过算术编码将权重数据映射到无符号二进制数的位数。
- RS:包含范围缩放信息,初始设为0。
- MAX、HALF和QTR:根据N计算得出。
- low和hi
超级会员免费看
订阅专栏 解锁全文
1212

被折叠的 条评论
为什么被折叠?



