【简单学】8000 多行代码即可从零实现深度学习推理框架 【透彻学】透明解析推理框架内部机制,不再是黑盒工具 【轻松学】附赠 B 站免费配套视频,附赠本书配套源代码 【一起学】基于 GitHub 2.7k 星标源项目 KuiperInfer 【多模型】支持 ResNet、YOLOv5,支持 Llama 等大模型推理
售 价:¥
纸质售价:¥65.20购买纸书
6.5
温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印
为你推荐

扉页
内容提要
前言
第1章 深度学习推理框架基础
1.1 推理框架概览
1.1.1 什么是深度学习推理框架
1.1.2 代表性深度学习推理框架
1.2 KuiperInfer简介
1.2.1 KuiperInfer的组成部分
1.2.2 KuiperInfer的设计原则
1.3 环境配置与依赖安装
1.3.1 数学库的安装
1.3.2 对数学库的测试
1.3.3 单元测试库Google Test的安装与配置
1.3.4 日志库的安装
1.4 集成开发环境:CLion
1.4.1 在CLion中查看文件
1.4.2 使用CLion进行单元测试
1.5 集成开发环境:VS Code
1.6 小结
1.7 练习
第2章 张量的设计
2.1 张量是什么
2.1.1 张量的维度
2.1.2 张量中的基础数据结构
2.1.3 张量中的数据存储顺序
2.1.4 Cube中的数据排布
2.2 如何实现张量
2.2.1 实现张量的定义
2.2.2 创建新张量
2.2.3 张量的填充
2.2.4 改变张量的形状
2.2.5 张量的工具类方法
2.3 单元测试
2.3.1 创建数据容器
2.3.2 创建一维张量
2.3.3 创建三维张量
2.3.4 获取张量的形状
2.3.5 判断张量是否为空
2.3.6 获取张量中某个位置的元素
2.4 小结
2.5 练习
第3章 计算图的设计
3.1 计算图是什么
3.2 PNNX计算图的转换
3.2.1 将PyTorch模型转换为TorchScript模型
3.2.2 将TorchScript模型转换为PNNX格式的计算图
3.3 PNNX计算图结构
3.3.1 结构详解
3.3.2 加载模型结构定义文件
3.3.3 计算节点
3.3.4 操作数
3.3.5 参数和权重
3.4 KuiperInfer计算图结构
3.4.1 对操作数的封装
3.4.2 对权重类的封装
3.4.3 对计算节点的提取和封装
3.4.4 对参数的提取和封装
3.4.5 KuiperInfer计算图的整体结构
3.5 单元测试
3.5.1 测试模型的加载
3.5.2 测试PNNX中的计算节点
3.5.3 测试PNNX中的操作数
3.5.4 测试PNNX计算节点的权重
3.6 小结
3.7 练习
第4章 计算图的构建
4.1 计算节点的执行顺序
4.2 拓扑排序
4.2.1 基于深度优先的拓扑排序
4.2.2 拓扑排序的实现思路
4.2.3 构建节点之间的图关系
4.2.4 拓扑排序的编程实现
4.2.5 延伸:基于广度优先的拓扑排序
4.3 构建计算图的流程
4.3.1 状态检查
4.3.2 计算节点数据空间的初始化
4.3.3 整体构建流程
4.4 单元测试
4.4.1 拓扑排序测试
4.4.2 计算图状态变化测试
4.4.3 输出空间初始化测试
4.5 小结
4.6 练习
第5章 算子和算子注册器的设计与实现
5.1 什么是算子
5.2 算子类及其实现
5.2.1 算子类中的成员变量
5.2.2 算子类中的成员方法
5.2.3 算子类与计算节点
5.3 算子的全局注册器
5.3.1 全局注册器的设计方法与实现
5.3.2 向注册器中注册算子的实例化方法
5.3.3 从注册器中获取算子类的实例化方法
5.3.4 注册算子的工具类
5.4 算子的实例化方法
5.4.1 算子实例化的时机
5.4.2 编写第一个算子ReLU
5.4.3 注册ReLU算子
5.5 单元测试
5.5.1 验证全局注册器的唯一性
5.5.2 将实例化方法插入全局注册器
5.5.3 获取算子
5.5.4 验证ReLU算子的功能
5.6 小结
5.7 练习
第6章 池化算子和卷积算子的实现
6.1 池化算子
6.1.1 简介
6.1.2 池化操作中的边界填充
6.1.3 多通道输入特征图的池化
6.1.4 池化算子的实现
6.1.5 池化算子的注册
6.2 卷积算子
6.2.1 简介
6.2.2 卷积的直观解释
6.2.3 用Im2Col优化卷积计算
6.2.4 Im2Col方法的实现
6.2.5 卷积算子的计算过程
6.2.6 卷积算子中的GEMM实现
6.2.7 卷积算子的注册和实例化方法
6.3 单元测试
6.3.1 池化算子的相关测试
6.3.2 卷积算子的相关测试
6.4 小结
6.5 练习
第7章 表达式算子的实现
7.1 表达式和表达式算子的定义
7.2 词法分析
7.2.1 词法分析的定义
7.2.2 词法分析的过程
7.3 语法分析
7.3.1 语法二叉树结构
7.3.2 递归的条件
7.3.3 递归向下构建语法二叉树
7.3.4 对语法二叉树进行转换
7.3.5 逆波兰表达式
7.4 表达式算子的实现过程
7.4.1 实例化
7.4.2 类定义
7.4.3 注册
7.4.4 对Forward方法的重写
7.4.5 计算相关代码的实现
7.5 单元测试
7.5.1 词法分析测试
7.5.2 逆波兰表达式的生成测试
7.5.3 表达式计算过程测试
7.6 小结
7.7 练习
第8章 支持ResNet和YOLOv5推理
8.1 模型的执行方法
8.1.1 执行输入类计算节点
8.1.2 执行常规类计算节点
8.1.3 获取模型的输出
8.2 在KuiperInfer中支持ResNet
8.2.1 全连接算子的实例化
8.2.2 全连接算子的实现
8.2.3 ResNet推理流程概览
8.2.4 实现KuiperInfer对ResNet的支持
8.3 在KuiperInfer中支持YOLOv5
8.3.1 数据预处理
8.3.2 补充缺失的算子
8.3.3 YOLOv5模型的导出和运行
8.3.4 YOLOv5模型输出的后处理
8.4 小结
8.5 练习
第9章 支持大语言模型的推理
9.1 大模型简介
9.1.1 Transformer模型
9.1.2 GPT模型
9.2 大模型的架构
9.2.1 输入嵌入
9.2.2 位置编码
9.2.3 自注意力机制
9.2.4 前馈神经网络层
9.2.5 键-值对缓存
9.2.6 残差连接与层归一化
9.2.7 解码
9.3 Llama 2的关键实现
9.3.1 均方根归一化
9.3.2 自注意力机制
9.3.3 前馈神经网络层
9.3.4 Transformer层
9.3.5 完整的Transformer解码器
9.4 KuiperInfer支持Llama 2推理
9.4.1 加载模型文件
9.4.2 模型的推理
9.4.3 结果解码
9.4.4 大模型推理基础算子的实现
9.4.5 推理演示
9.5 小结
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