- 博客(1698)
- 资源 (2)
- 收藏
- 关注

原创 维护了一个微信公众号,分享论文,算法,比赛,生活,欢迎加入。
公众号名称: GiantPandaCV按照惯例,二维码:欢迎加入和我讨论深度学习,机器学习,ACM,Leetcode,工作生活等等。
2019-10-29 17:53:02
919

原创 CVPR && ICCV 2019 论文阅读
《Bounding Box Regression with Uncertainty for Accurate Object Detection》CVPR 2019:《精确目标检测的不确定边界框回归》论文解读地址:https://www.sohu.com/a/341292298_651893?spm=smpc.author.fd-d.16.1569831940423eL7mzGA《ACE: A...
2019-09-30 16:28:57
1555

原创 Leetcode 周赛记录
Leetcode第150场周赛时间:2019/8/18竞赛地址: https://leetcode-cn.com/contest/weekly-contest-150解决题目:4/4耗时: 1:05:04排名: 50+第一题,直接模拟。第二题,DFS遍历树,开一个数组,记录每一层的和。第三题,直接遍历,然后DFS计算和当前点满足条件的最小距离。第四题,观察一下肯定目标串是从出现过字符...
2019-08-18 12:00:00
1344

原创 OpenCV图像处理专栏一 | 盘点常见颜色空间互转
RGB2GRAY算法\quad首先是RGB2GRAY,也就是彩色图转灰度图的算法。RGB值和灰度的转换,实际上是人眼对于彩色的感觉到亮度感觉的转换,这是一个心理学问题,有一个公式:Grey = 0.299×\times×R + 0.587×\times×G + 0.114×\times×B。直接计算复杂度较高,考虑优化可以将小数转为整数,除法变为移位,乘法也变为移位,但是这种方法也会带来一定的...
2019-02-12 17:52:11
2615
3
原创 CUDA-MODE课程笔记 第9课: 归约(也对应PMPP的第10章)
这节课是对Redcutions的算法进行了介绍,之前我在【BBuf的CUDA笔记】三,reduce优化入门学习笔记这里也写过一个Reduce优化的笔记,CUDA-MODE的这个课程更入门和详细一些,Slides的后半部分存在一些适合我们学习的资料,特别是PyTorch的Reducitons.cuh是我们学习Reduce的宝藏。
2024-09-03 17:28:01
1209
原创 CUDA-MODE课程笔记 第8课: CUDA性能检查清单
这节课相当于对Lecture 1更系统的补充,重点介绍GPU kernel优化的一些实用技术和分析工具ncu。合并全局内存访问: 确保线程访问连续的内存位置,以最大限度地提高内存带宽利用率。最大化占用率: 优化kernel启动参数,以充分利用 GPU 的处理能力。理解内存与计算限制: 分析kernel特征以确定限制因素(内存带宽或计算能力),并应用适当的优化技术。最小化线程的分化: 避免导致warp内的线程采用不同执行路径的条件语句,从而导致性能下降。
2024-08-19 19:42:01
1477
原创 CUDA-MODE课程笔记 第7课: Quantization Cuda vs Triton
Lecture 7主要介绍了基于CUDA和Triton的量化技术在生成式AI模型中的应用。内容包括动态量化、仅权重量化(int8/int4)等不同量化方法的原理、实现和性能比较,以及Smoothquant、GPTQ等量化优化技术的简介。在动态量化和int8/int4 weight only量化实现讲解中,作者分析了Triton相对于CUDA在这些场景的优劣,比如对于int4 weight only 因此Triton本身的限制就不太适合来实现这个cuda kernel。
2024-08-19 17:26:36
1436
原创 CUDA-MODE课程笔记 第6课: 如何优化PyTorch中的优化器
这节课实际上就是宏观介绍了一下PyTorch的Optimizer是怎么通过CUDA kernel fuse优化的。我这里使用Claude-3-Opus-200k来总结一下这节课涉及到的要点。下面的内容由Claude-3-Opus-200k总结而成这堂课程的主要内容是介绍如何在PyTorch中优化优化器的性能。1.运行时间和内存使用之间的权衡。一般来说,提高速度往往需要更多的内存。但有时也会受到硬件或系统的限制。
2024-08-17 22:30:10
927
原创 CUDA-MODE 第四课: 计算和内存基础(基于PMPP 书的第4-5章)
我的课程笔记,欢迎关注:https://github.com/BBuf/how-to-optim-algorithm-in-cuda/tree/master/cuda-mode。
2024-08-14 16:23:27
958
原创 CUDA-MODE 第二课: PMPP 书的第1-3章
我的课程笔记,欢迎关注:https://github.com/BBuf/how-to-optim-algorithm-in-cuda/tree/master/cuda-mode。
2024-08-13 21:09:56
831
原创 CUDA-MODE 第一课课后实战(下)
通过对Nsight Compute的学习可以发现Nvidia的Profile工具易用性和专业性都非常强,对每个做CUDA开发的开发者来说它都是必不可少的。这两篇文章就是学习CUDA-MODE Lecture1之后在Nsight Compute的实践内容了。推荐阅读:https://www.youtube.com/watch?
2024-08-13 11:04:51
1413
原创 CUDA-MODE 第一课课后实战(上)
Nsight Compute是一个CUDA kernel分析器,它通过硬件计数器和软件收集指标。它使用内置的专业知识来检测kernel常见的性能问题并指出发生这些问题的位置并给出一些解决方法的建议。这一内置规则集和指南就是我们所说的Guided Analysis。下面就结合Lecture1的例子来深入了解下Nsight Compute。在Nsight Compute中,如果我们把鼠标悬停在各个指标上,我们能获得对应的讲解。
2024-08-09 08:54:23
1420
原创 CUDA-MODE 第一课: 如何在 PyTorch 中 profile CUDA kernels
我的课程笔记,欢迎关注:https://github.com/BBuf/how-to-optim-algorithm-in-cuda/tree/master/cuda-mode。
2024-08-09 08:52:47
1371
1
原创 TensorRT-LLM中的 Quantization GEMM(Ampere Mixed GEMM)的 CUTLASS 2.x 实现讲解
这三种Layout变换分别是确保A, B矩阵都可以用128比特去load,从而最大化内存带宽。另外一种Layout就是为了利用上ld.mxtrix高效的去把B矩阵从shared memory取出来,以及最后一种Layout变换就是通过这些算术运算和逻辑运算的去替换掉convert指令。
2024-08-08 22:55:37
1293
原创 CUTLASS 2.x & CUTLASS 3.x Intro 学习笔记
这张是CUTLASS GEMM的核心概念图。除了Tiling之外还要考虑Overlap,现在我们有Tling来决定线程块/线程需要做哪些事情,有内存Streaming的过程让数据尽可能的复用在各级存储上,NumStage这个模板参数用来决定开多少个额外的Buffer来做计算和传输的Overlap(参考Double Buffering),如最下方的中间的图所示。除了Tiling之外另外一个重要的概念是我们需要把数据尽可能的复用在高级缓存上,享受到更高的带宽,避免频繁的读取global memory的数据。
2024-08-08 22:54:36
2799
1
原创 GLM大模型的机器翻译能力测试
最近想对GLM-4今年发布的几个大模型 glm-4-0520,glm-4-air以及glm-4-flash简单评测一下它们的机器翻译能力,由于这几个大模型的容量和训练数据都有区别,所以它们的翻译能力也是不同的。我们这里就分别选择一些有趣的,有挑战性的,专业性的数据来分别让glm-4-0520,glm-4-air以及glm-4-flash还有百度翻译分别给出它们的翻译结果。
2024-08-08 22:53:34
1995
原创 大模型KV Cache节省神器MLA学习笔记(包含推理时的矩阵吸收分析)
这篇文章主要是对Deepseek2提出的优化KV Cache的MLA方法做个人理解,特别是关于MLA的矩阵吸收部分,这部分Paper以及官方开源实现没有给出。然后,开源社区大佬确实出手很快,在知乎的《如何看待 DeepSeek 发布的 MoE 大模型 DeepSeek-V2?
2024-06-17 16:11:16
11006
1
原创 vAttention:用于在没有Paged Attention的情况下Serving LLM
paper链接:https://arxiv.org/pdf/2405.04437v1之前浏览 vllm 的时候看到一篇尝试去掉 vLLM 的 PagedAttention,利用 CUDA 底层的虚拟内存和物理内存分配 API 直接分配连续的虚拟内存以及做物理内存映射从而避免 PagedAttention 由于要手动维护 Block Table 和物理内存分配带来的一系列工程麻烦以及高 Overhead。
2024-06-10 21:34:56
1760
原创 GQA,MLA之外的另一种KV Cache压缩方式:动态内存压缩(DMC)
Transformer 已经成为大型语言模型 (LLM) 的核心。然而,由于需要在内存中存储过去token的key value的缓存(KV Cache),而缓存的大小与输入序列长度和batch大小线性相关,因此生成仍然效率低下。为了解决这个问题,paper提出了动态内存压缩 (DMC),一种在推理时对KV Cache进行在线压缩的方法。最重要的是,模型学习在不同的注意力头和layer中应用不同的压缩率。
2024-06-08 23:31:01
1394
原创 硬件高效的线性注意力机制Gated Linear Attention论文阅读
这篇文章主要是对GLA Transformer这篇Paper进行了阅读,进一步学习Chunkwise Linear Attention的思想以及GLA特殊的2级分块Chunkwise并行。不过我在 https://github.com/sustcsonglin/flash-linear-attention 官方仓库以及Paper给出的GLA算法伪代码中都看到只有一次分块,不太清楚原因。
2024-06-04 23:06:27
2447
5
原创 flash-linear-attention中的Chunkwise并行算法的理解
我之前解读过causal linear attention的cuda实现,文章见:https://zhuanlan.zhihu.com/p/673896906 ,也是在评论区通过@sonta 了解到了flash-linear-attention的Chunkwise并行实现。上篇文章。
2024-05-26 17:17:40
1063
原创 flash-linear-attention的fused_recurrent_rwkv6 Triton实现精读
定义了一个函数 fused_recurrent_rwkv6,它接受多个输入张量和参数,并返回两个张量的元组。# r, k, v, w, u 这些参数分别表示query、key、value、数据相关衰减和奖励。# scale为缩放因子,默认值为 -1,如果不提供,则默认为 1 / sqrt(K)。# initial_state 初始状态,默认为 None。# output_final_state 是否输出最终状态,默认为 False。
2024-05-18 10:15:42
959
原创 单节点8xA800跑起来HuggingFace DeepSeek V2踩坑
尝试跑起来HuggingFace上release的DeepSeek V2,踩了几个坑,这里给出解决的方法。HuggingFace提供的开源DeepSeek V2 repo链接为:https://huggingface.co/deepseek-ai/DeepSeek-V2。
2024-05-09 15:57:26
1403
原创 在GPU上加速RWKV6模型的Linear Attention计算
本文主要讲一些看到的RWKV 6模型的Linear Attention模块推理加速方法,在这篇博客中暂不涉及对kernel的深入解析。首先,flash-linear-attention(https://github.com/sustcsonglin/flash-linear-attention )这个仓库旨在对各种线性Attention架构进行工程加速,例如RetNet,GLA,Manba,RWKV6(2024年4月引入)。
2024-05-05 23:09:05
1217
原创 梳理RWKV 4,5(Eagle),6(Finch)架构的区别以及个人理解和建议
RWKV相比于LLama等开源大模型开发难度是更大的,因为它需要支持World HF Tokenizer以及各个版本独立的cuda kernel,但幸运的是在开源社区的努力下这些问题目前得到了部分解决。
2024-04-24 18:49:21
2036
原创 系统调优助手,PyTorch Profiler TensorBoard 插件教程
使用PyTorch Profiler进行性能分析已经一段时间了,毕竟是PyTorch提供的原生profile工具,个人感觉做系统性能分析时感觉比Nsys更方便一些,并且画的图也比较直观。
2024-04-16 12:24:00
5676
1
原创 AI Infra论文阅读之《在LLM训练中减少激活值内存》
本次阅读一篇Megatron-LM的README贴出的一篇paper,是NVIDIA在2022年上传的,讲的是Megatron-LM里面的Sequence Parallel和Selective Activation Recomputation如何降低大语言模型训练中的激活内存。这里来看一下理论讲解,另外Paper的第4节的激活内存公式估计比较有用。。序列并行目前是非常常用的,但是选择性激活重计算可能用得人不多,我想一个很重要的原因应该是 FlashAttention 的出现大大降低了激活值内存大小。
2024-03-25 09:09:39
1641
1
原创 【BBuf的CUDA笔记】十四,OpenAI Triton入门笔记三 FusedAttention
继续Triton的学习,这次来到 https://triton-lang.org/main/getting-started/tutorials/06-fused-attention.html 教程。也就是如何使用Triton来实现FlashAttention V2。
2024-02-29 14:16:18
4514
1
原创 AI Infra论文阅读之LIGHTSEQ(LLM长文本训练的Infra工作)
从 https://github.com/RulinShao/LightSeq 注意到这篇paper(https://arxiv.org/pdf/2310.03294.pdf),paper里面有一些比较有趣的发现并且这个paper的代码是基于Triton来实现的,所以激发了我阅读兴趣。我后续也会从源码的角度来解读这篇paper核心idea的代码实现,顺便学习下Triton。介于篇幅原因,这篇文章只读一下这篇paper,把握一下核心的Infra相关的idea。
2024-02-16 21:18:13
1312
1
原创 【BBuf的CUDA笔记】十四,OpenAI Triton入门笔记二
接着【BBuf的CUDA笔记】十三,OpenAI Triton 入门笔记一 继续探索和学习OpenAI Triton。这篇文章来探索使用Triton写LayerNorm/RMSNorm kernel的细节。之前在 【BBuf的CUDA笔记】十二,LayerNorm/RMSNorm的重计算实现 这篇文章我啃过Apex的LayerNorm实现,整个实现过程是非常复杂的,不仅仅需要手动管理Block内的共享内存,而且在每一行的具体计算时还需要以warp为视角做warp间和warp内的reduce以获得全局的均值和
2024-02-16 21:09:58
1584
原创 星辰AI大模型TeleChat-7B评测
总的来说,TeleChat-7B具有一定的文创能力和代码能力,对于本次测试的大多数prompt可以生成较为合理的答案。但模型本身也存在大模型幻觉,指令跟随能力一般以及回答有概率重复的问题。但由于TeleChat模型的训练Token相比于主流模型已经比较少了,只有1.0T数据,所以相信上述问题通过更多高质量的数据以及PPO等训练可以进一步被缓解。
2024-02-09 17:19:02
3049
原创 AI Infra论文阅读之将流水线并行气泡几乎降到零(附基于Meagtron-LM的ZB-H1开源代码实现解读)
大概就是说这个paper提出了一个新的流水线调度算法,实现了流水线并行同步训练时的的零气泡。我理解这里的同步训练指的就是1F1B中一个 batch 内的所有 micro-batch 的数据遇到的模型都是同一个版本的模型。然后这个改进基于一个关键的观察就是反向计算可以分成两部分,一部分计算输入的梯度,另一部分计算参数的梯度。此外paper还提到,他们开发了一个算法可以根据特定模型配置和内存限制自动找到最佳调度。另外,为了实现真正的零气泡,作者引入了一种新技术来绕过优化器步骤中的同步。
2024-02-04 14:40:38
2687
2
原创 AI Infra论文阅读之通过打表得到训练大模型的最佳并行配置
这次阅读一篇mlsys的一篇新论文,《Efficient Parallelization Layoutsfor Large-Scale Distributed Model Training》,虽然该论文还处于open review阶段,但作者在 Megatron-LM 基础上通过对各种训练调优方法进行组合打表获得了一些比较有趣的结论和发现,地址:https://openreview.net/pdf?
2024-01-26 21:24:44
1998
2
原创 【BBuf的CUDA笔记】十三,OpenAI Triton 入门笔记一
这里来看官方的介绍:https://openai.com/research/triton ,从官方的介绍中我们可以看到OpenAI Triton的产生动机以及它的目标是什么,还可以看到一些经典算法的实现例子展示。这里的标题是 Introducing Triton: Open-source GPU programming for neural networks ,翻译就是《介绍 Triton:用于神经网络的开源 GPU 编程语言》。
2024-01-22 21:17:31
3388
1
原创 【BBuf的CUDA笔记】十二,LayerNorm/RMSNorm的重计算实现
我也是偶然在知乎的一个问题下看到这个问题,大概就是说在使用apex的LayerNorm/RMSNorm的时候可以打开这个api的memory_efficient开关,这个开关可以在速度和精度无损的情况下节省网络训练的显存占用。感觉比较有趣,我就研究了一下,因此也就有了这篇文章。我去实测了一下,单机8卡A100训练LLama7B,纯数据并行的情况下打开memory_efficient开关相比于不打开节省了大约2个G的显存,如果模型继续scale up,那么省掉的显存也会更多。因此,本文就是对这个memory_
2024-01-15 21:56:02
2463
原创 【BBuf的CUDA笔记】十一,Linear Attention的cuda kernel实现补档
这篇文章和【BBuf的CUDA笔记】十,Linear Attention的cuda kernel实现解析就是我阅读Linear Attention官方实现的理解。欢迎关注 https://github.com/BBuf/how-to-optim-algorithm-in-cuda 获取更多后续cuda优化相关的知识。
2024-01-04 14:08:32
1024
原创 【BBuf的CUDA笔记】十,Linear Attention的cuda kernel实现解析
我们先从这个naive的Linear Attention实现入手,摸清代码实现和上面介绍的公式5的对应关系。https://github.com/idiap/fast-transformers/blob/master/fast_transformers/attention/linear_attention.py ,这个实现很短,逐行解释一下。from ..feature_maps import elu_feature_map # 这就是论文提到的elu(x)+1。
2023-12-24 14:11:02
1487
原创 使用OpenCompass评测rwkv模型教程
继续文章里面提到的想法,探索一下使用OpenCompass来评测RWKV模型,对模型的实际表现有一个更客观的了解。我在尝试的过程中也碰到了一些问题,所以这里记录一下使用OpenCompass评测的流程以及在评测RWKV过程中解决的问题。这里主要是记录如何跑通,后续可能会跑一下榜单去对比一下其它的模型。目前使用这个fork的版本(https://github.com/BBuf/opencompass)就可以正常做RWKV系列模型的评测了。
2023-11-30 09:17:55
1489
原创 MLC-LLM 支持RWKV-5推理以及对RWKV-5的一些思考
继续填使用MLC-LLM将RWKV 3B模型跑在Android手机上(redmi k50每s可解码8个token这篇文章留下的坑。由于上面这篇文章支持的是RWKV4模型,不支持最近RWKV社区正在训练的RWKV5模型,所以利用业余时间在MLC-LLM里面支持了最新的RWKV5模型的推理,同时也可以带大家看一下RWKV5的3B模型表现是否有惊艳之处。
2023-11-18 22:08:33
1071
4
原创 使用MLC-LLM将RWKV 3B模型跑在Android手机上
这篇文章分享了一下使用MLC-LLM将RWKV模型跑在Android手机上遭遇的坑以及编译的详细教程,接下来也会尝试一下RWKV5。想在andorid手机上本地运行开源大模型的伙伴们可以考虑一下MLC-LLM,他们的社区还是比较活跃的,如果你提出一些问题一般都会有快速的回复或者解决方法。
2023-10-29 09:27:52
903
cs231-斯坦福大学-李菲菲-2016 课件
2018-01-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人