第 4 部分:神经网络模型压缩与VLSI优化方向介绍
当我们在设计某个算法的硬件架构时,一般都会事先考虑是否能对算法进行优化,使之对硬件设计更加友好。不巧的是,当前神经网络模型本身就存在很多冗余,优化空间很大,不同的方法组合起来构成了"模型压缩"这个研究方向。
NN Hardware设计概述
近几年的NN Hardware主要关注的点在Inference,Training更多的还是在GPU上。
1. NN hardware评价的性能指标
除了Power,Area以外,评价速度的指标最常用的是OP/s,也即每秒能够执行的operation数目。这两年大家已经不再像以前那么关注高速,而更多的关注的一个指标叫做Energy Efficiency,单位是OP/s/W。
2. 大家都focus在什么地方?
- a) 只针对卷积层的硬件实现
- b) 降低DRAM的访问次数以降低功耗
- c) 降低SRAM的访问次数
- d) 使用快速算法(Winograd,FFT)实现卷积计算的硬件架构
- e) 使用超低精度数据量化
- f) 稀疏神经网络的硬件架构
3. 一些典型研究组的NN Hardware的工作
- a) 中科院DianNao系列:中科院计算所的陈天石陈云霁团队几乎可以算是最早开始做NN hardware的。
- b) MIT的Eyeriss架构:ISSCC2016的一篇文章。可以算是NN硬件中最经典的文章之一了。
- c) Stanford韩松(Song Han)等人的EIE,ESE等工作:他们属于Software-Hardware Co-design设计思路的代表团队。
- d) 清华魏少军组:DNA,Thinker等芯片。他们设计目标是NN的可重构架构。
模型压缩技术详解
量化 (Quantization)
量化是将高精度(如32位浮点)模型转换为低精度(如8位整数)表示的技术。
量化方法
- 权重量化:将网络权重从浮点转换为定点
- 激活量化:量化网络中间层的激活值
- 混合精度:不同层使用不同精度
量化优势
- 减少存储需求
- 降低计算复杂度
- 提高推理速度
- 降低功耗
剪枝 (Pruning)
剪枝是移除神经网络中不重要的连接或神经元的技术。
剪枝类型
- 结构化剪枝:移除整个通道或层
- 非结构化剪枝:移除个别连接
- 渐进式剪枝:逐步移除不重要的连接
剪枝策略
- 基于重要性的剪枝:根据权重大小或梯度
- 基于敏感度的剪枝:分析各层对精度的敏感度
- 知识蒸馏辅助剪枝:使用教师网络指导剪枝
知识蒸馏 (Knowledge Distillation)
知识蒸馏使用大型教师网络指导小型学生网络学习。
蒸馏过程
- 训练大型教师网络
- 使用教师网络生成软标签
- 训练学生网络同时学习硬标签和软标签
蒸馏优势
- 保持模型性能
- 显著减少模型大小
- 提高推理效率
低秩分解 (Low-rank Decomposition)
低秩分解将大型矩阵分解为多个小型矩阵的乘积。
分解方法
- SVD分解:奇异值分解
- CP分解:CANDECOMP/PARAFAC分解
- Tucker分解:高阶张量分解
VLSI优化技术
数据流优化
数据重用策略
- 输入重用:同一输入用于多个计算
- 权重重用:权重在多个计算中重复使用
- 输出重用:中间结果的重用
内存层次优化
- 寄存器级优化:最小化寄存器访问
- 缓存级优化:提高缓存命中率
- 主存级优化:减少主存访问
并行计算架构
数据并行
- SIMD:单指令多数据
- 向量处理:向量化计算
- 流水线:计算流水线设计
模型并行
- 层间并行:不同层并行计算
- 通道并行:通道维度并行
- 空间并行:空间维度并行
专用硬件设计
脉动阵列 (Systolic Array)
- 规则的数据流模式
- 高效的矩阵乘法实现
- 适合卷积计算
数据流架构
- 基于数据流的计算
- 动态调度和优化
- 适应不同网络结构
实际应用案例
移动端部署
- 手机端推理:ARM CPU + GPU
- 边缘计算:专用AI芯片
- 物联网设备:超低功耗设计
云端部署
- 服务器加速:GPU集群
- 专用加速卡:TPU、NPU
- 混合架构:CPU + GPU + 专用芯片
自动驾驶
- 实时推理:低延迟要求
- 高精度要求:安全关键应用
- 功耗限制:车载环境约束
未来发展趋势
技术趋势
- 神经架构搜索:自动设计网络结构
- 混合精度训练:动态精度调整
- 硬件感知训练:考虑硬件约束的训练
应用趋势
- 边缘AI:更多边缘设备部署
- 实时AI:低延迟应用需求
- 绿色AI:可持续的AI发展
模型压缩与VLSI优化是AI硬件化的关键技术,需要算法和硬件的深度融合。