Yxxxb/VoCo-LLaMA

implementation of voco token

Closed this issue · 1 comments

非常感谢作者们这篇精彩的工作,有一些问题在看完文章和源码后仍十分困惑。

一开始看文章我以为voco tokens和Q-Former一样用了一组可学习的query,去抽取图像里的信息。但是我查阅源码发现并无可学习的parameter,而是定义了"<voco>"这个特殊的token。

我疑惑的是,voco token做embedding之后用什么参数代替,以我的认知只能用一组可学习参数替代(因为图像用的clip encoder也是固定的,输出img token长度不会变 )。

期待作者们的回复!如果可以烦请指出源码的位置。

你好,感谢您的关注!

VoCo token是词表中一组新的special token,他是完全随机初始化的,无需用任何可学习的参数代替。
您可以参照trainer中的代码:https://github.com/Yxxxb/VoCo-LLaMA/blob/main/llava/train/train_compress.py#L929
由于我们在训练阶段修改了attn mask,视觉信息在attn计算的时候被密集表示到了VoCo token之上,因此真正代表压缩信息的是这个VoCo token之上的transformer activations。