
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
Softmax 算子(Softmax Operator)是深度学习和机器学习中最常用的激活函数之一,主要用于将一个包含任意实数的向量(通常称为 Logits)映射为一个概率分布。对于一个包含NNN个元素的输入向量xx1x2xNTxx1x2xNT,Softmax 算子会将其映射为相同维度的输出向量ss1s2sNTss1s2sNT。对于输出向量中的第iii个元素sis_isisiSoft

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

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

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

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

这个的github仓库,race_tests目录下有三个算子,拉取源码操作如下,记得切换分支上一个文章分享了torch baseline的实现思路,了解了moe算子的基本思想,本次来看看tilelang baseline的思路,tilelang实现在基础实现的基础上,增加了一些优化。
全称Mixture ofExpert,混合专家。传统LLM的思路是一个超大FFN层,包含百科全书式的知识,每次推理时都由这个大FFN层推理。这样推理很慢,并且实际上大部分参数是根本没用的,比如你问个hello,并不需要知道光荣革命和凝聚态物理的知识,但是这些参数还是参与推理了MoE最早是谷歌提出的,被deepseek实际应用到LLM推理中,解决的就是FFN层过大的问题。

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

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

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







