深度学习系列55:深度学习加速技术概述

总体有两个方向:模型优化 / 框架优化

1. 模型优化

1.1 量化

最常见的量化方法为线性量化,权重从float32量化为int8,将输入数据映射在[-128,127]的范围内。在 nvdia gpu,x86、arm 和 部分 AI 芯片平台上,均支持 8bit 的计算。
在这里插入图片描述
当然还有简单的二值化。对比从 nvdia gpu 到 x86 平台,1bit 计算分别有 5 到128倍的理论性能提升。
此外还有对数量化,一种比较特殊的量化方法。两个同底的幂指数进行相乘,那么等价于其指数相加。目前 nvdia gpu,x86、arm 三大平台上没有实现对数量化的加速库,但是目前已知海思 351X 系列芯片上使用了对数量化。

根据量化的粒度(共享量化参数的范围)可以分为逐层量化、逐组量化和逐通道量化。TensorRT 框架中就使用了逐层量化的方法,每一层采用同一个阈值来进行量化。

权重量化完后,我们还要对激活层进行量化,这时需要进行calibration,通过校准数据集来确定激活层的比例因子和偏差。
此外,pytorch还可以进行训练后的动态量化(torch.quantization.quantize_dynamic)和训练时的量化(torch.quantization.FakeQuantize)。

1.2 剪枝

下图是第一种剪枝方法(移除边),非规则的形状对硬件不友好,只能在专用硬件上加速。
在这里插入图片描述
第二种是移除点(找到零神经元)
在这里插入图片描述
我们可以使用distiller工具来查看模型的稀疏度:

# 显示网络的稀疏度
python3 compress_classifier.py -a=resnet20_cifar ../../../data.cifar10 --summary=sparsity

在这里插入图片描述
在这里插入图片描述

1.3 融合

将一些近邻的层合并成一个层,减少计算量

1.4 知识蒸馏

知识蒸馏是一种与模型无关的压缩方法,它从大型、昂贵的教师模型中获取知识,并将其转移到较小的学生模型中。知识蒸馏模型采用软目标来获得比庞大的教师模型更高的准确性和更少的推理时间。
在这里插入图片描述

2. 压缩工具

2.1 pocketflow

该工具中所包含的压缩方法主要包括3大类:裁剪、权重稀疏和量化。

# 对网络进行裁剪操作
./scripts/run_seven.sh nets/resnet_at_cifar10_run.py \
    --learner channel \
    --cp_prune_option uniform \
    --cp_uniform_preserve_ratio 0.5
# 对网络进行权重稀疏操作
./scripts/run_local.sh nets/resnet_at_cifar10_run.py \
    --learner weight-sparse \
    --ws_prune_ratio_prtl uniform \
    --data_disk hdfs
# 对网络进行量化操作
./scripts/run_local.sh nets/resnet_at_cifar10_run.py \
    --learner uniform \
    --uql_use_buckets \
    --uql_bucket_type channel \
    --data_disk hdfs

2.2 TVM

通过LLCM来支持Intel和ARM CPU等一些设备;通过Opencl来支持ARM的MailGPU;通过CUDA来支持NVIDIA的设备;通过Metal来支持苹果的设备;通过VTA来很好的支持FPGA和ASCI

2.3 openvino/tensorRT

分别是针对intel和nvidia家的硬件,可参考以前的文章。

2.4 手机端加速

MNN/ARMNN/ncnn/TNN等。

2.5 pytorch相关

model-compression以及pytorch自带的压缩工具

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/372834.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式系统中的电磁兼容和电磁干扰问题如何解决?

嵌入式系统在现代科技领域中发挥着越来越重要的作用,无论是在智能手机、汽车、医疗设备还是工业控制系统中,嵌入式系统都扮演着关键的角色。然而,随着嵌入式系统功能的不断扩展和集成度的增加,电磁兼容性(EMC)和电磁干扰(EMI)问题…

SpringBoot集成axis发布WebService服务

文章目录 1、使用maven-web项目生成server-config.wsdd文件1.1、新建maven-web项目1.1.1、新建项目1.1.2、添加依赖 1.2、编写服务接口和实现类1.2.1、OrderService接口1.2.2、OrderServiceImpl实现类 1.3、配置deploy.wsdd文件deploy.wsdd文件 1.4、配置tomcat1.4.1、配置tomc…

交友系统---让陌生人变成熟悉人的过程。APP小程序H5三端源码交付,支持二开。

随着社交网络的发展和普及,人们之间的社交模式正在发生着深刻的变革。传统的线下交友方式已经逐渐被线上交友取而代之。而同城交友正是这一趋势的产物,它利用移动互联网的便利性,将同城内的人们连接在一起,打破了时空的限制&#…

【node】Node.js的常用内置模块:

文章目录 一、os模块:【1】常用的OS模块方法包括:【2】案例: 二、path模块:【1】常用的path模块方法包括:【2】案例: 三、url模块:【1】常用的url模块方法包括:【2】案例&#xff1a…

