稀疏化和参数共享是模型压缩领域的两大核心技术。稀疏化通过将部分权重置零来减少计算量,而参数共享则通过复用权重来降低模型参数量。本章将深入探讨结构化稀疏、模型合并等前沿技术,重点关注它们在边缘推理场景中的实际应用。我们将从数学原理出发,详细分析各种方法的设计思想、硬件适配性以及实际部署中的权衡。
2:4结构化稀疏是NVIDIA在Ampere架构中引入的细粒度结构化剪枝技术。其核心约束是:在每4个连续权重中,必须有且仅有2个权重为零。
对于权重矩阵 W ∈ ℝ^(m×n),我们将其按行展开,每4个元素为一组:
| 约束: | G_i | _0 = 2,即每组恰好有2个非零元素 |
这种模式实现了固定的50%稀疏率,同时保持了硬件友好的规则性。
历史演进背景:
结构化稀疏的发展经历了几个重要阶段:
2:4稀疏的设计哲学:
2:4模式的选择并非偶然,而是多方面权衡的结果:
2:4稀疏化过程可以形式化为一个组合优化问题。对于每个4元素组,我们需要选择保留哪2个权重:
优化目标: \(\min_{\mathcal{M}} \mathcal{L}(f(X; W \odot \mathcal{M}))\)
其中:
贪心近似算法: 实践中采用基于幅值的贪心策略:
| 对每组 G_i,计算权重幅值: | w_{i,j} |
理论分析:为什么幅值剪枝有效?
从泰勒展开的角度分析剪枝的影响:
\[\Delta \mathcal{L} = \mathcal{L}(W \odot \mathcal{M}) - \mathcal{L}(W) \approx \sum_{i,j} \frac{\partial \mathcal{L}}{\partial w_{ij}} \cdot (w_{ij} \cdot (\mathcal{M}_{ij} - 1))\]当梯度和权重独立时(实践中近似成立): \(\mathbb{E}[\Delta \mathcal{L}] \approx -\sum_{i,j} \mathbb{E}\left[\frac{\partial \mathcal{L}}{\partial w_{ij}}\right] \cdot w_{ij} \cdot (1 - \mathcal{M}_{ij})\)
在训练收敛时,$\mathbb{E}[\frac{\partial \mathcal{L}}{\partial w_{ij}}] \approx 0$,因此主要考虑二阶项: \(\Delta \mathcal{L} \approx \frac{1}{2} \sum_{i,j} H_{ij,ij} \cdot w_{ij}^2 \cdot (1 - \mathcal{M}_{ij})\)
其中$H_{ij,ij}$是Hessian对角元。假设Hessian对角元近似相等,则最小化损失等价于最小化被剪枝权重的平方和,即保留幅值最大的权重。
改进的重要性度量:
除了简单的幅值,研究者提出了多种改进的重要性度量:
梯度加权幅值: \(S_{ij} = |w_{ij}| \cdot \left|\frac{\partial \mathcal{L}}{\partial w_{ij}}\right|\)
Hessian加权(二阶信息): \(S_{ij} = |w_{ij}|^2 \cdot H_{ij,ij}\)
动量累积重要性: \(S_{ij}^{(t)} = \beta \cdot S_{ij}^{(t-1)} + (1-\beta) \cdot |w_{ij}^{(t)}|\)
组合优化的精确解法:
虽然贪心算法效率高,但对于小规模问题,可以求解精确的组合优化:
对每个4元素组,枚举所有$\binom{4}{2} = 6$种可能的2:4模式,选择使局部损失最小的模式: \(\mathcal{M}_i^* = \arg\min_{\mathcal{M}_i \in \text{2:4 patterns}} \mathcal{L}_i(G_i \odot \mathcal{M}_i)\)
其中$\mathcal{L}_i$是第i组对总损失的贡献。
NVIDIA Ampere架构引入了专门的稀疏张量核心(Sparse Tensor Cores),实现了2:4稀疏的硬件级加速。
压缩存储格式:
计算流程:
硬件微架构深入分析:
稀疏张量核心的设计涉及多个创新点:
模式1: [1,1,0,0] → 000
模式2: [1,0,1,0] → 001
模式3: [1,0,0,1] → 010
模式4: [0,1,1,0] → 011
模式5: [0,1,0,1] → 100
模式6: [0,0,1,1] → 101
稀疏MAC单元结构:
┌─────────────┐
│ 索引解码器 │ ← 3-bit索引
└──────┬──────┘
│
┌──────▼──────┐
│ 2×2 Crossbar│ ← 路由网络
└──────┬──────┘
│
┌──────▼──────┐
│ MAC阵列 │ ← 只激活50%单元
└─────────────┘
性能模型分析:
稀疏加速的实际性能取决于多个因素:
计算密度影响: \(\text{Speedup} = \frac{1}{0.5 + \alpha \cdot \frac{B_{sparse}}{B_{dense}}}\)
其中α是内存带宽限制因子,B是带宽需求。
与其他加速技术的协同:
传统流程:Load → Compute → Store
融合流程:Load → Sparse_Decode → Compute → Quantize → Store
直接剪枝会导致精度下降,需要通过微调恢复:
渐进式稀疏化: \(W^{(t+1)} = W^{(t)} - \eta \nabla_W \mathcal{L} \cdot \mathcal{M}^{(t)}\)
其中稀疏掩码 $\mathcal{M}^{(t)}$ 在训练过程中逐步更新:
知识蒸馏增强: 使用稠密教师模型指导稀疏学生模型: \(\mathcal{L}_{total} = \mathcal{L}_{task} + \lambda \mathcal{L}_{KD}(f_{sparse}, f_{dense})\)
高级精度恢复技术:
稀疏感知训练(Sparsity-Aware Training):
从训练初期就引入稀疏约束,让模型适应稀疏结构: \(\mathcal{L} = \mathcal{L}_{task} + \alpha \cdot \mathcal{R}_{sparse}(W)\)
其中稀疏正则项设计为: \(\mathcal{R}_{sparse}(W) = \sum_{groups} \left\| \text{sort}(|G_i|)[3:4] \right\|_2^2\)
这个正则项惩罚每组中较小的两个权重,促进自然形成2:4模式。
二阶信息引导的恢复:
使用Fisher信息矩阵的对角近似来指导恢复过程: \(F_{ii} = \mathbb{E}\left[\left(\frac{\partial \log p(y|x)}{\partial w_i}\right)^2\right]\)
恢复时的学习率自适应调整: \(\eta_i = \frac{\eta_0}{1 + \gamma \cdot F_{ii}}\)
重要参数(高Fisher信息)使用较小学习率,保持稳定性。
稀疏模式迁移学习:
当在新任务上微调时,可以迁移预训练模型的稀疏模式:
步骤1: 从预训练模型提取2:4模式
步骤2: 在新任务上固定模式,只更新非零权重
步骤3: 可选地允许少量模式调整(如5-10%)
动态稀疏再生(Dynamic Sparse Regeneration):
周期性地重新评估和调整稀疏模式: \(\mathcal{M}^{(t+T)} = \text{Update}(\mathcal{M}^{(t)}, \nabla W^{(t:t+T)})\)
更新策略:
| 计算累积梯度重要性:$G_{accum} = \sum_{k=t}^{t+T} | \nabla w^{(k)} | $ |
实验验证的最佳实践:
稀疏化阶段:使用余弦退火,从原始学习率的50%开始
恢复阶段:使用原始学习率的10-20%
最终微调:使用原始学习率的1-5%
敏感层(首尾层):延迟稀疏化,使用更长恢复期
中间层:激进稀疏化,快速收敛
残差连接:保持主路径稠密,只稀疏化旁路
| 稀疏模式 | 稀疏率 | 硬件支持 | 精度保持 | 实际加速比 |
|---|---|---|---|---|
| 2:4结构化 | 50% | 专用硬件 | 优秀 | 1.3-1.7x |
| 1:4结构化 | 75% | 理论可行 | 较差 | - |
| 块稀疏(8×8) | 灵活 | 部分支持 | 良好 | 1.2-1.5x |
| 非结构化 | 任意 | 困难 | 最佳 | <1x(通常) |
编译器支持:
2:4稀疏需要深度学习编译器的特殊支持。NVIDIA的cuSPARSELt库提供了完整的API:
稀疏化流程:
1. 权重分析:识别可稀疏化的层
2. 模式生成:基于幅值的2:4模式选择
3. 元数据编码:生成3比特位置索引
4. 内核选择:调用稀疏GEMM内核
精度-性能权衡曲线:
实验表明,2:4稀疏在不同模型上的表现:
层级敏感度分析:
不同层对2:4稀疏的敏感度差异很大:
动态稀疏重分配:
在训练过程中动态调整稀疏模式:
\[\mathcal{M}^{(t+1)} = \text{Top-K}(|W^{(t)}| + \gamma \cdot |\nabla W^{(t)}|)\]其中γ是梯度重要性权重,允许小权重但梯度大的参数被保留。
结构化剪枝与蒸馏的协同:
三阶段训练策略:
损失函数设计: \(\mathcal{L} = \mathcal{L}_{CE} + \alpha \cdot \mathcal{L}_{KL}(S||T) + \beta \cdot ||W||_1\)
内存访问模式优化:
2:4稀疏的内存访问具有规律性,可以优化:
功耗优化:
稀疏计算的功耗节省来自于:
实测功耗降低:20-35%(取决于层类型和批大小)
硬件演进趋势:
下一代硬件可能支持更灵活的结构化稀疏:
算法创新方向:
N:M稀疏是2:4模式的推广,表示每M个权重中保留N个非零值。稀疏率为 $s = 1 - N/M$。
设计空间探索:
N:M稀疏的数学表述:
给定权重张量 $W \in \mathbb{R}^{C_{out} \times C_{in} \times K \times K}$(以卷积层为例),N:M稀疏化过程可以表示为:
\[W_{sparse} = W \odot \mathcal{M}_{N:M}\]其中掩码 $\mathcal{M}_{N:M}$ 满足: \(\forall i, \sum_{j=Mi}^{M(i+1)-1} \mathcal{M}_j = N\)
硬件实现的关键考虑:
N:M模式的信息论分析:
从信息论角度看,N:M稀疏的信息容量为:
\[I_{N:M} = \log_2 \binom{M}{N} + N \log_2 V\]其中V是权重值的量化级别数。这给出了压缩率的理论上界:
\[\text{Compression Ratio} = \frac{M \log_2 V}{I_{N:M}}\]选择N:M配置需要平衡多个因素:
信息论视角: 每M个位置选N个的组合数:$C(M,N) = \binom{M}{N}$
索引开销(比特):$\lceil \log_2 C(M,N) \rceil$
硬件效率分析:
经验法则:
配置选择的多目标优化框架:
定义优化问题: \(\min_{N,M} \alpha \cdot \text{AccuracyLoss}(N,M) + \beta \cdot \text{HardwareCost}(N,M) + \gamma \cdot \text{StorageOverhead}(N,M)\)
其中:
精度损失模型: \(\text{AccuracyLoss}(N,M) \approx c_1 \cdot (1 - N/M)^2 + c_2 \cdot \exp(-M/M_0)\)
第一项表示稀疏率的影响,第二项表示粒度的影响。
硬件成本模型: \(\text{HardwareCost}(N,M) = \text{DecodingCost}(M,N) + \text{RoutingCost}(M,N)\)
其中:
存储开销模型: \(\text{StorageOverhead}(N,M) = \frac{N \cdot b_{value} + \lceil \log_2 \binom{M}{N} \rceil}{M \cdot b_{value}}\)
实验验证的最优配置:
基于大量实验,不同场景的推荐配置:
| 应用场景 | 推荐配置 | 稀疏率 | 特点 |
|---|---|---|---|
| 移动端推理 | 2:4 | 50% | 硬件支持最好 |
| 边缘服务器 | 4:8, 8:16 | 50% | 灵活性更高 |
| 极限压缩 | 1:4, 2:8 | 75% | 精度损失较大 |
| 混合精度 | 动态N:M | 可变 | 层自适应 |
自动配置搜索算法:
输入:模型M,硬件约束H,精度要求A
输出:每层的最优(N,M)配置
1. 初始化:所有层使用2:4配置
2. 敏感度分析:
- 计算每层的Hessian迹:tr(H_l)
- 排序层按敏感度
3. 贪心优化:
for 层l in 敏感度递增顺序:
尝试更激进的稀疏配置
if 精度损失 < 阈值:
接受新配置
else:
保持原配置
4. 全局微调:
使用选定的配置进行端到端微调
不同层对稀疏的敏感度不同,可以采用自适应策略:
层级敏感度分析: 使用泰勒展开估计剪枝影响: \(\Delta \mathcal{L} \approx \sum_i \frac{\partial \mathcal{L}}{\partial w_i} \Delta w_i + \frac{1}{2} \sum_{i,j} \frac{\partial^2 \mathcal{L}}{\partial w_i \partial w_j} \Delta w_i \Delta w_j\)
混合精度稀疏分配:
将N:M模式扩展到二维块:
块稀疏定义: 将权重矩阵分割为 B×B 的块,每个块要么全零要么保留。
优势:
实现细节:
块大小选择:
- GPU:通常 16×16 或 32×32
- CPU:8×8 或 16×16
- 考虑向量指令宽度
分层级稀疏设计:
在不同粒度上应用N:M稀疏:
这种分层设计可以实现更高的压缩率: \(总稀疏率 = 1 - \prod_{i=1}^{L} (N_i/M_i)\)
动态粒度选择:
根据层的特性选择合适的粒度:
渐进式增加稀疏度:
从较小的稀疏率开始,逐步增加:
Epoch 1-10: 2:4 (50稀疏)
Epoch 11-20: 2:8 (75稀疏)
Epoch 21-30: 1:8 (87.5稀疏)
渐进式策略的数学描述: \(N(t) = N_{final} + (N_{init} - N_{final}) \cdot e^{-\lambda t}\)
稀疏模式的正则化:
为了促进N:M模式的形成,可以设计特殊的正则项:
\[\mathcal{R}_{N:M} = \sum_{g \in \text{groups}} \max(0, ||g||_0 - N)^2\]这个正则项惩罚超过N个非零元素的组。
混合精度N:M稀疏:
结合量化和稀疏化:
总压缩率: \(\text{Compression} = \frac{N}{M} \times \frac{\text{bits}_{quant}}{32}\)
通用N:M加速器设计:
一个理想的N:M稀疏加速器应包含:
软件模拟和优化:
在没有专用硬件的情况下,可以通过软件优化:
CPU优化:
- SIMD指令集(AVX-512)
- 预取和缓存优化
- OpenMP并行化
GPU优化:
- Warp级别的协作
- 共享内存的使用
- 动态并行度调整
vLLM中的N:M稀疏支持:
vLLM框架在处理大语言模型时对N:M稀疏的处理:
SGLang的稀疏推理优化:
SGLang在编译时进行稀疏模式分析:
可学习的N:M配置:
使用神经架构搜索(NAS)来自动发现最优的N:M配置:
动态N:M稀疏:
根据输入内容动态调整稀疏模式: \(N(x) = f_{\theta}(\text{features}(x))\)
其中$f_{\theta}$是一个轻量级网络,预测每层的最佳N值。
模型合并通过组合多个独立训练的模型来创建一个多功能模型。
权重空间的几何视角: 神经网络的损失景观存在多个局部最优点,这些点可能通过低损失路径相连。
线性模式连接性(LMC): 给定两个模型 θ_1 和 θ_2,探索连接路径: \(θ(α) = (1-α)θ_1 + αθ_2, \quad α \in [0,1]\)
如果 $\mathcal{L}(θ(α))$ 在整个区间保持较低值,说明存在线性连接性。
损失景观的理论分析:
模式连接性的充分条件:
两个模型能够线性连接的充分条件包括:
数学上,如果两个最优点θ_1和θ_2满足: \(\lambda_{min}(H(θ_1)) > 0 \text{ 且 } \lambda_{min}(H(θ_2)) > 0\)
其中H是Hessian矩阵,λ_{min}是最小特征值,则它们更可能存在良好的线性连接。
置换对称性与对齐:
神经网络存在大量的置换对称性。对于全连接层: \(f(Wx) = f(PWP^Tx)\)
其中P是置换矩阵。模型合并前需要解决对齐问题: \(\min_P ||θ_1 - Pθ_2P^T||_F\)
这是一个二次分配问题(QAP),NP-hard,实践中使用贪心算法。
损失barrier理论:
两个模型间的损失barrier定义为: \(B(θ_1, θ_2) = \max_{α \in [0,1]} \mathcal{L}(θ(α)) - \frac{\mathcal{L}(θ_1) + \mathcal{L}(θ_2)}{2}\)
低barrier意味着更好的合并效果。研究表明,宽度越大的网络,barrier越低。
高级理论结果:
彩票假设与模型合并:
根据彩票假设,存在稀疏子网络达到完整网络的性能。模型合并可以看作寻找多个任务的”超级彩票”: \(θ_{merged} = \text{SuperTicket}(θ_1, θ_2, ..., θ_n)\)
信息瓶颈视角:
从信息论角度,模型合并保留了各任务的必要信息: \(I(θ_{merged}; Y_i) \geq I(θ_i; Y_i) - \epsilon, \forall i\)
其中Y_i是任务i的标签,ε是信息损失容忍度。
任务算术将模型能力向量化,实现灵活的能力组合。
任务向量定义: \(\tau_i = θ_{task_i} - θ_{base}\)
其中:
算术操作:
TIES-Merging算法:
修剪(Trim): 保留每个任务向量中变化最大的k%参数: \(\tilde{\tau}_i = \tau_i \odot \mathbb{1}[|\tau_i| > \text{Percentile}(|\tau_i|, 100-k)]\)
选举(Elect): 解决符号冲突: \(\text{sign}_{elected} = \text{sign}\left(\sum_i \text{sign}(\tilde{\tau}_{i,j})\right)\)
解耦合并(Disjoint Merge): 只合并符号一致的参数: \(\theta_{merged,j} = θ_{base,j} + \frac{1}{|\mathcal{A}_j|} \sum_{i \in \mathcal{A}_j} \tilde{\tau}_{i,j}\)
其中 $\mathcal{A}_j$ 是在位置j上符号与选举结果一致的任务集合。
DARE(Drop And REscale):
引入随机性提高泛化:
这保持了期望值不变:$\mathbb{E}[\tilde{\tau}] = \tau$
存储优化策略:
推理时动态组合:
if task == "translation":
θ = θ_base + τ_translation
elif task == "summarization":
θ = θ_base + τ_summarization
延迟优化:
神经网络的对称性:
神经网络存在大量的对称性,这为参数共享提供了理论基础:
模式崩塌现象:
在训练后期,模型权重往往会呈现某种模式: \(W \approx \sum_{i=1}^{r} \sigma_i u_i v_i^T\)
其中$r$远小于矩阵的秩,这表明权重矩阵是低秩的。
模型汤(Model Soup):
通过平均多个独立训练的模型来提高泛化能力:
模型缝合(Model Stitching):
将不同模型的部分组合起来:
参数共享的层级设计:
Layer_i = Layer_j (完全共享)
Layer_i = α*Layer_j + β*Layer_k (线性组合)
干扰问题:
不同任务的更新可能相互干扰:
解决方案:
正交化任务向量: \(\tau'_i = \tau_i - \sum_{j<i} \frac{\langle \tau_i, \tau_j \rangle}{||\tau_j||^2} \tau_j\)
选择性合并: 只合并不冲突的参数更新
多任务学习视角: 使用多任务学习的方法重新训练
Mistral的MoE架构:
Mistral 8x7B使用了参数共享的思想:
LoRA合并实践:
在实际使用中,LoRA合并常见的做法:
边缘设备上的实现:
手机端部署:
- 基础模型:1GB(INT4量化)
- 任务向量:每个10-50MB
- 内存要求:<2GB
- 切换延迟:<100ms
持续学习中的模型合并:
随着模型不断更新,如何高效合并新旧版本:
跨模态模型合并:
将视觉、语言、音频模型合并:
COO(Coordinate)格式: 存储三个数组:
存储开销:$O(nnz \times (2 \times \text{sizeof}(int) + \text{sizeof}(float)))$
CSR(Compressed Sparse Row)格式:
优势:行访问高效,适合矩阵-向量乘法
块稀疏格式: 将矩阵分块,只存储非零块:
深入分析各种格式的性能特性:
COO格式的优化变体:
排序COO(SCOO):
分段COO(Segmented COO):
将矩阵分为k×k的瓦片
每个瓦片独立使用COO
瓦片元数据:tile_ptr[]
优势:并行处理,更好的缓存利用
CSR/CSC的高级技巧:
双重压缩CSR(DCSR): 对于超稀疏矩阵(nnz « m×n):
混合CSR(Hybrid CSR):
密集行:直接存储所有元素
稀疏行:使用传统CSR
判断阈值:密度 > 0.5
块稀疏的变体:
可变块大小(VBS):
层级块稀疏:
Level 0: 64×64 超块
Level 1: 16×16 块
Level 2: 4×4 子块
多级索引结构
稀疏格式选择决策树:
if 稀疏率 > 90%:
if 随机分布:
使用 COO 或 DCSR
else if 块状分布:
使用块稀疏
else if 50% < 稀疏率 < 90%:
if 行访问为主:
使用 CSR
else if 列访问为主:
使用 CSC
else:
使用 2:4 结构化稀疏
else:
考虑保持密集格式
性能建模与分析:
给定稀疏矩阵A和密集向量x的乘法y = Ax:
2:4格式编码:
原始:[0.1, 0, 0, 0.3]
编码:
- 值:[0.1, 0.3]
- 索引:0b1001(二进制表示位置)
向量化友好格式: 对齐到SIMD宽度(如AVX-512的512位):
量化 + 稀疏:
聚类 + 稀疏:
高级压缩技术组合:
三元组压缩(Ternary + Sparse):
将权重量化为{-α, 0, +α}三个值: \(W_{ternary} = α \cdot \text{sign}(W) \cdot \mathbb{1}[|W| > \theta]\)
结合2:4稀疏后:
向量量化稀疏(VQ-Sparse):
对非零权重进行向量量化:
1. 将非零权重分组(如每16个)
2. 对每组进行向量量化
3. 存储码本索引 + 稀疏掩码
压缩率分析: \(\text{Bits/weight} = \frac{\log_2(K)}{G} + \frac{\text{SparsityBits}}{M}\)
其中K是码本大小,G是组大小,M是稀疏块大小。
熵编码增强:
利用稀疏模式的统计特性进一步压缩:
霍夫曼编码2:4模式:
常见模式分配短码:
[1,1,0,0] → 00
[0,0,1,1] → 01
[1,0,1,0] → 100
其他模式 → 更长编码
算术编码非零值: 基于权重分布的概率模型进行编码
联合优化框架:
同时优化稀疏性、量化和编码:
\[\min_{S,Q,C} \mathcal{L}(f(X; S(Q(W)))) + \lambda_1 \cdot R_{sparse}(S) + \lambda_2 \cdot R_{quant}(Q) + \lambda_3 \cdot R_{coding}(C)\]其中:
实际部署的存储格式设计:
稀疏量化张量格式(SQT):
Header (64 bytes):
- 维度信息
- 稀疏类型(2:4, N:M等)
- 量化参数(scale, zero_point)
- 压缩方法标识
Data Section:
- 稀疏索引(可选压缩)
- 量化值(打包存储)
- 码本(如果使用VQ)
优化特性:
- 64字节对齐
- 支持mmap直接映射
- 增量解压缩
稀疏模式缓存:
缓存结构:
- 模式ID -> 稀疏掩码
- LRU替换策略
- 预计算常见模式
增量更新: 对于在线学习场景,支持稀疏模式的增量更新: \(\mathcal{M}^{(t+1)} = \alpha \mathcal{M}^{(t)} + (1-α) \mathcal{M}_{new}\)
本章深入探讨了稀疏化和参数共享两大模型压缩技术:
2:4结构化稀疏:通过硬件-算法协同设计,实现了50%压缩率和1.3-1.7倍实际加速。其成功关键在于规则的稀疏模式使硬件能够高效跳过零计算。
N:M稀疏设计:提供了灵活的稀疏配置空间,需要在硬件复杂度、压缩率和精度间权衡。自适应和混合粒度策略可以进一步优化性能。
模型合并技术:从简单的权重平均到复杂的任务算术,提供了低成本的多任务模型构建方案。TIES-Merging和DARE等方法解决了参数冲突问题。
稀疏存储优化:不同的稀疏格式适用于不同场景,硬件友好的格式设计是实现加速的关键。量化与稀疏的结合可以达到极高的压缩率。
关键公式回顾:
| 2:4稀疏约束:$ | G_i | _0 = 2$ for each 4-element group |
2:4稀疏计算 给定权重向量 [0.5, -0.2, 0.8, -0.1, 0.3, 0.7, -0.6, 0.4],应用2:4稀疏化。计算稀疏化后的向量和所需的索引位数。
Hint: 每4个元素为一组,保留绝对值最大的2个。
稀疏存储分析 一个 1024×1024 的矩阵采用2:4稀疏,使用FP16存储。计算采用COO格式和2:4专用格式的存储需求(字节)。
Hint: 2:4格式每4个元素需要2个FP16值和3比特索引。
任务向量计算 基础模型参数 θ_base = [1.0, 2.0, 3.0],两个任务微调后的参数分别为 θ_A = [1.2, 2.1, 2.8] 和 θ_B = [0.9, 2.3, 3.1]。计算任务向量并执行任务算术 θ_base + 0.5(τ_A + τ_B)。
Hint: 先计算每个任务向量,然后进行线性组合。
N:M配置选择 对于一个要求75%稀疏率的场景,列出所有可能的N:M配置(M≤8),并计算各自的索引开销。
Hint: 稀疏率 = 1 - N/M = 0.75
混合稀疏优化 设计一个神经网络的层级稀疏方案:网络有10层,第1层和第10层对精度最敏感,中间层可以承受更高稀疏。在总体稀疏率达到60%的约束下,如何分配各层的N:M配置?
Hint: 考虑使用拉格朗日乘数法优化分配。
TIES-Merging分析 三个任务向量在某参数位置的更新分别为:τ_1 = +0.5, τ_2 = -0.3, τ_3 = +0.2。使用TIES-Merging的选举和合并策略,计算最终的参数更新。如果先应用50%的修剪阈值会如何影响结果?
Hint: 考虑符号投票和选择性平均。
稀疏模式的信息论分析 证明2:4稀疏模式的索引信息熵上界为log₂(6)比特。推广到一般的N:M稀疏,导出索引熵的公式。这对硬件设计有什么启示?
Hint: 使用组合数学和信息论基础。
动态稀疏调度 设计一个算法,在推理时根据输入的特征动态选择不同层的稀疏模式。目标是在保持精度的同时最大化吞吐量。考虑:如何快速评估每层的重要性?如何避免模式切换的开销?
Hint: 可以使用输入相关的敏感度度量,如梯度范数或激活值统计。