江湖车侠|全自动实时移动端AI框架,YOLO-v4目标检测实时手机实现( 三 )


在卷积核模式集的自动提取中 , 研究人员首先构建一个模式集全集 , 包含了所有可能种类的卷积核模式 。 在训练过程中 , 他们将这个模式集作为稀疏化目标 , 通过ADMM(alternatingdirectionmethodofmultipliers)将原始剪枝问题解耦为Primal-Proximal问题 , 迭代式地通过传统梯度下降法求解Primal问题 , 并引入一个二次项迭代求解Proximal问题 。 通过每次Primal-Proximal迭代更新 , 使卷积核动态地从模式集中选择当前最优的卷积核模式 , 并同时通过梯度下降法训练该模式非零位置的权重 。 当卷积核对稀疏模式的选择趋于稳定的时候(一般仅需要迭代3-5次) , 就可以删除掉那些被选择次数非常少的卷积核模式 , 从而将模式集的大小降低 , 并用更新后的模式集进行下一轮迭代 , 最终实现模式集的自动提取 。
尽管上述过程为迭代过程 , 但需要的总训练时长却是非常低的 , 原因在于该操作的目的是提取模式集而非完成整个训练过程 。 完成每一次模式集提取的迭代过程仅仅需要常规训练时长的10%-20% 。 当训练集的大小足够小的时候 , 我们便可以用比常规训练时长减少20%左右的训练时间完成训练 。 从实验结果来看 , 完成模式集提取、模式化稀疏度选择与模型训练的总时长甚至可以少于大部分其他模型剪枝工作 。
移动端硬件与编译器优化层面
通过上述模式化稀疏度感知训练框架 , 我们得到了模式化剪枝后的稀疏模型 。 如何利用模型的权重空间分布特点实现编译器优化成为移动端硬件与编译器优化层面的研究重点 。
研究人员设计了适合模式化剪枝的移动端推理框架 , 能够部署并高效执行模式化剪枝后的深度神经网络模型 , 如图4所示 。
这种编译器构架基于代码生成原理 , 将深度神经网络模型转化为底层静态执行代码 , 并配合适合模型特点的编译优化 。 研究人员利用已知的卷积核模式与连通性信息 , 相应地将每个卷积核的计算范式进行归类 。 通过将相同的卷积核模式(相同的计算范式)排列在一起 , 并将相似的重排结果在相同的线程中进行并行计算 , 消除所有静态代码分支 , 保证了高指令级与线程级平行性 。
我们同时可以观察到 , 卷积核与输出通道重排后的模型权重分布非常规则与紧凑 , 因此 , 在缓存与寄存器访问频率上的优化效果变得非常明显 。 规则与紧凑的数据意味着更低的数据访问频率 , 而数据访问频率降低意味着更低的内存开销 。 这一设计方法是可通用的 , 因此该研究提出的移动端推理框架可以大规模地部署在现有各种量产手机端 , 实现端上AI实时推理 , 满足用户需求 。
实验结果
该研究的实验结果从三个方面展示了模式化稀疏度感知训练框架与基于编译器的移动端推理框架的性能 , 分别是卷积核模式集提取结果、模式化剪枝精度提升效果与移动端推理速度 。
首先 , 图5展示了卷积核模式集提取结果 。 研究人员首先确定了每一个卷积核中应保留4个非零值 , 这样做的好处是控制模式集总集的大小 , 同时也利于移动端CPU/GPU的SIMD结构 。 当经过两次模式集提取后 , 模式集总集大小从126减小到32个 , 这时的模式集中卷积核模式分布图如图5(b)所示 。 研究人员进一步训练并删除出现次数最少的卷积核模式后 , 得到了Phase1、2、3模式集 , 其中的卷积核模式数量分别为12、8、4 , 如图5(a)所示 。 可以发现 , Phase2模式集所含的卷积核模式与理论推导与八种卷积核模式完全匹配 。 因此研究人员得出结论 , 基于理论得出的卷积核模式也是算法实现层面上对于深度神经网络最优的卷积核模式 。