感谢作者的工作!我在复现 SparseVLM 时,对 Equal Tokens 的计算方式以及渐进式剪枝的超参数设置有两个疑问。
1. Equal Tokens 应该如何计算才更公平?
以开源代码中的 32-layer LLaVA 为例,pruning layers 为 [2, 6, 15]。
代码中针对不同目标 token budget 给出了多组渐进式剪枝配置,例如:
sparse_token_list_192 = [300, 200, 110] if not V2_0 else [300, 200, 118]
sparse_token_list_128 = [303, 110, 36] if not V2_0 else [238, 108, 60]
sparse_token_list_96 = [238, 48, 26] if not V2_0 else [246, 54, 28]
sparse_token_list_64 = [66, 30, 17] if not V2_0 else [66, 34, 20]
这里讨论的是 V1,也就是 SparseVLM 的配置,还不是 V2 的 SparseVLM+。
以三个 pruning stage 后的视觉 token 数分别为 a, b, c 为例,目前代码中 Equal Tokens 的计算方式相当于:
N_equal = (2 * 576 + 4 * a + 9 * b + 17 * c) / 32
也就是按照各层输出的视觉 token 数进行平均。对于代码中的相应配置,可以得到约 192 / 128 / 96 / 64 的 Equal Tokens。
但 pruning 是在当前 layer 的 attention 计算之后发生的,因此该 pruning layer 实际进行 attention 计算时使用的仍然是剪枝前的视觉 token。
如果按照各层实际输入的视觉 token 数进行平均,我理解应该改为:
N_equal = (3 * 576 + 4 * a + 9 * b + 16 * c) / 32
此时就无法再得到原先的 192 / 128 / 96 / 64。
这个问题也与 #35 中讨论的 Equal Token Number 有关。想请问:
如果希望不同 pruning 方法在相同视觉 token 计算预算下进行公平比较,Equal Tokens 使用每层输入 token 数会更加合适?
2. 给定整体 token budget 后,pruning layers 和各阶段 token budget 是如何确定的?
即使给定一个目标 Equal Tokens,例如 192,仍然存在很多可能的配置,包括:
- 选择哪些 layers 进行 pruning;
- 每个 pruning stage 保留多少 token。
想请问:
- pruning layers(如
[2, 6, 15])是按照什么原则确定的?
- 给定目标 Equal Tokens 后,各 pruning stage 的 retained token numbers 是如何确定的?是否有统一的设计原则?
- 对于动态分辨率 VLM,初始视觉 token 数会随输入图像变化,此时应该使用 retain ratios 而不是固定的 retained token numbers。对于这种情况,设计原则是怎样?
这些超参数对于将 SparseVLM / SparseVLM+ 公平地迁移到其他 VLM 上非常关键。感谢解答!
感谢作者的工作!我在复现 SparseVLM 时,对
Equal Tokens的计算方式以及渐进式剪枝的超参数设置有两个疑问。1. Equal Tokens 应该如何计算才更公平?
以开源代码中的 32-layer LLaVA 为例,pruning layers 为
[2, 6, 15]。代码中针对不同目标 token budget 给出了多组渐进式剪枝配置,例如:
这里讨论的是 V1,也就是 SparseVLM 的配置,还不是 V2 的 SparseVLM+。
以三个 pruning stage 后的视觉 token 数分别为
a, b, c为例,目前代码中 Equal Tokens 的计算方式相当于:也就是按照各层输出的视觉 token 数进行平均。对于代码中的相应配置,可以得到约
192 / 128 / 96 / 64的 Equal Tokens。但 pruning 是在当前 layer 的 attention 计算之后发生的,因此该 pruning layer 实际进行 attention 计算时使用的仍然是剪枝前的视觉 token。
如果按照各层实际输入的视觉 token 数进行平均,我理解应该改为:
此时就无法再得到原先的
192 / 128 / 96 / 64。这个问题也与 #35 中讨论的 Equal Token Number 有关。想请问:
如果希望不同 pruning 方法在相同视觉 token 计算预算下进行公平比较,Equal Tokens 使用每层输入 token 数会更加合适?
2. 给定整体 token budget 后,pruning layers 和各阶段 token budget 是如何确定的?
即使给定一个目标 Equal Tokens,例如
192,仍然存在很多可能的配置,包括:想请问:
[2, 6, 15])是按照什么原则确定的?这些超参数对于将 SparseVLM / SparseVLM+ 公平地迁移到其他 VLM 上非常关键。感谢解答!