第一,通过消除瞬时冗余,TREC最大限度地减少了计算量,提升了整个网络的性能
第二,TREC兼容训练和推理任务,可以轻松替换标准神经网络中的层,保持模型的高精度
第三,TREC与去除持久冗余的方法(量化、剪枝等)能够耦合使用
- 设计了一种内核重用技术来减少TREC存储参数的空间,消除额外的空间开销
- 引入了两步堆栈替换方法和反向索引存储聚类 ID ,最小化存储簇信息的空间占用
- 此外,通过将方法集成到反向传播中,与原始 TREC技术 相比保持了推理精度
- 数据哈希映射:使用哈希矩阵将输入数据映射为二进制向量,每个向量生成一个聚类标识符(ID),相似的向量被分配相同的 ID
- 相似向量聚类:根据相同的 ID 将相似的神经元向量聚集成簇
- 簇中心计算:计算每个簇的中心向量,作为簇内所有向量的代表,避免重复计算
复用卷积层卷积核矩阵的前几列作为哈希矩阵,进行输入数据的在线哈希聚类,减少了哈希矩阵所需的额外内存消耗。
在训练过程中,哈希矩阵的梯度直接从对应的权重矩阵中提取,避免了独立更新哈希矩阵和权重矩阵时产生的误差问题。
实验设置:
- 硬件:STM32F469I(324KB SRAM, 2048KB Flash)STM32F746ZG(320KB SRAM, 1024KB Flash)
- 数据集:CIFAR-10
- 模型:CifarNet, ZfNet, SqueezeNet
- DNN训练配置:20核 Intel Core i7-12700K,128GB RAM,NVIDIA GeForce RTX A6000,48GB显存
- 训练框架:PyTorch 1.10.1
TREC通过利用权重矩阵的部分内容作为哈希矩阵,减少了对外部字典的多次内存访问。这降低了内存带宽的需求,从而减少了内存访问的瓶颈。TREC优化了矩阵乘法操作,特别是在采用SIMD指令时,通过减少数据转置和提高计算效率,从而加速了推理过程。
通过优化TREC空间占用,降低了TREC对外存的访问次数,大幅提升了推理速度(1.23x~4.98x)
对于卷积层而言,TREC能够去除特征图约96.22%的瞬时冗余,从而实现平均4.28倍,最高18.66倍的速度提升。TREC在计算密集型层中效果十分显著,例如SqueezeNet扩展层。
TREC在卷积层中实现了显著的速度提升,在最小化准确性损失的同时实现了高效计算
内核重用对精度稳定性影响较小,随着内核重用的层数 (G) 增加,精度会缓慢下降,但在G < 16时仍能保持在84%以上。
将内核重用应用于少量层可以显著减少空间开销,同时几乎不降低精度
总结:
本文通过引入空间高效的 TREC 来在微控制器上高效执行深度神经网络,使微控制器的资源利用能力达到最佳。在评估中,所提出的方法通过降低TREC的内存占用和对外存的访问次数,实现了 3.5x-5x 的加速而几乎没有精度损失。
思考:
- 尽管内核重用已经在空间与精度之间取得了一定的平衡,但随着内核重用层数的增加,精度下降较为明显。未来可以探索更先进的内核重用算法或自适应机制,减少精度损失。
- 该研究目前评估了CifarNet、ZfNet和SqueezeNet等微控制器友好型网络,未来可以研究如何将TREC扩展到更复杂和深层的模型上,比如ResNet、Transformer等,进一步验证其适用性。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!