描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121480591丛书名: 通用智能与大模型丛书
全彩印制
高效模块设计、模型剪枝、模型量化、模型二值化、神经网络架构搜索、知识蒸馏、定制化硬件加速器的设计及大语言模型的加速和压缩
高效模型压缩与设计,释放大模型潜能,赋能千行百业
清华大学电子工程系汪玉 宁雪妃 作品
权威:出自芯片领域著名专家之手
系统:梳理模型压缩与设计关键技术
经验:提供实践中总结的分析思路和经验
前沿:结合大模型压缩与加速
本书系统地介绍了高效模型压缩和模型设计的方法,在编写上兼顾理论和实践。本书主体部分详细介绍了模型压缩的方法论,包括高效模块设计、模型剪枝、模型量化、模型二值化、神经网络架构搜索、知识蒸馏几大部分。另外,简要介绍了定制化硬件加速器的设计及大语言模型的加速和压缩。
第1部分 基础
1 绪论 2
1.1 神经网络技术的发展 2
1.2 神经网络的高效化需求 3
1.3 神经网络的高效化路径 4
1.4 本书主要内容 6
2 基础知识 7
2.1 优化问题 7
2.1.1 优化问题的定义和分类 7
2.1.2 优化方法的分类 9
2.2 卷积神经网络模型 10
2.2.1 基础模块 10
2.2.2 代表性模型介绍 13
2.3 视觉Transformer 模型 15
2.3.1 基础模块 16
2.3.2 模型分类与总结 18
第2部分 高效模型压缩方法论
3 高效模块设计 20
3.1 概述 20
3.2 代表性模型介绍 21
3.2.1 SqueezeNet 21
3.2.2 MobileNet 系列 22
3.2.3 ShuffleNet 系列 24
3.2.4 GhostNet 26
3.2.5 ConvNeXt 27
3.2.6 VoVNet 系列 28
3.2.7 RepVGG 29
3.3 高效模块的5 个设计维度 30
3.4 本章小结 31
4 模型剪枝 32
4.1 模型剪枝的定义和分类 32
4.2 模型敏感度分析方法 34
4.2.1 层内和层间敏感度分析 34
4.2.2 层内敏感度分析指标 35
4.3 结构化剪枝方法 37
4.3.1 基于权重正则的结构化剪枝方法 37
4.3.2 基于搜索的结构化剪枝方法 39
4.3.3 给定资源限制的条件下的结构化剪枝方法 44
4.4 近似低秩分解方法 47
4.5 非结构化剪枝方法 48
4.6 半结构化剪枝方法 51
4.7 针对激活值的剪枝方法 53
4.8 剪枝方法的经验性选择 55
4.8.1 剪枝流程的选择 55
4.8.2 剪枝稀疏模式的选择 56
4.8.3 关于任务性能的经验 56
4.9 Group Lasso 结构化剪枝的实践案例 57
4.10 本章小结 60
5 模型量化 61
5.1 模型量化的定义和分类 61
5.2 模型量化过程和量化推理过程 64
5.3 量化格式和操作 65
5.3.1 均匀量化格式 66
5.3.2 非均匀量化格式 68
5.3.3 三种量化操作 71
5.4 量化参数 73
5.4.1 缩放系数 73
5.4.2 零点位置 74
5.4.3 量化位宽 74
5.5 训练后量化75
5.5.1 训练后量化的流程 75
5.5.2 重参数化 76
5.5.3 缩放系数的选取方法 80
5.5.4 量化值调整 83
5.6 量化感知训练 87
5.6.1 基础与流程 87
5.6.2 调整模型架构的方法 90
5.6.3 量化器设计的技巧 92
5.6.4 常用的训练技巧 97
5.7 混合位宽量化 97
5.7.1 基于敏感度指标的混合位宽量化 97
5.7.2 基于搜索的混合位宽量化 99
5.8 量化方法的经验性选择 100
5.8.1 量化流程的选择 100
5.8.2 数据表示的设计和决定 100
5.8.3 算子的选择与处理和计算图的调整 102
5.8.4 关于任务性能的经验 104
5.9 拓展:低比特推理硬件实现 104
5.9.1 定点计算的硬件效率 104
5.9.2 浮点计算转定点计算的原理 105
5.9.3 非均匀量化格式的计算 111
5.9.4 典型的计算单元和加速器架构 112
5.10 拓展:低比特训练简介 115
5.10.1 应用背景 115
5.10.2 挑战分析 116
5.10.3 相关工作 116
5.11 本章小结 117
6 模型二值化 118
6.1 模型二值化的定义和分类 118
6.2 模型二值化的基础:以XNOR-Net 为例 120
6.3 二值化方式 122
6.3.1 朴素二值化方式 123
6.3.2 间接二值化方式 127
6.4 训练技巧 131
6.4.1 修改损失函数 132
6.4.2 降低梯度估计误差 133
6.4.3 多阶段的训练方法 135
6.4.4 训练经验 136
6.5 架构设计 137
6.5.1 模型架构的调整 138
6.5.2 模型架构搜索 141
6.5.3 集成方法与动态模型 142
6.6 模型二值化在其他任务与架构中的应用 142
6.7 本章小结 144
7 神经网络架构搜索146
7.1 神经网络架构搜索的定义和分类 146
7.2 搜索空间 149
7.2.1 人工设计搜索空间 150
7.2.2 自动设计搜索空间 154
7.2.3 总结 156
7.3 搜索策略 157
7.3.1 基于强化学习的搜索策略 157
7.3.2 基于进化算法的搜索策略 159
7.3.3 随机搜索策略 160
7.3.4 基于架构性能预测器的搜索策略 160
7.3.5 总结 164
7.4 评估策略 165
7.4.1 独立训练策略 166
7.4.2 基于权重共享的单次评估策略 167
7.4.3 基于权重生成的单次评估策略 172
7.4.4 零次评估策略 172
7.5 可微分神经网络架构搜索 175
7.5.1 连续松弛方法 175
7.5.2 优化方法 176
7.5.3 搜索坍缩问题 177
7.5.4 更高效的可微分搜索算法 179
7.6 考虑硬件效率的神经网络架构搜索 180
7.6.1 考虑硬件效率的搜索空间设计 181
7.6.2 硬件效率指标的加速评估方法 182
7.6.3 考虑多种硬件效率目标的搜索策略 184
7.6.4 面向多种硬件设备及约束的神经网络架构搜索方法 186
7.7 本章小结 188
8 知识蒸馏 190
8.1 知识蒸馏的定义和分类 190
8.2 知识类型和知识分量:“学什么” 192
8.2.1 基于响应的知识 192
8.2.2 基于特征的知识 194
8.2.3 基于关系的知识 197
8.3 知识来源:“向谁学” 199
8.3.1 离线蒸馏 199
8.3.2 互学习 199
8.3.3 自蒸馏200
8.4 本章小结 201
第3部分 拓展和前沿
9 相关领域:高效灵活的AI 推理硬件和系统 203
9.1 概述 203
9.2 硬件加速器设计和软硬件协同优化 204
9.2.1 从CPU 到硬件加速器 204
9.2.2 AI 加速器中的软硬件协同优化 206
9.2.3 Roofline 分析模型 207
9.2.4 基于指令集的AI 加速器 210
9.3 神经网络计算资源虚拟化 211
9.3.1 虚拟化的概念 211
9.3.2 AI 加速器的时分复用与空分复用虚拟化 212
9.3.3 相关工作简介 214
9.4 本章小结 215
10 前沿应用:大语言模型的加速和压缩 218
10.1 大语言模型的发展 218
10.2 大语言模型的架构和推理过程 219
10.3 大语言模型的高效性分析 220
10.3.1 效率瓶颈 220
10.3.2 优化路径 221
10.4 典型的大语言模型的压缩方法:量化 223
10.5 本章小结 226
后记 227
参考文献 229
2022年年底到2023年年初,由AI驱动的ChatGPT对话机器人、Midjourney文图生成等应用产品爆红。这些热门产品的广阔应用前景令人振奋,吸引了大量资源投入AI的算法研究、数据清洗、算力等方面的基础建设中。这些爆款应用是由大数据训练的大模型支撑的。举例来说,近年来,大语言模型的训练数据和模型的体量迅速增长,从2017年发布的有1.65亿参数量的Transformer,到2020年发布的有1 750亿参数量的GPT-3,再到2022年发布的ChatGPT应用背后的模型也有数百亿参数量。这样的训练数据和模型体量的增长带来了模型能力的提升,让大模型“涌现”出指令跟随、上下文学习等能力,展示出“通用”的生成能力。有目共睹的是,强大的算法能力伴随着巨大的算力需求和资源消耗,大模型的推理和训练算力需求随着模型体量的增长而增长。
在这个背景下,高效深度学习领域显得尤为关键,得到了广泛关注。高效深度学习方法通过对算法和系统的精心设计,使有限的算力发挥出更大的效用。高效深度学习里很重要的一个思路是模型压缩,即从模型结构、数据表示等多种维度将大的模型压小。深度压缩(Deep Compression)方法作为这一波AI浪潮中模型压缩的先驱工作,启发了非常多的后续研究。模型压缩技术发展到今天,已经形成较为成熟的方法论和工具链。
高效深度学习的另一个重要思路是,针对算法做软硬件的定制化设计。清华大学汪玉团队2015年就投入高效深度学习领域开展研究。由于FPGA的灵活性,汪玉团队选择了基于FPGA的加速器路径。2016年,汪玉团队在FPGA会议上发表题目为“Going Deeper with Embedded FPGA Platform for Convolutional Neural Network”的论文;2017年,汪玉团队在FPGA会议上发表题目为“ESE:Efficient Speech Recognition Engine with Sparse LSTM on FPGA”的论文,论文主要探讨了针对CNN和LSTM的FPGA加速器设计工作。除了基于FPGA的加速器设计路径,2016年,汪玉和谢源团队在ISCA会议上发表题目为“PRIME:A Novel Processing-in-memory Architecture for Neural Network Computation in ReRAM-based Main Memory”的论文,该论文总结了基于新兴的存内计算范式的加速器设计工作。在过去十年的发展中,定制化架构设计将AI负载的处理能效提升了5个数量级。
结合上述模型压缩和软硬件定制化设计(编译优化、硬件设计)的思路,汪玉团队于2018年在TCAD杂志上发表题目为“Angel-Eye:A Complete Design Flow for Mapping CNN ontoEmbedded FPGA”的论文,该论文总结了“软硬件协同设计”的范式。幸运的是,这些工作在学术界和工业界都产生了一定的影响力。基于这些技术,笔者团队孵化了深鉴科技有限公司。2018年年末,深鉴科技被可重构计算领域的龙头企业赛灵思收购,推动了FPGA深度学习加速器的产业化。2023年,随着“大模型”的风靡,高效深度学习领域再次受到极大的关注。汪玉创立了无问芯穹智能科技有限公司,致力于提供通用人工智能(Artificial General Intelligence,AGI)算力解决方案。近期,汪玉团队在“高效大模型”推理方向做了一系列新工作,包括“Skeleton-of-Thought:Large Language Models Can Do Parallel Decoding”的高效算法设计工作、“FlashDecoding :Faster Large Language Model Inference on GPUs”的GPU软件算子设计工作,以及“FlightLLM:Efficient Large Language Model Inference with a Complete Mapping Flow on FPGAs”的FPGA 硬件加速器设计工作等。同时,笔者团队将在高效深度学习方法论上的认知总结为本书,希望通过本书的出版帮助对这个领域感兴趣的读者,推动领域的发展。
本书主要内容
本书名为《高效深度学习:模型压缩与设计》,其主体部分详细介绍了模型压缩的方法论,包括高效模块设计、模型剪枝、模型量化、模型二值化、神经网络架构搜索、知识蒸馏几大部分。另外,本书简要介绍了定制化硬件加速器的设计及大语言模型的加速和压缩。希望本书能够为读者提供有价值的知识和启发。
本书读者画像
对于希望进入模型压缩领域的初学者,本书归纳了高效深度学习领域的整体框架,并注重阐述和辨析重要的基本概念,希望可以帮助读者快速获得对该领域的整体认知和掌握重要概念。对于有一定科研经验、希望在相关科研方向进行探索的读者,本书在多个层次提供了框架性总结,定位多个子领域之间、同一子领域内多个方法之间的关系,希望可以帮助读者加强对知识的整合,利用框架更好地进行创新探索。对于需要工具书辅助解决实际问题的读者,本书不仅包含对实践经验的总结,也包含对每个细分技术及其应用的逻辑的详细说明,希望可以帮助读者厘清分析和解决问题的思路,并快速定位到相关文献。
致谢
衷心感谢电子工业出版社的编辑在本书编写过程中对作者团队的悉心帮助,尤其是郑柳洁编辑非常专业和热情,在本书成书过程中给予了巨大的帮助。还要感谢所有参与本书校对工作的同学们(史祥生、李师尧、周紫轩、赵俊博、郭立栋、曾书霖、杨昕昊、钟凯、傅天予、赵天辰、唐长成、梁海玉、王鸿懿、张浩瑜、蔡熠、陆璞,等等),因为你们的付出,才有了本书。衷心感谢为本书提出宝贵建议的朋友们:汪彧之、朱振华、傅泳淦、张林峰、秦浩桐、章雅婷、林梓楠、袁之航、陆欣然、罗雁天等。
由于作者团队的知识和能力有限,本书内容不可避免地存在疏漏,欢迎大家批评指正。
汪玉 宁雪妃
2024年4月
评论
还没有评论。