近些年来,在深度学习的推动下,人工智能步入新的发展阶段。然而,随着深度学习模型性能的提升,其计算复杂度也在不断增加,深度学习模型的运行效率面临巨大挑战。在这种情况下,深度学习高效计算成为在更大范围内应用人工智能的重要环节。本书围绕深度学习模型计算,重点从深度学习模型优化、算法软件加速、硬件架构设计等方面展开介绍深度学习高效计算,主要包括低秩分解、剪枝、量化、知识蒸馏、精简网络设计与搜索、深度神经网络高效训练、卷积神经网络高效计算、大模型高效计算、神经网络加速器设计等内容。
1 概述1
1.1 深度学习与人工智能1
1.2 深度学习高效计算 2
1.2.1 深度学习计算面临困难 2
1.2.2 主要研究方向3
1.3 本章小结 4
2 神经网络与深度学习基础5
2.1 神经网络5
2.1.1 感知机 5
2.1.2 多层感知机 6
2.1.3 深度学习 7
2.2 神经网络训练10
2.2.1 梯度下降 10
2.2.2 损失函数 11
2.2.3 过拟合与正则化 13
2.3 典型深度神经网络15
2.3.1 卷积神经网络15
2.3.2 循环神经网络16
2.3.3 图神经网络 16
2.3.4 自注意力神经网络16
2.4 本章小结 17
3 深度学习框架介绍18
3.1 什么是深度学习框架18
3.2 深度学习框架的基本组成19
3.2.1 张量 19
3.2.2 算子 19
3.2.3 计算图20
3.2.4 自动微分支持20
3.2.5 并行计算支持21
3.3 深度学习训练框架21
3.3.1 TensorFlow 22
3.3.2 PyTorch22
3.3.3 Caffe 22
3.3.4 MXNet 23
3.3.5 PaddlePaddle23
3.3.6 MindSpore24
3.4 深度学习推理框架 24
3.4.1 TensorFlow Lite24
3.4.2 MNN 25
3.4.3 NCNN 25
3.4.4 MACE 25
3.4.5 SNPE26
3.4.6 华为HiAI 26
3.4.7 TensorRT.26
3.4.8 QNN 27
3.5 本章小结 27
4 低秩分解28
4.1 张量基础 28
4.1.1 张量定义 28
4.1.2 张量运算 29
4.1.3 特殊类型张量32
4.2 矩阵SVD 分解 33
4.2.1 特征值与特征向量33
4.2.2 特征值分解 34
4.2.3 SVD 分解34
4.2.4 全连接层SVD 分解 35
4.2.5 卷积层SVD 分解 36
4.3 张量低秩分解38
4.3.1 Tucker 分解39
4.3.2 CP 分解 41
4.3.3 BTD 分解 44
4.4 本章小结46
5 深度神经网络剪枝47
5.1 神经网络剪枝简介 47
5.1.1 剪枝的基本概念和定义47
5.1.2 剪枝的作用与意义48
5.1.3 神经网络剪枝发展简史 49
5.1.4 剪枝的基本类型 50
5.2 稀疏网络存储格式51
5.2.1 非结构化剪枝存储格式51
5.2.2 结构化剪枝存储格式53
5.3 神经网络剪枝算法53
5.3.1 基于重要性度量的剪枝 53
5.3.2 基于稀疏正则化的剪枝方法58
5.3.3 基于逐层特征重构的剪枝61
5.3.4 运行时剪枝算法 62
5.3.5 基于初始化的剪枝算法 65
5.3.6 基于自动机器学习的剪枝算法 66
5.4 本章小结 71
6 量化72
6.1 量化基础73
6.1.1 量化函数 73
6.1.2 量化计算 77
6.1.3 量化粒度 80
6.2 训练后量化81
6.2.1 量化参数求解82
6.2.2 量化误差校正86
6.2.3 训练后量化经典方法88
6.2.4 训练后量化流程 91
6.3 量化感知训练91
6.3.1 QAT 基础 92
6.3.2 QAT 经典方法 94
6.3.3 QAT 流程 98
6.4 进阶课题 99
6.4.1 混合精度量化100
6.4.2 无数据量化 105
6.4.3 二值量化 108
6.5 本章小结 113
7 知识蒸馏114
7.1 何为知识 114
7.2 如何蒸馏 118
7.2.1 软标签蒸馏 118
7.2.2 隐层特征蒸馏124
7.3 相关应用 128
7.3.1 鲁棒训练 128
7.3.2 语义分割 130
7.3.3 目标检测 131
7.4 本章小结 135
8 精简网络设计与搜索136
8.1 手工设计神经网络架构136
8.1.1 Network In Network 136
8.1.2 ResNeXt138
8.1.3 SqueezeNet 140
8.1.4 MobileNet 141
8.1.5 ShuffleNet 144
8.2 神经网络架构搜索144
8.2.1 基于权重共享的神经网络架构搜索 147
8.2.2 基于预测器的神经网络架构搜索154
8.2.3 基于先验指标的神经网络架构搜索 155
8.3 本章小结 156
9 深度神经网络高效训练方法 158
9.1 深度神经网络高效训练简介158
9.1.1 什么是高效训练方法158
9.1.2 高效训练方法基本类型159
9.1.3 高效训练算法的意义159
9.2 深度神经网络训练基本流程160
9.2.1 数据预处理 160
9.2.2 前向传播 161
9.2.3 反向传播 162
9.2.4 权重更新 163
9.3 深度神经网络分布式训练163
9.3.1 参数服务器模式 164
9.3.2 Ring All-Reduce 模式 165
9.4 面向数据预处理的高效训练方法 167
9.4.1 基于GPU 的数据预处理167
9.4.2 基于数据重复的数据预处理168
9.5 基于梯度压缩的高效分布式训练 169
9.5.1 梯度剪枝方法170
9.5.2 梯度量化方法170
9.5.3 本地残差梯度积累171
9.5.4 本地梯度截断172
9.6 面向显存优化的高效训练算法173
9.6.1 网络训练内存构成173
9.6.2 梯度检查点 174
9.6.3 内存下放 175
9.6.4 激活压缩的训练176
9.7 面向计算过程的网络训练加速177
9.7.1 FP16 混合精度训练算法177
9.7.2 基于低比特量化的训练加速算法 178
9.7.3 稠密和稀疏网络交替训练算法 179
9.7.4 基于稀疏反向传播的训练加速 180
9.8 本章小结 181
10 卷积神经网络高效计算182
10.1 im2col 算法183
10.1.1 一维卷积的im2col 算法183
10.1.2 二维卷积的im2col 算法185
10.1.3 多输入通道的二维卷积的im2col 算法188
10.1.4 多输出通道的二维卷积的im2col 算法189
10.2 矩阵乘算法优化与实现191
10.2.1 基础实现 191
10.2.2 矩阵重排 192
10.2.3 分块矩阵乘算法 196
10.2.4 向量化计算198
10.3 内存高效的快速卷积算法 199
10.3.1 im2col 算法的问题200
10.3.2 单通道二维卷积的MEC 算法202
10.3.3 多通道二维卷积的MEC 算法204
10.3.4 空间复杂度分析 205
10.4 Winograd 快速卷积算法 206
10.4.1 Winograd 快速卷积206
10.4.2 多通道二维卷积的Winograd 算法 209
10.4.3 复杂度分析211
10.5 稀疏卷积高效计算213
10.5.1 模式剪枝213
10.5.2 动机及剪枝方式 213
10.5.3 块剪枝216
10.5.4 2:4 剪枝 218
10.6 本章小结 220
11 大模型高效计算 222
11.1 大模型概述222
11.1.1 大模型发展历程 222
11.1.2 Transformer 架构223
11.1.3 计算特性分析 225
11.2 大模型压缩方法226
11.2.1 大模型量化226
11.2.2 大模型剪枝231
11.3 高效训练与微调237
11.3.1 大模型高效训练算法 237
11.3.2 大模型参数高效微调方法 244
11.4 系统优化 248
11.4.1 算子融合优化:FlashAttention248
11.4.2 存储管理优化:Paged Attention 252
11.4.3 并行服务优化:Continuous Batching253
11.5 高效解码 254
11.5.1 推测解码255
11.5.2 思维导图257
11.6 本章小结 258
12 神经网络加速器设计基础260
12.1 为什么要设计神经网络加速器260
12.2 神经网络加速器设计基础 262
12.2.1 硬件描述语言基础263
12.2.2 计算单元265
12.2.3 存储结构及片上网络 270
12.2.4 数据流272
12.2.5 分块及映射275
12.3 深度学习算法架构协同设计279
12.3.1 结构化稀疏加速器279
12.3.2 可变位宽加速器 281
12.3.3 其他协同设计方案284
12.4 网络-架构协同搜索 286
12.4.1 基于强化学习的网络-架构协同搜索 287
12.4.2 基于梯度的网络-架构协同搜索288
12.5 本章小结 289
13 实战DNN 加速器设计291
13.1 加速器整体架构291
13.2 接口互联 292
13.3 构成部件 293
13.3.1 协处理器293
13.3.2 处理单元阵列 296
13.3.3 存储系统302
13.4 软件设计 305
13.5 可配置参数与架构拓展·306
13.6 本章小结 307
参考文献309