稀疏计算、彩票假说、MoE、SparseGPT

本文探讨了稀疏计算作为深度学习未来发展的重要方向,介绍了彩票假说、MoE结构以及SparseGPT等技术,强调了通过参数剪枝减少计算量,提升模型效率的方法。墨芯科技和A100GPU的应用展示了这一技术的实际潜力和应用案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

稀疏计算可能是未来10年内最有潜力的深度学习方向之一,稀疏计算模拟了对人脑的观察,人脑在处理信息的时候只有少数神经元在活动,多数神经元是不工作的。而稀疏计算的基本思想是:在计算过程中,将一些不重要的参数设置为0,从而减少计算量。而这种计算量的减少规模经常是10倍级别,这为部署提速提供了想象力。业界已有一些公司例如墨芯科技在做这方面的工作,并取得了一些成果,大家可以看他们的宣传视频(https://mp.weixin.qq.com/s/NHydrLhqJYGbvF7eY2m9RA),下面推荐几篇经典的文章:

The Lottery Ticket Hypothesis(彩票假说)

  • 推荐理由: 这是这个领域里非常经典的一篇文章,作者提出了一种生成稀疏的高性能网络的简单方法:在对网络进行训练后,将所有小于某个阈值的权重设置为0(对其进行剪枝),将其余权重重置回其初始配置,然后在保证被剪枝的权重处于冻结状态的情况下(未经过训练),从这个起始配置重新训练网络。在训练最多相同次数的迭代后,它可以与原始网络的测试精度相匹配。
  • 论文地址: https://openreview.net/pdf?id=rJl-b3RcF7
  • 相关解读: https://zhuanlan.zhihu.com/p/675189739 和 https://www.bilibili.com/read/cv2806397/

A REVIEW OF SPARSE EXPERT MODELS IN DEEP LEARNING (来自Jeff Dean的综述)

  • 推荐理由: 尽管彩票假说给业界提供了想象力,但是选择哪些参数裁掉仍是业界一个需要探索的问题。MoE结构提供了一种方案,例如Mixtral 8✖️7B就是一种典型的MoE结构(https://zhuanlan.zhihu.com/p/673527090)。Jeff Dean的综述比较详细地介绍了什么是top-k routing、Upstream Scaling和Downstream Scaling
    在这里插入图片描述

  • 论文地址: https://arxiv.org/abs/2209.01667

  • 相关解读: https://mp.weixin.qq.com/s/mTqCMYUqo1ifcmxlYHYm2A 和 https://huggingface.co/blog/zh/moe

SparseGPT: Massive Language Models Can be Accurately Pruned in One-Shot

在这里插入图片描述

  • 推荐理由: 该算法能够只用一张 A100(80G),在 4.5 个小时左右将 OPT-175B 的模型权重完成 60% 稀疏度的剪枝,且能保持较高的精度。而且可以很好地扩展到 2:4 模式的半结构化剪枝,以适配 A100 的稀疏计算。SparseGPT用来剪枝的思路其实和GPTQ有些类似,都是利用海森矩阵贪心地进行迭代更新,同时利用Cholesky分解来稳定数值计算
  • 论文地址: https://arxiv.org/pdf/2301.00774.pdf
### 稀疏 MoE (Mixture of Experts) 架构介绍 #### 一、稀疏 MoE 的定义与特点 稀疏混合专家(Sparse Mixture of Experts, Sparse MoE)架构是一种特殊的神经网络设计,旨在提升大型语言模型和其他深度学习系统的性能和效率。这种架构通过引入多个专家子模块来处理不同的输入特征,并仅激活其中一部分专家来进行计算[^4]。 #### 二、工作原理 在传统的全连接层中,每一层都会对所有的输入节点进行加权求和操作;而在稀疏 MoE 中,则是从众多预设好的专家集合里挑选出少数几个最合适的专家参与当前任务的运算过程。具体来说: - **路由机制**:对于每一个输入样本,会有一个路由器负责决定哪些专家应该被激活。这个决策通常是基于某种形式的概率分布完成的。 - **门控函数**:为了进一步优化资源分配,在实际应用过程中还会加入门控单元控制各个路径上的流量大小,从而实现更精细粒度的任务分派策略。 - **损失函数调整**:由于只有一部分专家会被真正调用到工作中去,因此需要特别注意如何合理设置目标函数以确保整个训练流程稳定收敛并达到预期效果。 ```python import torch.nn as nn class Router(nn.Module): def __init__(self, input_dim, num_experts): super(Router, self).__init__() self.linear = nn.Linear(input_dim, num_experts) def forward(self, x): logits = self.linear(x) routing_weights = F.softmax(logits, dim=-1) return routing_weights class Expert(nn.Module): def __init__(self, expert_network): super(Expert, self).__init__() self.expert_net = expert_network def forward(self, x): output = self.expert_net(x) return output def sparse_moe_forward(routing_weights, experts, inputs): outputs = [] for i in range(len(experts)): selected_inputs = inputs * routing_weights[:,i].unsqueeze(-1).expand_as(inputs) out_i = experts[i](selected_inputs) outputs.append(out_i.unsqueeze(dim=0)) final_output = sum(outputs)/len(experts) return final_output ``` 上述代码展示了简化版的稀疏MoE前向传播逻辑,包括路由器的选择权重计算以及各路专家的具体执行情况。 #### 三、优势分析 采用稀疏化的方式可以显著减少不必要的参数更新次数,进而有效缓解过拟合现象的发生几率。与此同时,这种方法也使得模型具备更强的数据适应性和泛化能力,尤其适合于那些具有高度异质性的复杂场景下的建模需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值