LeetCode--代码详解 2.两数相加

2.两数相加 题目 难度:中等 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数…

数字孪生:智慧城市的核心技术与发展

一、引言 随着城市化进程的加速,智慧城市的概念和实践逐渐成为全球关注的焦点。智慧城市利用先进的信息通信技术,提升城市治理水平,改善市民的生活质量。而数字孪生作为智慧城市的核心技术,为城市管理、规划、应急响应等方面提供…

【数据分享】1929-2023年全球站点的逐日平均能见度(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、湿度等指标,说到常用的降水数据,最详细的降水数据是具体到气象监测站点的降水数据! 有关气象指标的监测站点数据,之前我们分享过1929-2023年全…

[Angular 基础] - 数据绑定(databinding)

[Angular 基础] - 数据绑定(databinding) 上篇笔记,关于 Angular 的渲染过程及组件的创建&简单学习:[Angular 基础] - Angular 渲染过程 & 组件的创建 Angular 之中的 databinding 是一个相对而言更加复杂,以及我个人觉得相对而言比…

《MySQL》超详细笔记

目录 基本知识 主流数据库 数据库基本概念 MySQL启动 数据库基本命令 数据库 启动数据库 显示数据库 创建数据库 删除数据库 使用数据库 查询当前数据库信息 显示数据库中的表 导入数据库脚本 表 查看表的结构 查看创建某个表的SQL语句 数据库的查询命令 查询…

设计模式学习笔记(一):基本概念;UML

文章目录 参考面向对象的设计原则创建型模式结构型模式行为型模式 UML视图图(Diagram)模型元素(Model Element)通用机制类之间的关系关联关系复杂!!聚合关系组合关系 依赖关系泛化关系接口与实现关系 参考 https://github.com/fa…

OpenCV/C++:点线面相关计算(二)

接续,继续更新 OpenCV/C:点线面相关计算_线面相交的点 代码计算-CSDN博客文章浏览阅读1.6k次,点赞2次,收藏12次。OpenCV处理点线面的常用操作_线面相交的点 代码计算https://blog.csdn.net/cd_yourheart/article/details/125626239 目录 1、…

Micro micro controller一览

https://www.microchip.com.cn/, Microchip中文网站 https://www.microchip.com.cn/newcommunity/index.php?mSearch&adosearch&moduleDownload&keyworddsPIC33&p3 Microcontrollers and microProcessors dsPIC33 Digital Signal Controllers (D…

假期刷题打卡--Day24

1、MT1198阶乘差 求1!-2!-3!-…-n! 格式 输入格式: 输入为整型 输出格式: 输出为整型 样例 1 输入: 5输出: -151 分析过程 看到这个题目的时候,感觉这个题目出现的没有必要,就和前面阶乘和一样的…

MySQL数据库练习【一】

MySQL数据库练习【一】 一、建库建表-数据准备二、习题2.1. 查询部门编号为30的部门的员工详细信息2.2.查询从事clerk工作的员工的编号、姓名以及其部门号2.3.查询奖金多于基本工资的员工的信息、查询奖金小于基本工资的员工的信息2.4.查询奖金多于基本工资60%的员工的信息2.5.…

transformers重要组件(模型与分词器)

1、模型: from transformers import AutoModelcheckpoint "distilbert-base-uncased-finetuned-sst-2-english" model AutoModel.from_pretrained(checkpoint) 除了像之前使用 AutoModel 根据 checkpoint 自动加载模型以外,我们也可以直接…

算法学习——LeetCode力扣哈希表篇2

算法学习——LeetCode力扣哈希表篇2 454. 四数相加 II 454. 四数相加 II - 力扣(LeetCode) 描述 给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足: 0 …

细说开源软件的影响力分析

开源软件的影响力分析 一、开源软件如何推动技术创新 开源软件以其开放源代码的特性,极大地推动了全球软件技术的创新和发展。这种开放性不仅使得开发者能够自由地查看、修改和使用源代码,还促进了全球开发者之间的深度协作和交流。 1.1 促进全球协作&…

【数据分享】1929-2023年全球站点的逐月平均能见度(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、能见度等指标,说到气象数据,最详细的气象数据是具体到气象监测站点的数据! 之前我们分享过1929-2023年全球气象站点的逐月平均气温数据、逐月最高气温数据…

二叉树(4)——二叉树链式结构的实现和递归思想(2)

有了昨天的铺垫,今天就很简单了。先把昨天二叉树的代码复制一下,今天还要用。 代码: typedef int datatype; typedef struct BinaryTree {datatype _data;struct BinaryTree* _left;struct BinaryTree* _right; }BT;BT* CreatNode(datatype…

分享63个节日PPT,总有一款适合您

分享63个节日PPT,总有一款适合您 63个节日PPT下载链接:https://pan.baidu.com/s/1kZeiN06KbevtSCs5vXm6oA?pwd6666 提取码:6666 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,收集整理更不易…