Windows安装mamba全流程(全网最稳定最乐成)

打印 上一主题 下一主题

主题 452|帖子 452|积分 1356

  windows体系下安装mamba会遇到各种各样的题目。博主试了好几天,把能踩的坑都踩了,总结出了在windows下安装mamba的一套方法,已经给实验室的windows服务器都装上了。只要跟着我的流程走下来,大概率不会出题目,假如遇到其他题目,可以在评论区讨论,我会的我会复兴。
  紧张的流程步骤是参考这篇文章,并对其中遇到的题目进行改进。
  起首创建mamba的环境,然后安装必要的库。请你创建一个新环境,而不是用以前的环境,版本这些就跟着这个里面来。
  1. conda create -n your_env_name python=3.10.13
  2. conda activate your_env_name
  3. conda install cudatoolkit==11.8 -c nvidia
  4. pip install torch==2.1.1 torchvision==0.16.1 torchaudio==2.1.1 --index-url https://download.pytorch.org/whl/cu118
  5. conda install -c "nvidia/label/cuda-11.8.0" cuda-nvcc
  6. conda install packaging
复制代码
  接下来安装 triton包:有大神编译了Windows下二进制文件,在这里下载,下载到本地后,在命令行你的环境下,切换到tritan所在文件夹,输入
  1. pip install triton-2.0.0-cp310-cp310-win_amd64.whl
复制代码
  做完这些之后,现在检查的电脑上的CUDA版本,请看这篇文章,要确定你电脑上的CUDA和你体系环境里面的路径跟他描述的是同等的,而且是11.8,假如不同等,就跟着他的操作流程重新安装CUDA和cudnn。
  进行完这一步后,假如你现在直接安装causal-conv1d,大概率会报这个错误:

  这里有两个原因,一个是我上面提到的电脑上安装的CUDA的题目,安装的不对,假如这一步是对的,那就是VisualStudio的原因,要不你根本就没装VS,假如装了,仔细看报错的细节,你大概率会找到:

  这是由于你安装的VS版本可能太新了,CUDA不支持,现在VS官网上面直接下载的2022版本就是不支持的,发起安装2019版本,整个都是支持的,官网直接上去已经不能下载老版本了,我找到了一个地方,2019版本下载,这里面可以下载2019版本的,没有社区版,不外我们不必要一定是社区版,由于我们不用它,只要安装了那个环境就可以,我下的是专业版,然后按这个教程,他打勾的你打勾,安装完就行了。
现在我们开始安装causal-conv1d,照旧在命令行,跟这个代码:
  1. git clone https://github.com/Dao-AILab/causal-conv1d.git
  2. cd causal-conv1d
  3. git checkout v1.1.1 # current latest version tag
  4. pip install .
复制代码
  安装完causal-conv1d之后,再安装mamba,起首下载mamba并调解版本:
  1. cd..
  2. git clone https://github.com/state-spaces/mamba.git
  3. cd mamba
  4. git checkout v1.1.1
复制代码
  然后修改mamba文件夹里的源码,请在mamba官方代码中setup.py文件修改配置:
  1. FORCE_BUILD = os.getenv("MAMBA_FORCE_BUILD", "FALSE") == "FALSE"
  2. SKIP_CUDA_BUILD = os.getenv("MAMBA_SKIP_CUDA_BUILD", "FALSE") == "FALSE"
复制代码
  然后在mamba_ssm/ops/selective_scan_interface.py该文件中注释掉:
  1. import selective_scan_cuda
复制代码

  1. def selective_scan_fn(u, delta, A, B, C, D=None, z=None, delta_bias=None, delta_softplus=False,
  2.                      return_last_state=False):
  3.     """if return_last_state is True, returns (out, last_state)
  4.     last_state has shape (batch, dim, dstate). Note that the gradient of the last state is
  5.     not considered in the backward pass.
  6.     """
  7.     return SelectiveScanFn.apply(u, delta, A, B, C, D, z, delta_bias, delta_softplus, return_last_state)
  8. def mamba_inner_fn(
  9.     xz, conv1d_weight, conv1d_bias, x_proj_weight, delta_proj_weight,
  10.     out_proj_weight, out_proj_bias,
  11.     A, B=None, C=None, D=None, delta_bias=None, B_proj_bias=None,
  12.     C_proj_bias=None, delta_softplus=True
  13. ):
  14.     return MambaInnerFn.apply(xz, conv1d_weight, conv1d_bias, x_proj_weight, delta_proj_weight,
  15.                               out_proj_weight, out_proj_bias,
  16.                               A, B, C, D, delta_bias, B_proj_bias, C_proj_bias, delta_softplus)
