首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

Turbo Sparse:关于LLM稀疏性的探索

编程知识
2024年08月10日 21:52

本文地址:https://www.cnblogs.com/wanger-sjtu/p/18352898

关于llama稀疏性的观察

llama原始模型的FFN计算过程为:

\[f(x) = \text{silu}(xW_{Gate}) \odot xW_{UP} \times W_{Down} \]

class FeedForward(nn.Module):
    def forward(self, x):
        return self.w2(F.silu(self.w1(x)) * self.w3(x))
Model Sparisty
Llama-2-7B 40%
ReLULlama-7B 67%
ShiftedReLULlama-7B 71%

论文统计首层transformer block FFN层的稀疏性质,原生FFN的稀疏性仅有40%,激活函数由silu替换为Relu后可以达到67%,而ShiftedReLU可进一步提高到71%。
从FFN层的计算上来看,表面上是Gate部分作为门控控制了计算的稀疏性,实际上Up、Gate共同控制了计算的稀疏性,所以很自然的就引出了drelu的方案

\[\text{Combined dReLU} (x) := max(0, xW_{gate} ) \odot max(0, xW_{up} ) \]

从训练过程上来看,替换以后收敛性没有影响,结果的评价指标上也没有太大影响。

下一步就是进一步评价下修改以后得稀疏度了。这里没有直接用两个mask的交集,而是按照topk的方法做了评测

\[\text{Mask}(x) := Top_k(|\text{Combined}(x)|) \]

\[ \text{Gated-MLP}(x) := (\text{Combined}(x) ∗ \text{Mask}(x))W_{down} \]

显然效果显著。不影响模型表现的情况下,稀疏到达到了80%,而牺牲一定精度的条件下可以到达90%

Sparsity of Sparsifi ed Models

From:https://www.cnblogs.com/wanger-sjtu/p/18352898
本文地址: http://shuzixingkong.net/article/976
0评论
提交 加载更多评论
其他文章 朋友吐槽我为什么这么傻不在源生成器中用string.GetHashCode, 而要用一个不够优化的hash方法
明明有更好的hash方法 有位朋友对我吐槽前几天我列举的在源生成器的生成db映射实体的优化点 提前生成部分 hashcode 进行比较 所示代码 public static void GenerateReadTokens(this IDataReader reader, Span<int&gt
[考试记录] 2024.8.10 csp-s 模拟赛18
80 + 20 + 0 + 70 = 170 第三题应该有 10 分暴力的,但我没打。 T1 星际旅行 题面翻译 总共有n个节点,m条路径,要求其中m-2条路径走两遍,剩下2条路径仅走一遍,问不同的路径总数有多少,如果仅走一遍的两条边不同则将这两条路径视为不同。 样例 #1 样例输入 #1 5 4
[考试记录] 2024.8.10 csp-s 模拟赛18 [考试记录] 2024.8.10 csp-s 模拟赛18
代码随想录Day11
150. 逆波兰表达式求值 给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意: 有效的算符为 '+'、'-'、'*' 和 '/' 。 每个操作数(运
代码随想录Day11 代码随想录Day11
使用 extract_sqlaudit_proc 存过分析ob性能问题
最近在某个金融单位核心系统项目做ob的性能压测,期间遇到不少问题,现场两周了每天都加班到凌晨一两点左右,真的是累死。🤢🤢 我其实进ob之前有心理预期,卷就卷吧,八九点下班也能接受,没想到真到了干项目的情况下,天天凌晨下班,真怕不知道啥时候会猝死。😂&#
使用 extract_sqlaudit_proc 存过分析ob性能问题 使用 extract_sqlaudit_proc 存过分析ob性能问题 使用 extract_sqlaudit_proc 存过分析ob性能问题
散知识点总结(持更)
有一些小 trick,专门用一整篇博客来写不太合适,所以都放在这里吧。 逆序对 考试的时候树状数组做法显然比其他的都好写。 考虑每个元素对答案的贡献,我们需要知道在它之前有多少元素比它大。 我们只需要维护一个权值树状数组,在枚举到 \(i\) 的时候查询当前树状数组中的元素有多少比它大,为了方便处理
全网最适合入门的面向对象编程教程:35 Python的内置数据类型-文档字符串和__doc__属性
在 Python 中,文档字符串(Docstring)是一种用于为模块、类、方法或函数编写文档的字符串,通常放置在定义的开头,紧跟在声明之后。文档字符串使用三重引号(''' 或 ''')包围,可以跨越多行。
全网最适合入门的面向对象编程教程:35 Python的内置数据类型-文档字符串和__doc__属性 全网最适合入门的面向对象编程教程:35 Python的内置数据类型-文档字符串和__doc__属性 全网最适合入门的面向对象编程教程:35 Python的内置数据类型-文档字符串和__doc__属性
上云避坑指南
我在之前的文章《云计算-虚拟化-OpenStack》里聊过,云计算的本质是一种IT资源通过虚拟化进行的共享,是一种更高维度的服务。云计算的本质就俩词:共享、服务。 1、建议企业上云 作为一个IT行业14余年的老杆子,亲自主导过几个公司的中大型系统从IDC机房迁移上云。上云这个事情,是必然趋势,而且我
上云避坑指南 上云避坑指南 上云避坑指南
spring-boot-starter
spring-boot-starter 是 Spring Boot 提供的一系列启动器(Starters),这些启动器是预配置的依赖项集合,用于快速引入常见的 Spring 功能。启动器的目的是简化项目的依赖管理,使开发者可以更方便地集成和使用 Spring 的各种功能。 常见的 Spring Bo