
算法部署
文章平均质量分 83
针对算法落地的工程技术,部署相关技术的总结,包含一些实战技巧以及部署原理,也设计C++的学习
一个热爱学习的深度渣渣
本科软件工程,目前从事算法相关工作,欢迎志同道合的伙伴交流~
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Docker入门——实战图像分类
本篇Docker入门文章并没有具体讲解Docker的一些底层原理,而是从实际使用的角度出发,用一个图像分类的案例讲述了如何拉取镜像并使用,如何上传自己的镜像供他人使用;如果有一些问题或者想法的话欢迎私信探讨!最后放最爱的小企鹅!!原创 2023-08-16 15:29:02 · 896 阅读 · 0 评论 -
基于Flask的模型部署
虽然是一个简单的分类项目,但整体部署的流程以及一些代码的模板是不变的,换成别的任务可能会复杂一些,主要还是前后处理相对复杂一些,并且做UI界面的话也会相对复杂一些;原创 2023-08-08 14:05:49 · 3164 阅读 · 0 评论 -
CUDA和TensorRT入门
1、对于深度神经网络的推理,TRT可以充分发挥GPU的算力,以及节省GPU的存储空间;2、要多参考官方源码的sample案例,尝试替换现有模型,再深入了解API进行网络的搭建;3、如果要使用自定义组件,至少先了解CUDA基本架构以及常用属性;4、推荐使用FP16(定义很少变量,明显能提高速度,精度影响不大)和INT8(更大的潜力,可能导致精度下降)这两种量化模式;5、在不同架构的GPU或者不同的软件版本的设备上,引擎不能通用,要重新生成一个;原创 2023-04-17 11:56:10 · 2304 阅读 · 0 评论 -
【模型压缩】(四)——知识蒸馏
一、概述一句话概括:将一个复杂模型的预测能力转移到一个较小的网络上;(复杂模型称为教师模型,较小模型称为学生模型)Teacher and Student的概念:对大网络学习的知识进行"蒸馏",并将其转移到小网络上,同时小网络的性能能够接近大网络;蒸馏模型(Student)被训练模仿大网络(Teacher)的输出,而不仅仅是直接在原始数据上训练,通过这种方式让小网络学习到大网络的抽象特征能力和泛化能力;二、流程详解方法一简单流程如下:1、数据集上训练一个teacher网络;2、训练原创 2022-04-07 08:27:03 · 2881 阅读 · 0 评论 -
【模型压缩】(三)——量化
一、概述量化:剪枝是删除不重要的权重参数,量化则是减少存储权重的bit,将权重存储在更小的空间中;权重不需要以高精度方式存储,甚至不应该以高精度方式存储;如果用简单的量化方式效果并不好,需要一些训练量化参数的计较;方法:1、二值化这是最简单的一种量化方式,就是用0-1两个值代替原来的参数值,往往能达到32倍的压缩程度;该方法能够大大提升模型的训练和推理速度,但性能明显下降;也可以采用一种二值化变体,就是用两个常量(C1和C2)来替代0-1两个值,阈值也可以修改;缺点:损失精度过多,并且在原创 2022-04-07 08:22:32 · 3028 阅读 · 1 评论 -
【模型压缩】(二)—— 剪枝
一、概述剪枝(Pruning)的一些概念:当提及神经网络的"参数"时,大多数情况指的是网络的学习型参数,也就是权重矩阵weights和偏置bias;现代网络的参数量大概在百万至数十亿之间,因此实际上在一个网络中也并不是所有权值都是重要的,剪枝的作用就是削减那些不重要权重矩阵的一种直接压缩模型的方式;对于一个已经训练好的模型,切断或删除某些连接,同时保证不对精度造成重大影响,这样得到的模型就是一个参数较少的剪枝模型;从生物学的角度来说,人类在成长过程中突触会减少,但思维能力反而更强了;和drop原创 2022-04-01 09:35:04 · 15326 阅读 · 75 评论 -
【模型压缩】(一)开篇及轻量模型介绍
一、开篇 随着神经网络的发展,transformers和高级卷积网络架构给视觉和预研领域任务带来提升的同时,模型的规模及计算量也越来越大; 虽然模型的体积增大往往能带来更好的效果,但在实际场景的应用性几乎为0,这也是学术界和工业界存在的一个最大差异,模型的落地往往要考虑的方面有很多,并不只是单纯看预测的效果;模型变大引发的一些问题:更长训练时间;更长的推断时间;更多的内存占用;模型压缩的目的:以一种对性能影响最小,最有效的结构或格式表示模型,从而减轻大模型的原创 2022-03-05 08:40:00 · 1600 阅读 · 0 评论 -
Pytorch模型转成ONNX和MNN
Pytorch模型转成ONNX和MNN准备工作一、MNN安装简介:MNN是一个轻量级的神经网络推理引擎,在端侧加载深度神经网络进行推理预测。由阿里巴巴团队研发并开源,目前在一些场景下性能和NCNN相同甚至超越;下载MNNgit clone https://github.com/alibaba/MNN编译安装MNNcd /path/to/MNN./schema/generate.sh./tools/script/get_model.sh # 可选,模型仅demo工程需要mkdir原创 2021-08-31 15:30:09 · 1872 阅读 · 0 评论 -
算法部署——量化概述
算法部署——量化概述一、量化原理1、数据类型范围2、原理详解实现流程:在每层计算时需要先将feature map量化到INT8,然后将weights量化到INT8,最后卷积计算得到INT32的输出值,输出值乘以scale(float)值反量化到float,然后加上浮点格式的bias作为下一层的输入;scale值的计算使用KL散度判断量化的好坏;Scale = T / 127;KL散度计算公式:二、NCNN安装$ git clone https://github.com/Ten原创 2021-08-30 10:24:23 · 1125 阅读 · 0 评论 -
算法部署——CMake
算法部署——CMake一、C++程序开发流程1、算法设计(编写C++代码)2、源程序编辑(宏定义等编译筛查)3、汇编(生成目标文件)4、链接(静态链接、动态链接)5、运行调试二、CMake详解make和cmake关系图如下图所示:1、Make说明: Make工具可以看作一个智能的批处理工具,本身并没有编译和链接的功能,而是用类似于批处理的方式——通过调用makefile文件中用户指定的命令来进行编译和链接的;2、CMake说明: CMake是一个跨平台的安装(编译工具),原创 2021-08-28 17:46:54 · 803 阅读 · 0 评论