Human9000 / nd-Mamba2-torch

Only implemented through torch: "bi - mamba2" , "vision- mamba2 -torch". support 1d/2d/3d/nd and support export by jit.script/onnx;
189 stars 6 forks source link

BiMamba2Ac2d #6

Open Muzi010 opened 3 months ago

Muzi010 commented 3 months ago

感觉使用非对称卷积的这个模块,推理速度特别慢比正常的2d要慢好多倍。

Human9000 commented 3 months ago

感谢你的反馈,下面是对你问题的回答: 首先这个模块比标准卷积肯定是慢的,他用的是mamba2的双线性全局信息。 另外参数设置太大可能导致速度非常慢,这个块的d_model建议设置成64,可以使速度加快。

Muzi010 commented 3 months ago

感谢你的回答,d-model这个参数我设置的和通道数相同,这个参数是控制什么的?

Human9000 commented 3 months ago

先告诉你结论:不要设置为和通道数相同。下面是原因和建议:

这个是在mamba2里面的特征的通道数,你可以理解为mamba2隐藏层的通道数。由于mamba2还有句子长度的操作,所以这里的通道数和卷积的通道数并不是等价的。如果你在这里设置成和卷积层的相同的通道数,那么模型在深层次的高通道数层的时候速度会变得非常慢。

建议在整个网络的任意深度,该参数均设置成固定值:64的整数倍

Muzi010 commented 3 months ago

感谢你的回答,那不同的深度可以全部设置成64么?我看MLP或者transformer隐藏层的通道数要比特征通道数大,一般都是两倍。

Human9000 commented 3 months ago

可以全部设置成64,下面是原因:

在vit等transformer架构的模型中,特征层的特征通道数并不会随着深度的增加而增加,这与标准的卷积神经网络并不相同(卷积神经网络特征层越深,通道越高)。

因此同样在使用类transform模块的时候,请不要随着深度的升高而提高隐层的参数量。

PS: 如果你对参数量有要求,可以修改BiMaba2Ac2d的输出通道数(注意:请保证隐藏层的通道数是固定的64的倍数)