首页
学习
活动
专区
工具
TVP
发布

GiantPandaCV

专栏作者
701
文章
870267
阅读量
96
订阅数
深度学习编译器之Layerout Transform优化
继续深度学习编译器的优化工作解读,本篇文章要介绍的是OneFlow系统中如何基于MLIR实现Layerout Transform。在2D卷积神经网络中,除了NCHW数据格式之外一般还存在NHWC的数据格式,对于卷积操作来说使用NHWC格式进行计算可能会获得更好的性能。但深度学习网络的训练一般来说是采用NCHW进行的,我们一般只有在推理时才做NCHW到NHWC的Layerout Transform。这里存在两个问题:首先对于一个算子比如Conv2D,它以NCHW方式训练时保存的权重格式是[out_channels, in_channels, *kernel_size],但是要以NHWC格式进行推理时我们需要对权重的格式进行转换;然后对于没有权重的算子来说,我们也需要尽量的让算子支持NHWC的运算,来减少因为卷积算子前后插入的Transpose操作带来的额外开销。举个例子,假设有如下的一个小网络 x->conv->relu->conv->relu->out,如果我们要以NHWC格式执行那么我们除了对2个卷积的权重进行改动之外,我们还需要在conv前后插入transpose来修改输入到conv算子的数据格式,也就是x->transpose(0, 2, 3, 1)->conv->transpose(0, 3, 1, 2) -> relu -> transpose(0, 2, 3, 1)->conv->transpose(0, 3, 1, 2) -> relu->out。然后细心的读者可以发现,实际上这里存在很多冗余的Transpose,因为ReLU是支持以NHWC格式进行运算的,那么这个网络可以化简为x->transpose(0, 2, 3, 1)->conv->relu->conv->relu->transpose(0, 3, 1, 2)->out。这样可以减少一半的Transpose Op开销。
BBuf
2023-08-25
2450
深度学习编译器之公共子表达式消除和死代码消除实现
【省流】上次介绍了深度学习编译器之Layerout Transform优化 ,在这篇文章中提到还会介绍常量折叠优化Pass的实现,但在介绍常量折叠Pass之前我想再介绍一个类似的优化方法也就是公共子表达式消除实现(CSE)。仍然是以OneFlow中基于MLIR进行实现的CSE Pass为例子来讲解。在解析代码实现的过程中,我发现基于MLIR来做公共子表达式消除的时候还顺带做了死代码消除的功能。另外,在考虑公共子表达式消除的时候需要保证两个重复的操作处于同一个基本块中以及两个重复操作之间没有其它具有副作用的操作才可以消除。在OneFlow的实现中只是对OneFlow的UserOp的特殊属性即OpName和SymbolID进行了擦除,用一个魔法属性来代替,这是因为这两个属性不应该去影响公共子表达式的消除。这个优化还是比较有用的,在OneFlow的Stable Diffusion优化中发挥了不小的作用。
BBuf
2023-08-22
3700
【BBuf 的CUDA笔记】一,解析OneFlow Element-Wise 算子实现
由于CUDA水平太菜,所以一直没写过这方面的笔记。现在日常的工作中已经不能离开写CUDA代码,所以准备学习ZZK随缘做一做CUDA的笔记记录一下学习到的知识和技巧。这篇文章记录的是阅读OneFlow的Element-Wise系列CUDA算子实现方案学习到的技巧,希望可以帮助到一起入门CUDA的小伙伴们。Elemet-Wise算子指的是针对输入Tensor进行逐元素操作,比如ReLU就是针对输入Tensor的每个值进行判断是否大于0,大于0的话输出就是输入否则就是0。用CUDA来表达最简单的写法就是:
BBuf
2022-12-29
1.1K0
基于整合IMU运动动力学的无监督单目深度估计
虽然近年来无监督单目深度学习取得了很大的进展,但仍然存在一些基本问题。首先,目前的方法存在尺度模糊性问题,因为反推过程对于深度和平移来说相当于任意尺度因子。其次,光度误差对照明变化和移动物体敏感。此外,尽管在无监督学习框架下已经为光度误差图引入了不确定性,但自我运动的不确定性度量仍然是重要的。在2022 ECCV论文"Towards Scale-Aware, Robust, and Generalizable Unsupervised Monocular Depth Estimation by Integrating IMU Motion Dynamics",作者提出了一种感知框架,通过集成视觉和IMU来进行真实尺度估计,算法已经开源。
BBuf
2022-09-28
7600
用于ARM Cortex-M系列的芯片的神经网络推理库CMSIS-NN详解
论文题目:《CMSIS-NN: Effificient Neural Network Kernels for Arm Cortex-M CPUs》, 2018年
BBuf
2022-09-28
2K0
时间序列预测paper、应用汇总
Optiver是全球顶尖的量化交易公司。10个月前,Optiver在Kaggle上面办的一场预测股票市场波动率的比赛。
BBuf
2022-09-28
2500
Instance-Conditioned GAN
作者:Arantxa Casanova, Marlene Careil, Jakob Verbeek, Michal Drozdzal, Adriana Romero Soriano
BBuf
2022-09-28
8330
YOLOv7-Pose尝鲜,基于YOLOv7的关键点模型测评
目前人体姿态估计总体分为Top-down和Bottom-up两种,与目标检测不同,无论是基于热力图或是基于检测器处理的关键点检测算法,都较为依赖计算资源,推理耗时略长,今年出现了以YOLO为基线的关键点检测器。玩过目标检测的童鞋都知道YOLO以及各种变种目前算是工业落地较多的一类检测器,其简单的设计思想,长期活跃的社区生态,使其始终占据着较高的话题度。
BBuf
2022-09-28
2.3K0
CVPR2022:计算机视觉中长尾数据平衡对比学习
现实中的数据通常存在长尾分布,其中一些类别占据数据集的大部分,而大多数稀有样本包含的数量有限,使用交叉熵的分类模型难以很好的分类尾部数据。在这篇论文中,作者专注不平衡数据的表示学习。通过作者的理论分析,发现对于长尾数据,它无法形成理想的几何结构(在下文中解释该结构)。为了纠正 SCL(Supervised Contrastive Learning,有监督对比学习) 的优化行为并进一步提高长尾视觉识别的性能,作者提出了一种新的BCL(Balanced Contrastive Learning,平衡对比学习)损失。
BBuf
2022-09-28
1.9K0
YOLOV1 - V4 第二次阅读
V2:基于论文发布时间段其他学者的一些学术成果和作者自己的思考和实验进行yolo的改进
BBuf
2022-09-28
2180
HugeCTR源码简单走读
这段时间除了开发算子之外,还在做一些推荐系统相关的工作,这期间主要看的是HugeCTR的代码,其性能优异,系统不复杂,代码结构较扁平,整体还是比较清晰。在这段时间看源码的过程中也算是对HugeCTR有一点了解,这篇博客主要梳理下HugeCTR代码的结构,以及他在MLPERF中做的一些优化。
BBuf
2022-05-27
1.5K0
MLSys 15-884: Course Introduction
本来是在找一些有趣的关于mlsys的paper,突然发现,相比我刚刚读Ph.D.那会,这个domain变得越来越火了,包括MLSys2022,OSDI2022好多这方面的paper,目测9月开WLK前,我都有大把的时间来搞这些东西,所以,这次肯定是能够把坑填完的。同时也发现爱丁堡的麦络老师也写了一本不错的关于mlsys的书籍:
BBuf
2022-05-27
7370
Torch MLIR公开会议翻译视频-上
由于最近写文章的idea比较有限,我们会陆续翻译和制作一些编译器领域的public meeting视频(主要是关于TVM和MLIR的)。帮助大家更好的入门和了解深度学习编译器,以及看看国外的学者和工程师们在深度学习编译器领域做了哪些有趣的事情。
BBuf
2022-05-25
7050
CUDA WarpReduce 学习笔记
之前看我司的 如何实现一个高效的Softmax CUDA kernel?多少还是有些细节没有理解,恰好最近要做一个类似的 Reduce+Scale Kernel,原理机制还是比较相似的,所以翻出来重新理解一下。
BBuf
2022-05-25
6910
2022年新版YOLO解读(PP-YOLOE)
【GiantPandaCV导语】 这是2022年第一个关于YOLO的改版,该版本由百度提出,称之为YOLOE,是目前各项指标sota的工业目检测器,性能sota且部署相对友好。
BBuf
2022-04-06
3.4K0
【论文解读】基于MLIR生成矩阵乘法的高性能GPU代码,性能持平cuBLAS
本文是对 https://arxiv.org/abs/2108.13191 这篇论文进行解读,学习一下如何基于MLIR编译器基础设施生成高效的GPU代码。本文的阅读的先后顺序分别为:
BBuf
2022-04-06
2.3K0
浅谈NVIDIA H100白皮书
【GiantPandaCV导语】忙完手头工作,就赶紧来过了一遍 H100 白皮书。下面我就以框架开发和炼丹师的角度谈谈 H100 的一些新特性,如有说错的地方还望指正。
BBuf
2022-04-06
1.8K0
Tokens-to-token ViT: 对token做编码的纯transformer ViT,T2T算引入了CNN了吗?
T2T-ViT是纯transformer的形式,先对原始数据做了token编码后,再堆叠Deep-narrow网络结构的transformer模块,实际上T2T也引入了CNN。
BBuf
2022-04-06
5810
Kaggle Tensorflow StarFish挑战赛金牌分享
在去年,陆陆续续和队友@willer共同参加了一些计算机视觉竞赛(图像检测、分类竞赛),取得了一些不错的成绩。在年底,偶然得知Kaggle上有一个热度很高的还行检测的比赛,于是简单参考了一下。今天榜单揭晓,非常幸运,在比赛切换到了私榜后,分数大幅度提升,从初赛Public Leaderboard的1100多名直接上分到了Top10,很幸运的荣获了人生中的第一个Kaggle Gold。
BBuf
2022-04-06
6220
ViTAE:引入归纳偏置,浅层用CNN,深层用self-attention
引入归纳偏置,即局部性和尺度不变性,浅层用CNN编码token,深层用多头注意力机制做transformer的模块堆叠,是一次CNN和transformer结合探索,也是一个对送进多头注意力机制的token编码的探索,送进更信息更加聚合的token,来降低模型大小,提高分类任务的效果。
BBuf
2022-02-11
1K0
点击加载更多
社区活动
RAG七天入门训练营
鹅厂大牛手把手带你上手实战
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档