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;
120 stars 3 forks source link

关于mamba2 #1

Open PandaS-1999 opened 1 month ago

PandaS-1999 commented 1 month ago

作者你好,我看了你的代码,发现你并没有用到mamba_ssm这个函数库,所以我比较疑惑,你的这个BiMamba2与官方的Mamba2作用和效果是一样的吗,还是说有所区别呢?如果用了你这个,是不是意味着我不再需要在虚拟机上配置环境了呢?还望告知,有劳了

Human9000 commented 1 month ago

非常开心能收到你的提问。因为我是用的mamba2 ,而mamba2 使用的技术是mamba_ssd,我这里使用到的是mamba官方的纯torch实现,不依赖mamba_ssm的实现。

这里是官方实现的简易版https://github.com/state-spaces/mamba/blob/main/mamba_ssm/modules/ssd_minimal.py

同时有git大佬将其相关依赖提取成了单文件 “https://github.com/tommyip/mamba2-minimal

据描述,这是一种简易的torch实现,速度会比cuda编程的速度慢一些,但精度没有太大的差别。你可以直接使用这里的环境,或者你如果想要更快的速度,也可以采用官方的环境,只需要调用Mamba类即可。该项目实现的目的,就是为了可以便捷的嵌入到你现有的模型中,进行创新实验。

因此如果你没有部署需求的话,可以直接采用本项目中的模块,作用和效果是一致的。

如果你觉得本项目也还可以的话,请帮忙点点星星,让更多的人看到它,谢谢你!

PandaS-1999 commented 4 weeks ago

非常感谢你的回复。我最近在使用mamba2时,虽然成功跑通了,但不免有一些困惑的地方。 首先是输入的size,你在知乎上提示的size是(batch,channel,length),那么mamba2的d_model就应该等于length才对,但我对图像进行分块处理后,大小是(batch,length,channel),而且length是小块的H*W,是无法保证为64的倍数的,反而channel是可以保证的。 其次是Mamba2类的一个初始化参数chunk_size,我不是很理解它的作用,只是看到使用的时候需要用length//chunk_size,因此我把它设置为了与length相等(我这里是49),不知道我这样处理是否正确。 最后,我目前暂时只使用Mamba2这个模块,如果后续我想要使用VMAMBA2Block,输入的参数num_heads、linear_attn_duality、ssd_chunk_size我是否需要做出相应的调整呢(原谅我对它们充当的作用不是很了解) 如果你能在百忙中解答我的疑惑,我将不甚感激!祝好