Record#
本周工作#
- 超参数实验
- 注意力图重绘制
- 通用方法
超参数实验#
llm 给定不同的压缩率#
llm 17 层进行剪枝
前置视觉保留率 60% ,音频保留率 80%,进入 llm 前相较于初始 token 数目,总体保留率为 67%
llm 保留率:llm 内部剪枝保留比例 总体保留率:llm 剪枝层后 token 数 / 初始 token 数目
| llm 保留率 | FLOPs(T) | overall_accuracy | 剪枝层总体保留率 |
|---|---|---|---|
| 100% | 81.70 | 41.80 | 67% |
| 70% | 74.92 | 41.27 | 46.9% |
| 50% | 70.34 | 41.42 | 33.5% |
| 30% | 65.76 | 41.17 | 20.1% |
Full tokens:
- FLOPs(T): 100.77
- overall_accuracy:41.80
LLM 保留率 100%, 也就是只进行前面的处理,视觉保留率 60% ,音频保留率 80%,此时和 full token 效果相同,不过只是总的准确率相同。
full token 效果:
INFO - Overall Accuracy: 0.4180 (1326/3172)
INFO -
Accuracy by Domain:
INFO - Music: 0.3941 (160/406)
INFO - Culture & Politics: 0.4887 (151/309)
INFO - Tech & Science: 0.4694 (230/490)
INFO - Daily Life: 0.4179 (275/658)
INFO - Film & TV: 0.4090 (155/379)
INFO - Sports: 0.3721 (160/430)
INFO - Performance: 0.3858 (103/267)
INFO - Games: 0.3948 (92/233)
LLM 保留率 100%:
INFO - Overall Accuracy: 0.4180 (1326/3172)
INFO -
Accuracy by Domain:
INFO - Music: 0.4163 (169/406)
INFO - Culture & Politics: 0.4887 (151/309)
INFO - Tech & Science: 0.4694 (230/490)
INFO - Daily Life: 0.4058 (267/658)
INFO - Film & TV: 0.4090 (155/379)
INFO - Sports: 0.3721 (160/430)
INFO - Performance: 0.3783 (101/267)
INFO - Games: 0.3991 (93/233)plaintextllm 不同层剪枝#
| layers | FLOPs(T) | overall_accuracy |
|---|---|---|
| 0 | 62.37 | 39.19 |
| 9 | 66.85 | 39.75 |
| 16 | 70.34 | 41.42 |
| 18 | 71.33 | 41.36 |
注意力图重绘制#
- 不同层注意力对各模态的关注程度

K 是 video / audio / text 三类 token
Q 是所有 token
该层中,平均一个 query,会把多少注意力分给某类 key token
- 前几层(0~2 左右)绿线 Audio 很高,模型在早期层对音频 token 的读取更强。
- 中间层(大约 10~25)红线 Video 明显更高,模型中层主要在利用视频 token 信息进行融合与理解。
- 后几层(尤其 31~33)蓝线 Text 突然大幅上升,临近输出答案时,模型开始更依赖文本 token(题干、选项、指令模板等)来做最终决策与输出。

或许在第 5-8 层也可以做一次剪枝?
- 各模态 token 不同层变化剧烈程度

纵轴:同一类 token 在两层之间隐藏状态的平均余弦相似度
值越接近 1 说明这类 token 经过这一层后变化越小;值越低说明这一层对这类 token 的变换更明显,表征更新更强
前面大多数层的相似度都很高,基本在 0.9~0.99,说明模型相邻层之间总体是“渐进式更新”,不是每层都大改。
Video 线整体最高、最平稳,视频 token 的表征在大多数层间变化相对更小。
Audio 和 Text 在前中段有几次更明显下探,尤其大约在 9~13 附近,说明这些层对音频/文本信息做了更强的重整或融合。
中后段三条线又回到 0.94~0.96 左右并较平稳,模型在这些层的表示更新幅度又变小了,趋于稳定。

各模态 token 的余弦相似度 < 0.9 的数目,数目越大说明这一层这类 token 的变换越大。
- 各层中音视频 token 之间注意力的变化


-
v2a_scores : Video token 作为 Q 时,对 Audio token 作为 K 分配了多少注意力
-
a2v_scores : Audio token 作为 Q 时,对 Video token 作为 K 分配了多少注意力
-
V→A Attention :视频 token 在更新自己时,看了多少音频 token
-
A→V Attention :音频 token 在更新自己时,看了多少视频 token
确定 llm 内部剪枝层:通用方法#
用少量样本统计相邻层音视频 token hidden state 的平均余弦相似度,将 作为变化强度 。通过阈值找到第一个波动区间,并在其后寻找 连续多层维持低值的平静区间 。在平静区间内,选择音视频 token 作为 Key 接收注意力达到一定阈值的最早层作为 LLM 内部剪枝层。
变化强度#
对第 层到 层,相邻层变化强度定义为
- 表示音频+视频 token 的集合
- 越大,说明这一层变化更剧烈。图里“余弦更低/低于阈值更多”的层就对应 的峰。
用 配合阈值来确定寻找发生显著变化的层,定义为波动区间
平静区间:波动区间之后, 连续 (=3)层都低于一个稳定阈值 :
音视频 token 收到的注意力较高#
音视频 token 作为 K 被看得多
- 是所有 query token
- 是对 head 平均后的 attention。
最终选层#
先得到平静区间 ,选平静区间内最早满足注意力阈值的最早层
一些尝试#
在进入 llm 前的视频侧,之前是 keep_ratio 固定的,现在改成 chunk 内总的 keep_ratio 固定, 对于单帧的预算分配按照信息量自适应分配
对每帧计算信息量分数
-
空间复杂度
spatial_t:帧内 token 离散程度(画面丰富度)mu = mean(tok)spatial = mean( ||tok - mu||^2 )
-
时间变化复杂度
temporal_t:与上一帧的平均变化(运动/事件变化)sim = (normalize(curr) * normalize(prev)).sum(dim=1)(逐 token 对齐的余弦相似度)temporal = mean(1 - sim)- 没有上一帧则
temporal_t= 0
-
信息量分数
score_t = lambda * spatial_t + (1 - lambda) * temporal_t
lambda 越大越偏向帧内复杂度,越小越偏向帧间变化
归一化分数后作为权重分配预算即可
效果:
lambda = 0.5, 2 fps
| Model | overall_accuracy |
|---|---|
| with LLM | 41.96 |
| with LLM + new | 41.55 |
简单尝试,效果反而变差了,可能是 lambda 设置的不合理,感觉时间冗余应该比空间冗余分配更少的预算,因为视频大部分是高度时间冗余的,而空间冗余相对较小,应该给时空冗余更激进的压缩,和更少的 token 预算。