复制代码
改为
  1. def selective_scan_fn(u, delta, A, B, C, D=None, z=None, delta_bias=None, delta_softplus=False,
  2.                      return_last_state=False):
  3.     """if return_last_state is True, returns (out, last_state)
  4.     last_state has shape (batch, dim, dstate). Note that the gradient of the last state is
  5.     not considered in the backward pass.
  6.     """
  7.     return selective_scan_ref(u, delta, A, B, C, D, z, delta_bias, delta_softplus, return_last_state)
  8. def mamba_inner_fn(
  9.     xz, conv1d_weight, conv1d_bias, x_proj_weight, delta_proj_weight,
  10.     out_proj_weight, out_proj_bias,
  11.     A, B=None, C=None, D=None, delta_bias=None, B_proj_bias=None,
  12.     C_proj_bias=None, delta_softplus=True
  13. ):
  14.     return mamba_inner_ref(xz, conv1d_weight, conv1d_bias, x_proj_weight, delta_proj_weight,
  15.                               out_proj_weight, out_proj_bias,
  16.                               A, B, C, D, delta_bias, B_proj_bias, C_proj_bias, delta_softplus)
复制代码
然后再
  1. pip install .
复制代码
  假如你是按照我的流程一步一步来的,到这里应该就会乐成了:


  有两个题目,第一,你不能直接pip install .
,必须先调解版本,假如你安装的mamba和causal-conv1d版本是不对应的,运行时会有这个报错:
  1. File "/home/xxx/.conda/envs/mamba/lib/python3.10/site-packages/mamba_ssm/ops/selective_scan_interface.py", line 187, in forward
  2.     conv1d_out = causal_conv1d_cuda.causal_conv1d_fwd(
  3. TypeError: causal_conv1d_fwd(): incompatible function arguments. The following argument types are supported:
  4.     1. (arg0: torch.Tensor, arg1: torch.Tensor, arg2: Optional[torch.Tensor], arg3: Optional[torch.Tensor], arg4: bool) -> torch.Tensor
  5. Invoked with: tensor(
  6.         [-4.9056e-40, -4.9057e-40, -4.9074e-40, -4.9078e-40]], device='cuda:0',
  7.        requires_grad=True), Parameter containing:
  8. tensor([ 0.0322, -0.1139,  0.0770,  ..., -0.0320, -0.1266, -0.1096],
  9.        device='cuda:0', requires_grad=True), None, None, None, True
复制代码
  第二个题目,乐成安装之后,你可能会遇到这个报错:

  这似乎是源码本身的逻辑题目,题目标原因是原始代码的函数输入缺少“seq_idx”,这会导致传入激活函数“silu”的名称被视为“seq_idx”,我的解决方法是添加“seq_idx=None“,如许就可以运行了。
  之前我有利用本身修改的一个mamba的简朴实现版本,用上之后跑的很慢,我才来装mamba,但是装完之后发现这个官方的库在windows上运行一样很慢,还没找到原因,不外好赖是能使了。
  给出一套测试代码:
  1. import torch
  2. from mamba_ssm import Mamba
  3. batch, length, dim = 2, 64, 16
  4. x = torch.randn(batch, length, dim).to("cuda")
  5. model = Mamba(
  6.     # This module uses roughly 3 * expand * d_model^2 parameters
  7.     d_model=dim, # Model dimension d_model
  8.     d_state=16,  # SSM state expansion factor
  9.     d_conv=4,    # Local convolution width
  10.     expand=2,    # Block expansion factor
  11. ).to("cuda")
  12. y = model(x)
  13. assert y.shape == x.shape
  14. print('success')
复制代码
  安装乐成,出去吃顿好的犒劳下本身~

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

诗林

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表