logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

ROCm 自定义softmax算子

Softmax 算子(Softmax Operator)是深度学习和机器学习中最常用的激活函数之一,主要用于将一个包含任意实数的向量(通常称为 Logits)映射为一个概率分布。对于一个包含NNN个元素的输入向量xx1x2xNTxx1​x2​xN​T,Softmax 算子会将其映射为相同维度的输出向量ss1s2sNTss1​s2​sN​T。对于输出向量中的第iii个元素sis_isi​siSoft

文章图片
ROCm 自定义fused_swish算子接入Torch

实际上我们可以自定义一个ROCm算子,并在torch里调用它,这样可以用py的语法,ROCm的性能。

文章图片
ROCm Reduce算子(Warp Shuffle/SMEM规约)

规约操作,实际上就是把一个张量的所有元素,汇总到一个值。汇总可以是求和,求max。这里以求和为例。本文研究一下ROCm版Reduce的两种写法,以及分析线程束分化对性能的影响。

文章图片
#算法
AMD ROCm简介(语法|线程模型|内存层次|硬件架构)

类似于Nvidia的CUDA生态,ROCm是AMD显卡上的底层GPU编程架构,和CUDA一样都是类C语言,基于LLVM项目构建,增加了GPU编程特有的关键字和优化pass,实现了LLVM ir到GPU ISA的翻译后端。我们在AMD服务器上跑torch时,实际上代码会被一层层解析到ROCm,最后编译到机器码执行。torch框架pybind映射到cppaten cpp框架 封装的张量类rocm ru

文章图片
#硬件架构
AMD ROCm简介(语法|线程模型|内存层次|硬件架构)

类似于Nvidia的CUDA生态,ROCm是AMD显卡上的底层GPU编程架构,和CUDA一样都是类C语言,基于LLVM项目构建,增加了GPU编程特有的关键字和优化pass,实现了LLVM ir到GPU ISA的翻译后端。我们在AMD服务器上跑torch时,实际上代码会被一层层解析到ROCm,最后编译到机器码执行。torch框架pybind映射到cppaten cpp框架 封装的张量类rocm ru

文章图片
#硬件架构
Tilelang-metax|MoE|Tilelang baseline

这个的github仓库,race_tests目录下有三个算子,拉取源码操作如下,记得切换分支上一个文章分享了torch baseline的实现思路,了解了moe算子的基本思想,本次来看看tilelang baseline的思路,tilelang实现在基础实现的基础上,增加了一些优化。

Tilelang-Metax|MoE|torch baseline

全称Mixture ofExpert,混合专家。传统LLM的思路是一个超大FFN层,包含百科全书式的知识,每次推理时都由这个大FFN层推理。这样推理很慢,并且实际上大部分参数是根本没用的,比如你问个hello,并不需要知道光荣革命和凝聚态物理的知识,但是这些参数还是参与推理了MoE最早是谷歌提出的,被deepseek实际应用到LLM推理中,解决的就是FFN层过大的问题。

文章图片
#pytorch
Tilelang-Metax|MoE|torch baseline

全称Mixture ofExpert,混合专家。传统LLM的思路是一个超大FFN层,包含百科全书式的知识,每次推理时都由这个大FFN层推理。这样推理很慢,并且实际上大部分参数是根本没用的,比如你问个hello,并不需要知道光荣革命和凝聚态物理的知识,但是这些参数还是参与推理了MoE最早是谷歌提出的,被deepseek实际应用到LLM推理中,解决的就是FFN层过大的问题。

文章图片
#pytorch
Tilelang-Metax|MoE|torch baseline

全称Mixture ofExpert,混合专家。传统LLM的思路是一个超大FFN层,包含百科全书式的知识,每次推理时都由这个大FFN层推理。这样推理很慢,并且实际上大部分参数是根本没用的,比如你问个hello,并不需要知道光荣革命和凝聚态物理的知识,但是这些参数还是参与推理了MoE最早是谷歌提出的,被deepseek实际应用到LLM推理中,解决的就是FFN层过大的问题。

文章图片
#pytorch
ABC460贪心|多源BFS|数论|计数|线段树|树的直径

贪心a数组长度n,b数组长度m,每次取一对a,b可以拼成一个成品。要求b至少是a的两倍。问最多能拼出来多少个?不妨考虑每个b能否找到一个a(如果考虑每个a能否找到b其实是同理的),那么对b来说,a至少要是当前bi的一半大,所以越大的a,越通用,小的a只能给晓得b用。所以要尽可能配对,应该先用小的,如果不用后面可能就用不了了。对a,b,都升序排序,枚举b,对于每个b,把小于b一半的a都删掉,因为后面

#宽度优先#算法
    共 31 条
  • 1
  • 2
  • 3
  • 4
  • 请选择