- 博客(42)
- 资源 (2)
- 问答 (1)
- 收藏
- 关注
原创 [Onnx简化库深度剖析] OnnxSimplifier和OnnxOptimizer解读-(4)
结束了,已经搞定了onnx官方的简化库的基本细节了。后面再续其他有趣的东东。
2024-01-12 16:31:48
1739
2
原创 [Onnx简化库深度剖析] OnnxSimplifier和OnnxOptimizer解读-(3)
补充说明Pass。基本上目前所有的Pass已经被罗列出来了,后续会用实际的效果去加深大家的印象。
2024-01-12 16:00:28
1249
原创 [Onnx简化库深度剖析] OnnxSimplifier和OnnxOptimizer解读-(2)
上述的Pass只是其中的一小部分,还有将近二十来个Pass没有说明清楚,因此这个留到后续的文章继续说明。
2023-12-18 16:27:25
355
原创 [Onnx简化库深度剖析] OnnxSimplifier和OnnxOptimizer解读-(1)
这次主要是介绍了OnnxSimplifier简化原理,重点介绍了FoldConstant功能和FixedPointFn迭代优化函数,这是该简化包的核心部分了。但是对于其他的OptimizeFixed,也就是OnnxOptimizer函数库的内部简化细节却没有具体的说明。后续将会具体介绍OnnxOptimizer的模型优化细节。
2023-12-18 16:04:33
903
原创 Disasm 示例程序改写和适配
最近在看这本书籍,在第一张的简介中我们可以看到ProViem这个反汇编开源工具的内容,内部介绍了反汇编的基本原理,我们可以看到详细的开源代码。但是从网址下载后的代码无法直接使用VS2019或者是GNUC工具进行编译构建
2023-11-23 17:44:32
263
原创 [PTQ]均匀量化和非均匀量化
下图表示三种量化方式的x-fakequant_y的映射关系。数据分布在[0.0, 1.0]之间,全覆盖。python代码实现如下所示。python代码实现如下所示。python代码实现如下所示。
2023-11-23 17:40:48
646
1
原创 【PTQ】Cross-Layer Equalization跨层均衡-证明和实践详细解读
PTQ、DFQ、Cross-Layer Equalization跨层均衡-原理解读和证明以及实验
2023-11-14 16:34:51
631
2
原创 [深度学习主流框架解析一] Onnx
Onnx同样也是采用了Protobuf协议进行模型文件的整体构建,与Caffe相比,Onnx使用了多proto文件描述模型。因此,解析Onnx模型文件需要了解多个proto文件之间的关联。proto文件之间的依赖关系如下所示:fill:#333;color:#333;color:#333;fill:none;
2022-10-17 16:48:28
933
1
原创 [深度学习主流框架解析一] Caffe
重点解析caffe.proto模型文件中的内容,整体的模型文件可见下图。模型结构相关特性:特点总结:运用到的数学原理是《求导的链式法则》,相关表达式如下所示:δyδz=δyδx∗δxδz\frac{\delta y}{\delta z} = \frac{\delta y}{\delta x} * \frac{\delta x}{\delta z}δzδy=δxδy∗δzδx下面以caffe中的sigmoid算子进行说明caffe内部的反向传播过程是如何的。sigmoid是激活函数,具体的数学公式如下所
2022-10-14 17:05:27
1779
原创 【网络通信三】研华网关Modbus服务设置
最近在使用研华网关进行Modbus的通信试验,试图跟之前研究的Modbus通信库进行相互通信。企图互通两者的通信,熟悉AdvantechEdgeLinkStudio的使用等目的。ModbusTcpSocket阻塞和非阻塞IPv4和IPv6区别使用到的相关软件和工具。...
2022-07-28 17:05:03
4394
原创 Halide::Generator生成器使用说明
本次的主要工作就是尝试了HalideGenerator生成器去进行核函数生成以及如何使用不同后端的试验。多计算图调度gpu约束输入输出定义信息自动调度操作生成器调用示例。
2022-07-22 20:00:00
601
7
原创 【网络通信二】TCP参考模型
最近在搞网络编程方面的工作,先前有去了解socket通信,进行了示例的学习。所以又有幸去重温一下网络模型。以现在的知识储备去进行重新学习,发现比之前的理解好了不少。至少比那个差不多要挂科的从前的自己强了不少。哈哈哈,我们直接进入正题。如下所示表示的是TCP/IP模型中如何封装一个数据,也就是报文的产生的过程是如何的。网络模型的基本的模型是OSI参考模型,其被分成7层。...
2022-07-18 19:16:35
516
原创 为Halide安装opencl支持
打开TargetOpenCL开关,我们可以看到使用opencl进行推理的时候,计算时调用的openclapi是如何的。展示的测速结果如下所示,这里可以看出来,虽然都是使用了cpu进行计算,但是还是intel-cpu-opencl速度更快些。compile_jit进行处理操作。查看主机平台支持的设备平台。设置kernel参数。...
2022-07-16 15:13:43
467
1
原创 【网络通信一】SOCKET套接字
1、Socket的整体使用流程下图表示的是用socket接口实现了典型的CS事务的具体调用流程。补充知识:目前本人亲自测验大小端的代码和结果枚举如下硬件操作系统大小端浪潮盒子ARMv8 Processor rev 0 (v8l)Linux version 4.9.140-tegra小端2080服务器Intel® Xeon® Silver 4110 CPUUbuntu 7.5.0-3ubuntu1~18.04小端本地电脑Intel® Core™ i7-9700
2022-07-14 19:00:00
391
原创 你或许也想拥有专属于自己的AI模型文件格式(推理部署篇)-(9)
1、前言本次的进展内容:本次文章的主要内容:3、InferenceDebugByCpu调试推理接口3.1、调用流程具体的调用流程示例如下所示:3.2、实现细节具体的调用流程示例如下所示:4、cpu_run调试推理部分如何从cl核函数转换4.1、关于opencl的cl核函数说明cl核函数内部遵循了C99编程语言标准,内部的代码跟C语言一致;cl核函数内部的逻辑只代表一个工作项的所有工作,具体的循环是靠外部调用clEnqueueNDRangeKernel函数时设置的globalWorkSi
2022-07-08 16:17:19
417
原创 你或许也想拥有专属于自己的AI模型文件格式(推理部署篇)-(8)
《你或许也想拥有专属于自己的AI模型文件格式》这个系列,上一次的文章更新是2022-03-05,距今已经4个月之久了。主要是这段时间有其他的事情在忙,期间也在断断续续地在完善该推理框架的。而让我思绪卡死的地方就是整网的推理时事件依赖问题,这个问题主要是因为OpenCL的clEnqueueNDRangeKernel这个核函数推理函数的局限性问题(正文仔细说明)。本次的进展内容:本次文章的主要内容:目前的工程整体结构:2、有向图重排网络层2.1、重排的原因和目的模型的网络层顺序是乱序的:我们自定义的模型
2022-07-07 17:44:20
565
原创 Intel-Cpu-OpenCL-Runtime-SDK的使用和示例源码编译
2. Intel-Cpu-OpenCL-Runtime的SDK安装确认安装的系统环境,是Linux还是Windows下载对应的SDK安装程序,点击此处的Intel-Cpu-OpenCL-SDK官网下载下载之后可以一键运行安装程序3. 编译指令说明3.1. 运行结果说明输入图片如下所示:输出图片如下所示:3.2. cpp工程的处理流程如下所示:......
2022-06-14 20:30:00
2031
1
原创 Halide示例学习五
Halide示例学习四函数重定义操作RDom下标使用使用RDom计算直方图调度函数更新多阶段重定义操作使用归化函数进行模糊操作内置的归化函数sum使用归约函数的一个复杂例子函数重定义操作#include "Halide.h"#include <stdio.h>using namespace Halide;int main(int argc, char **argv) { Var x("x"), y("y"); Buffer<uint8_t> input
2022-05-04 10:25:09
342
原创 Halide示例学习四
Halide示例学习四多阶段计算图多计算图组合示例compute_at使用方法store_root配合compute_at使用方法tile配合compute_at使用方法compute_at和store_at以及之前的混合技使用方法多阶段计算图#include "Halide.h"#include <stdio.h>using namespace Halide;int main(int argc, char **argv) { Var x("x"), y("y");
2022-05-02 16:42:43
264
原创 halide调度过程可视化工具
halide调度过程可视化工具简介代码实现调用流程简介该工具主要是为了进行能够对Halide使用了trace之后,打印出来的计算信息进行动态图可视化,如此可以更好地理解Halide的调度过程代码实现下面部分显示了所有的代码实现import cv2import numpy as npimport imageio# 显示Halide计算过程的图像可视化def readtxt(filename:str): f = open(filename) line = f.readlin
2022-05-01 18:00:00
272
原创 SRPC初步使用和说明
SRPC初步使用和说明一. RPC介绍和SRPC说明RPC是一种概念,表示远程过程调用,就是指能够让用户在本地调用远程的方法,调用透明,我们不需要知道调用的方法部署在什么地方。SRPC目前是搜狗业务线上使用的企业级RPC系统,是一种RPC框架,具有以下的相关优势:底层基于Sogou C++ Workflow,兼具:高性能、低延迟、轻量级低开发和接入门槛完美兼容workflow的串并联任务流对于已有protobuf/thrift描述文件的项目,可以做到一键迁移支持Linux / MacO
2022-04-27 20:02:14
2684
1
原创 Halide示例学习三
Halide示例学习三改变维度遍历起点多计算图组合示例改变维度遍历起点#include "Halide.h"#include <stdio.h>using namespace Halide;int main(int argc, char **argv) { Func gradient("gradient"); Var x("x"), y("y"); gradient(x, y) = x + y; gradient.trace_stores();
2022-04-26 17:53:10
193
原创 Halide示例学习一
Halide示例学习一示例学习基本变量和概念操控图片操作debug操作1示例学习基本变量和概念// 使用Halide,我们只需要包含Halide.h这个头文件就可以了#include "Halide.h"#include <stdio.h>int main(int argc, char **argv) { // Halide::Func代表了一个计算图,代表了每一个像素值需要进行的计算操作 Halide::Func gradient; // Halide::
2022-04-19 22:03:13
559
原创 Unix进程的学习
Unix进程的学习一、初步了解父子进程的特性,特别是fork()函数的使用:调用一次,返回两次并发执行相同但是独立的地址空间共享文件 示例程序如下所示:#include "csapp.h"int main(int argc, char** argv){ pid_t pid; int x = 1; pid = Fork(); if (pid == 0){ /*子进程 */ printf("child : x = %d\n"
2022-03-15 19:17:46
703
原创 Halide源码编译
Halide源码编译Halide为何要源码编译?源码编译LLVM库源码编译Halide测试Halide是否编译成功生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入Halide Halide 算是一种编程模式,主要用于在现代机器上来进行高性能的图像和数组处理。其寄生在C++编程语言中,作为DSL编程语言(特定域语言)来实现高
2022-03-10 19:57:38
1627
原创 你或许也想拥有专属于自己的AI模型文件格式(推理部署篇)-(7)
距离上次的文章,已经有一个月之久了。要是再不继续推进,那么我17个粉丝又要催更了(纯属本人瞎说,实际情况是没人催更)。今天就少扯皮了,直接开淦吧!上次的文章中,说明了如何在C++代码中解析我们的专AI模模型文件格式,大概的思路无非和构建模型的时候是反着进行的。因为这份模型文件格式是完全由flatbuffers进行解析的,因此,解析的过程是一场清晰明了的。而之所以解析模型文件,主要是这样我们就能够实现专AI模的跨平台传送,构建好的模型能够无差异地在各...
2022-03-05 20:59:06
2387
原创 你或许也想拥有专属于自己的AI模型文件格式(推理部署篇)-(6)
如果有新的观众,如有疑惑,请从《专ai模》这个专栏从头开始阅读。特别是想要彻底搞清楚深度学习中模型的起源,以及如何一步一步构建自定义模型格式的观众来说,除了可视化篇,前面的三章必须要仔细阅读。而为什么我又有雅致来开启《推理部署篇》呢?主要原因是,目前个人野心有点大,想要从零构建一整套关于推理部署的工具链吧。也就是向着推理引擎的方向努力吧。特别是自从上次结束了《可视化篇》,总感觉意犹未尽。因此,全新的篇章开启了,该篇章的文章数可能会控制在10篇以下吧。不...
2022-02-15 20:24:00
921
原创 The ROS_DOMAIN_ID,即ROS的领域标识的含义
最近心血来潮尝试了一下ROS 2,想着看下ROS 2是如何仿真,以及想要看下ROS 2实际应用的可行性。关于ROS,本人最近才开始了解,之前少有接触。目前我是打算当作仿真工具来使用的,关于其实际运用落地,目前还是比较担心其性能、延时的问题(毕竟在网络上听说过ROS对于时间延时的问题优化不够)。但是仔细想来,应该也没有哪个产品会完全使用ROS吧,毕竟不是所有的Robot都是拥有多个处理单元的(应该考虑到多线程能力弱的处理单元),因此从实际的方面考虑,我目前是把这个ROS当作...
2022-01-03 17:40:59
1804
原创 你或许也想拥有专属于自己的AI模型文件格式(可视化篇)-(5)
太久才来写这个专栏的第五篇,不是我鸽了,是想要测试我那两位数粉丝有没有催更的可能,结果是显而易见的——没有!好吧,其实是可视化篇比较难,花费了比较多的时间去编写代码适配专ai模,尤其是代码调试难度高,导致花费了很多时间精力去配置调试环境,熟悉vscode对于javascript的调试。本篇章将会讲述如何可视化我们的专属于自己的AI模型文件格式,特别是如何适配netron可视化工具。所以,对于可视化篇而言,或者就止步在这篇章了。这篇将会带你一起来可视化专ai模。 那么,就...
2021-12-24 18:15:00
679
7
原创 你或许也想拥有专属于自己的AI模型文件格式-(3)
如果读者没有阅读过前两篇,或者想要再次回顾,以下是对应的链接:你或许也想拥有专属于自己的AI模型文件格式-(1)https://blog.csdn.net/Pengcode/article/details/121754272你或许也想拥有专属于自己的AI模型文件格式-(2)https://blog.csdn.net/Pengcode/article/details/121776674 前两篇文章,讲述了制作专属于自己的AI模型文件格式的初衷,写下了我们的需求,同时我们制定了...
2021-12-10 18:15:00
586
原创 你或许也想拥有专属于自己的AI模型文件格式-(2)
紧接着上次的工作,想要回顾或者查看上次内容可以点击以下的链接,链接如下所示:你或许也想拥有专属于自己的AI模型文件格式-(1)https://blog.csdn.net/Pengcode/article/details/121754272?spm=1001.2014.3001.5502 这次主要的内容是构建我们的专ai模的灵魂,也就是信息组成描述编写。通俗来说,就是定义一个数据协议,这些数据协议中包含了模型数据结构,这些数据结构是我们搭建整个模型的积木,或者说是包含了整个模...
2021-12-08 18:15:00
689
原创 你或许也想拥有专属于自己的AI模型文件格式-(1)
2021年前后,大量的推理框架和训练框架层出不穷;训练框架有较新的Pytorch、TensorFlow,和老的Caffe、Darknet等;推理框架中有各种国产的、开源的,特别是边缘设备上的框架Ncnn、Tengine等;另外,国产的CANN更是兼顾了训练和推理两方面。 但是,以上所有的框架基本是拥有一种专属于自己的模型文件。比如caffe由.prototxt和.caffemodel文件组成,darknet由.cfg和.weight文件组成,pytorch由.pt组成,te...
2021-12-07 08:00:00
928
原创 离散数学-趣味题之一
这周接触了离散数学的第一章,也就是基础章节,主要是集合论、递推式、组合排列数方面的基础知识。这里含有关于递推式的一道题目。 最本来的解法是采用了递推式进行求解,但是我想到了一种组合排列数的解法。一、原始题目: 使用多米诺骨牌,即1x2的小方格,覆盖2 x n的方格棋盘,有多少种不同的方式?二、递推关系进行求解: 从题目而言,我们发现的递推关系是:当为n时,只考虑最右边的竖着的两个方格,如果用一个竖立的多米诺骨牌进行填充,那么此时的...
2021-08-27 20:19:32
1226
原创 又要新的开始了
想起来 ,距离自己上次写博客过去了一年了。中间经历了很多事情。 毕业了,正式开始工作了。想着自己大四那段时间基本是在外实习,基本上没有时间在学校大把时间啃书,学习新知识。但是就是在那种情况下,我也时不时更新自己的博客,那时候还整天幻想着能够找到一份本专业的工作,非线性控制、优化算法等也会去涉猎。或许是因为那时候在找工作吧,那段时候确实是忐忑不安,却也是刺激向上的。 其实毕业也没过多久,但是却有些许怀念了。过去了就过去了,没必要纠结。潇洒一些,不断前进吧。...
2021-08-21 13:38:58
80
1
原创 度量学习-LMNN-对论文的个人理解(立意简单分类方法)
度量学习简介:简单来讲,就是学习如何衡量不同样本之间的相似性。度量学习举例:对于样本x1,x2.度量学习的目的就是学习D(x1,x2).其中D函数有一下特点:这里的D函数输出结果可以看作是相似性的倒数,或者干脆叫做差异性。其中L就是我们要学习的参数,目前本人知道的D的模式就有1.神经网络(训练两个神经网络结构S1,S2;其输入分别是两个样本x1,x2;最终的输出是维度一致的y1,y2;训练的损失就是||y1-y2||,一个欧式距离损失,也就是二次损失),神经网络模式下,又分了两种情况:1.1
2020-10-13 16:11:13
1478
C++ 反汇编与逆向分析技术揭秘 01章 Disasm-Push工具
2023-11-21
LM(列文伯格-马夸尔特)方法的matlab实现代码
2020-08-04
Draw a phase diagram.rar
2020-08-04
关于mali-T860这款GPU的带宽问题
2022-01-14
TA创建的收藏夹 TA关注的收藏夹
TA关注的人