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

GiantPandaCV

专栏作者
701
文章
868807
阅读量
96
订阅数
【BBuf的CUDA笔记】十一,Linear Attention的cuda kernel实现补档(文末送书
填一下 【BBuf的CUDA笔记】十,Linear Attention的cuda kernel实现解析 留下的坑,阅读本文之前需要先阅读上面这篇文章。这里就不重复介绍背景知识了,只需要知道现在要计算的目标是:
BBuf
2024-01-05
890
【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
一文理解 PyTorch 中的 SyncBatchNorm
我们知道在分布式数据并行多卡训练的时候,BatchNorm 的计算过程(统计均值和方差)在进程之间是独立的,也就是每个进程只能看到本地 GlobalBatchSize / NumGpu 大小的数据。
BBuf
2022-09-28
2.3K0
OSDI 2022 Roller 论文解读
今天来阅读一下最近 OSDI 放出的微软的 Roller 这篇论文,题目为:《Roller: Fast and Efficient Tensor Compilation for Deep Learning》
BBuf
2022-09-28
1.2K0
CUDA WarpReduce 学习笔记
之前看我司的 如何实现一个高效的Softmax CUDA kernel?多少还是有些细节没有理解,恰好最近要做一个类似的 Reduce+Scale Kernel,原理机制还是比较相似的,所以翻出来重新理解一下。
BBuf
2022-05-25
6890
【论文解读】基于MLIR生成矩阵乘法的高性能GPU代码,性能持平cuBLAS
本文是对 https://arxiv.org/abs/2108.13191 这篇论文进行解读,学习一下如何基于MLIR编译器基础设施生成高效的GPU代码。本文的阅读的先后顺序分别为:
BBuf
2022-04-06
2.3K0
如何实现比PyTorch快6倍的Permute/Transpose算子?
无论是在统治NLP届的Transformer,还是最近视觉领域的新秀Vision Transformer,我们都能在模型中看到Transpose/Permute算子的身影,特别是在多头注意力机制(Multi-Head Attention)中,需要该算子来改变数据维度排布。
BBuf
2021-11-12
1.1K0
Oneflow 框架添加算子实践 ---- expand 和 repeat
expand 算子的功能简单来说就是,能够实现将输入张量的沿着大小为 1 的维度进行复制,至于复制多少份由第二个参数决定(下面将该参数称为 expand_size)。
BBuf
2021-10-20
8620
以OneFlow为例梳理深度学习框架的那些插值方法
这篇文章基于自己为OneFlow框架开发interpolate这个Op总结而来,OneFlow的interpolate Op 和 Pytorch的功能一致,都是用来实现插值上采样或者下采样的。在实现这个Op的时候还给Pytorch修复了一个bug并合并到了主仓库,见:https://github.com/pytorch/pytorch/commit/6ab3a210983b7eee417e7cd92a8ad2677065e470。因此OneFlow框架中的interpolate算子和Pytorch中的interpolate算子的功能是完全等价的。这篇文章就以OneFlow中这个算子的实现为例来盘点一下深度学习框架中的那些插值算法。
BBuf
2021-09-14
1.4K0
TVM源语-Compute篇
【GiantPandaCV导语】使用和魔改TVM也有一段时间了,其实很多场景下,都是拿到pytorch的model,然后转成torchscript,通过relay.frontend.from_pytorch导入,然后一步一步在NVIDIA GPU上generate出网络中每个op对应的cuda code。但是,当我们的场景不在局限在神经网络的时候,比如一些由tensor构成的密集计算,就得需要通过tvm的 primitives,也即DSL来定义算法,然后通过AutoTVM或者Ansor来解决问题,当然如果要使用Ansor的话,你只需要定义好algorithm是什么样的,schedule的部分会帮你自动做,当然,如果你想得到一个custom-level的schedule,你不能完全指望Ansor能给你带来所有,所以关于tvm primitives的学习还是非常重要的。 TVM的设计思想是将“compute”和“schedule”进行decouple,那么这一片文章就将所有compute有关的primitives进行总结,下一篇将对schedule有关的primitives进行总结。
BBuf
2021-09-14
2.3K0
三个优秀的语义分割框架 PyTorch实现
本文基于动手深度学习项目讲解了FCN进行自然图像语义分割的流程,并对U-Net和Deeplab网络进行了实验,在Github和谷歌网盘上开源了代码和预训练模型,训练和预测的脚本已经做好封装,读者可以自行下载使用。
BBuf
2021-09-14
2.8K0
Involution再思考:三大任务涨点明显
【GiantPandaCV导语】在被Transformer结构刷榜之前,CNN一直都是CV任务的标配。卷积有两个基本性质,分别是空间不变性 (spatial-agnostic)和通道特异性 (channel-specific)。空间不变性使得卷积能够在所有位置共享参数,并充分利用视觉特征的“平移等变性”。通道特异性使得卷积能够充分建模通道之间的关系,提高模型的学习能力。
BBuf
2021-07-23
6330
【神经网络搜索】Once for all
【GiantPandaCV导语】Once for all是韩松组非常有影响力的工作,其最大的优点是解耦了训练和搜索过程,可以直接从超网中采样出满足一定资源限制的子网,而不需要重新训练。该工作被ICLR20接收。
BBuf
2021-07-01
3840
我卷我自己——cvpr2021:Involution
本文重新回顾了常规卷积的设计,其具有两个重要性质,一个是空间无关性,比如3x3大小的卷积核是以滑窗的形式,滑过特征图每一个像素(即我们所说的参数共享)。另外一个是频域特殊性,体现在卷积核在每个通道上的权重是不同的。
BBuf
2021-03-25
1.8K1
图解神秘的NC4HW4
【GiantPandaCV导语】以卷积和im2col+gemm实现卷积操作举例,来图解深度学习中Tensor的NC4HW4(其实应该是N{C/4+C%4>0?1:0}HW4),写成NC4HW4方便阅读
BBuf
2020-11-17
2.1K0
EffNet: 继MobileNet和ShuffleNet之后的高效网络结构
与MobileNet、ShuffleNet等网络的目的类似,EffNet目标也是让模型能够在嵌入式或者移动端硬件设备上高效地运行。
BBuf
2020-06-24
2K0
移动端SOTA模型 MixNet
Depthwise卷积在设计更轻量高效的网络中经常被使用,但人们通常都忽略了Depthwise卷积中的卷积核大小(通常都是使用3x3)。在这篇工作中,我们研究了不同大小卷积核对网络性能的影响,并观察到不同大小卷积核相互组合,能得到更高的准确性。基于这个思想,我们得到了一个以不同大小卷积核组合成Depthwise卷积模块,再AutoML的搜索下,提出了一个更高效的网络Mixnet,超越大部分移动端网络如Mobilenetv1, v2, shufflenet等等。
BBuf
2020-06-02
7570
深入理解神经网络中的反(转置)卷积
本文主要是把之前在知乎上的回答[1,2]重新整理了一下并且加了一些新的内容。对于像素级的任务,在decoder部分都会用一些常规操作去逐步恢复feature map的空间大小,而常用的模块有反卷积[3,5]、上采样+卷积和subpixel[4]操作等等。
BBuf
2020-04-15
1.6K0
【综述】神经网络中不同种类的卷积层
在深度学习中,卷积的目的是从输入中提取有用的特征。在图像处理中,卷积滤波器的选择范围非常广,每种类型的滤波器(比如Sobel算子、Canny算子等)都有助于从输入图像中提取不同的方面或者特征,比如水平、垂直、边缘或对角线等特征。
BBuf
2020-03-19
1.1K0
目标检测和感受野的总结和想法
经典的目标检测如Faster R-CNN, YOLOv3等都用到了Anchor, 怎么设计Anchor每个目标检测方法各不相同。Faster R-CNN中的Anchor有三种形状,三种长宽比,比如形状有[128, 256, 512]三个,长宽比有[1:1, 1:2, 2:1]三种,这样组合就是9个anchor。YOLOv3中的Anchor是通过K-Means聚类得到的。这些基于anchor的方法的目的是学习一个从Anchor到GT Box的转换函数,下边我们了解一下理论感受野、Anchor、实际感受野三者之间的关系。
BBuf
2020-02-24
1K0
点击加载更多
社区活动
RAG七天入门训练营
鹅厂大牛手把手带你上手实战,赢鹅厂证书、公仔好礼!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档