Windows 下 VMamba 安装教程(无需更改base环境中的cuda版本且可加快) ...

打印 上一主题 下一主题

主题 902|帖子 902|积分 2706

导航



  • Linux下Mamba 及 Vim 安装题目参看本人之前博客:Mamba 环境安装踩坑题目汇总及解决方法
  • Windows 下 Mamba 的安装参看本人之前博客:Window 下Mamba 环境安装踩坑题目汇总及解决方法 (无需绕过selective_scan_cuda)
  • Window 下 Vim 环境安装参考本人之前博客:Window 下 Vim 环境安装踩坑题目汇总及解决方法
  • Linux 下VMamba 安装教程参看本人之前博客:VMamba 安装教程(无需更改base环境中的cuda版本)

  
配景

近来有不少小伙伴在 Linux 上安装 Vmamba (VMamba: Visual State Space Model)时,按照官方的安装下令会遇到各种各样的错误,Linux 版本的题目可参考本人之前的博客——Vmamba 安装教程(无需更改base环境中的cuda版本),本篇主要聚焦于 Windows 下 Vmamba 环境的安装,主要参考 issue。(安装题目 / 资源自取 / 论文合作想法请加主页wx)注意,Mamba 和 Vmamba 的环境安装步骤是不同的,请加以区分。
Windows 下环境准备


  • 运行之前需要下载好 Vmamba 官方的源码,用 git 下载方式如下:
  1. git clone https://github.com/MzeroMiko/VMamba.git
  2. cd VMamba
复制代码

  • 前期环境准备,同原来博客 “Window 下Mamba 环境安装踩坑题目汇总及解决方法 (无需绕过selective_scan_cuda)” ,具体为:
  1. conda create -n mamba python=3.10
  2. conda activate mamba
  3. conda install cudatoolkit==11.8
  4. pip install torch==2.1.1 torchvision==0.16.1 torchaudio==2.1.1 --index-url https://download.pytorch.org/whl/cu118
  5. pip install setuptools==68.2.2
  6. conda install nvidia/label/cuda-11.8.0::cuda-nvcc_win-64
  7. conda install packaging
  8. pip install triton-2.0.0-cp310-cp310-win_amd64.whl  # 安装 mamba 必须,Vmamba可不用
复制代码
其中 triton 包是安装 mamba 必须,Vmamba可不消,Windows下triton 2.0.0 的whl下载链接为:hugging-face | 国内镜像,triton 2.1.0 版本的下载链接。

  • 安装 Vmamba 其他必须包,只留最后一步编译
  1. pip install -r requirements.txt
  2. cd kernels/selective_scan
复制代码
Windows 下 selective_scan 的编译



  • 将kernels/selective_scan/csrc/selective_scan/static_switch.h 的 BOOL_SWITCH 函数改为
  1. #define BOOL_SWITCH(COND, CONST_NAME, ...)                                           \
  2.     [&] {                                                                            \
  3.         if (COND) {                                                                  \
  4.             static constexpr bool CONST_NAME = true;                                        \
  5.             return __VA_ARGS__();                                                    \
  6.         } else {                                                                     \
  7.             static constexpr bool CONST_NAME = false;                                       \
  8.             return __VA_ARGS__();                                                    \
  9.         }                                                                            \
  10.     }()
复制代码
这一步是将 constexpr 改为 static constexpr。


  • 在如下文件
    kernels/selective_scan/csrc/selective_scan/cus/selective_scan_bwd_kernel.cuh
    kernels/selective_scan/csrc/selective_scan/cus/selective_scan_fwd_kernel.cuh
    kernels/selective_scan/csrc/selective_scan/cusoflex/selective_scan_bwd_kernel_oflex.cuh
    kernels/selective_scan/csrc/selective_scan/cusoflex/selective_scan_fwd_kernel_oflex.cuh
    开头加入:
  1. #ifndef M_LOG2E
  2. #define M_LOG2E 1.4426950408889634074
  3. #endif
复制代码


  • 完成上述修改后,执行 pip install . 一样平常即可顺利编译,乐成安装。
  • 本人编译好的Windows 下的whl 也有:selective-scan-0.0.2 ,可直接下载安装或联系主页vx自取。利用 whl 安装下令为:
  1. pip install selective-scan-0.0.2-cp310-cp310-win-amd64.whl
复制代码
Windows 下 selective_scan 的编译出现的题目和解决(20240714)

0. 基本报错

当编译中遇到恣意错误时,均会输出下图所示的提示:

内容上即:
  1. Building wheels for collected packages: selective-scan
  2.         Building wheel for selective-scan(setup.py)... error
  3.         error:subprocess-exited-with-error
  4.        
  5.         python setup.py bdist_wheel did not run successfully.
  6.         exit code:1
  7.                 [172 lines of output]
  8.                 No CUDA runtime is found, using CUDA_HOME='E:\Anaconda\vmamba'
  9.                 torch._version=2.1.1+cu118
  10.                
  11.                 CUDA HOME = E:\Anaconda\vmamba
  12.                
  13.                 CUDA version :11.8
  14.                 running bdist_wheel
  15.                 running build
  16.                 running build_ext
  17.                 E: \Anaconda\vmamballib\site-packages(torch\utilscpp_extension.py:383: UserWarning: Error checking compiler versioforcl:[WinError2]系统找不到指定的文件。
  18.                         warnings.warn(f'Error checking compiler version for {compiler}: {error}')
  19.                 building 'selective scan cudaoflex'extension
  20.                 creating E:\Desktop\ToDo\VMambalkernels\selective_scan\build
  21.                 creating E:\Desktop\ToDo\VMamba\kernels\selective_scan\build\temp.win-amd64-cpython-310
复制代码
注意:此处的报错信息不包罗有价值的信息,应该往下找真正的报错 error (非 warning)。
1. error: identifier “M_LOG2E” is undefined

在Windows下会出现如下报错:

出现这种环境的原因,可参考 issue:
   Note for the owners: The reason for needing #define is stated here: https://stackoverflow.com/a/56974843:
“On windows it is using the Microsoft compiler for that. So the Microsoft compiler is correct to disallow VLA, and there is no way to avoid this AFAIK. Your code works on linux, because on linux nvcc uses the g++ host compiler, and it allows (in a non-standard-compliant way) the use of a VLA in C++ host code.”
  因此,只需在四个文件下加入以下代码即可
  1. #ifndef M_LOG2E
  2. #define M_LOG2E 1.4426950408889634074
  3. #endif
复制代码
具体文件和步骤参看前一节。
2. error C2975: “kDeltaSoftplus_”

在Windows下会出现如下大量报错:
  1. error C2975: “kDeltaSoftplus_”:“Selective_Scan_bwd_kernel_traits”的模板参数无效,应为编译时常量表达式
复制代码
如下图所示:

只需把static_switch.h 函数里的 constexpr 改为 static constexpr,参考 issue。具体步骤参看前一节。
20240715 更新

3. fatal error C1083: 无法打开包括文件:“cuda_runtime.h”

如果遇到下面的错误:

表现为 fatal error C1083: 无法打开包括文件:“cuda_runtime.h”: No such file or directory :
  1. E:\VNambalkernels\selective _scan csrc selective _scan cusoflex selective_scan_core_bwd.cu: fatal error C1083:无法打开包括文件:“cuda_runtime.h”: No such file or directory
复制代码
参考本人之前博客:VMamba 安装教程(无需更改base环境中的cuda版本),解决方案为:
  1. conda install nvidia/label/cuda-11.8.0::cuda-cudart-dev  # 根据CUDA版本
复制代码
4. fatal error C1189: # error: unsupported Microsoft Visual Studio version!

如遇到以下错误:

具体为fatal error C1189: #error: -- unsupported Microsoft Visual Studio version! :
  1. E:\Anaconda\vmambalincludecrt/host_config.h(153): fatal error C1189: #error:        -- unsupported Microsoft Visual Studio version! Only the versions between 2017 and 2022 (inclusive) aresupported! The nvcc flag '-allow-unsupported-compiler' can be used to override this version check; however, using an unsupported host compiler may cause compilation failure or incorrect run time execution. Use at your own risk.
复制代码
此类报错只是一连串报错的结果,不包罗有效的报错信息,应该在其前面寻找真正的报错原因。
5. fatal error C1083: 无法打开包括文件: “cusparse.h”

如果遇到以下报错:

表现为 fatal error C1083: 无法打开包括文件: “cusparse.h”: No such file or directory :
  1. E:\Anaconda\vmanba liblsite-packagesitorch include Aen/cuda/cuDAcontext.h(6): fatal eror C1083: 无法打开包括文件:“cusparse,h”; No such file or directory
复制代码
这个题目同Linux下的错误,可参考本人之前博客:VMamba 安装教程(无需更改base环境中的cuda版本):
  1. conda install nvidia/label/cuda-11.8.0::libcusparse-dev   # 根据CUDA版本
复制代码
类似地,如果遭遇到


  • fatal error C1083: 无法打开包括文件: “cublas_v2.h”: No such file or directory
  • fatal error C1083: 无法打开包括文件: “cusolverDn.h”: No such file or directory
  • fatal error C1083: 无法打开包括文件: “crypt.h”: No such file or directory
    等报错,均可参考本人之前博客:VMamba 安装教程(无需更改base环境中的cuda版本)。
6. 正常安装 Vmamba 找不到找不到 selective_scan_cuda 模块

VMamba 中遇到selective_scan_cuda 模块


  • No module named 'selective_scan_cuda'
VMamba 的代码和 Mamba 是独立的,如果想有 selective_scan_cuda 包,则需要安装 mamba_ssm,参考之前博客:


  • Linux:Mamba 环境安装踩坑题目汇总及解决方法
  • Windows :Window 下Mamba 环境安装踩坑题目汇总及解决方法 (无需绕过selective_scan_cuda)
注意,mamba 的这个包在Vmamba内里不是必须的。
7. 无法导入selective_scan_cuda_oflex和selective_scan_cuda_core模块

这是由于安装的是Mamba 而不是 VMamba,Mamba 安装乐成后环境中本来就没有selective_scan_cuda_oflex和selective_scan_cuda_core模块,请按Vmamba 准确的顺序安装 Vmamba的环境。
8. 正常安装 Vmamba 找不到 selective_scan_cuda_core 模块

除了selective_scan_cuda_core 模块,还有可能找不到 selective_scan_cuda_nrow 模块,这是由于在编译 selective_scan 时,在 setup.py 第40行选用的模式只有 [‘oflex’]
  1. MODES = ["oflex"]
  2. # MODES = ["core", "ndstate", "oflex"]
  3. # MODES = ["core", "ndstate", "oflex", "nrow"]
复制代码
改为:
  1. MODES = ["core", "oflex"]
  2. # MODES = ["core", "ndstate", "oflex"]
  3. # MODES = ["core", "ndstate", "oflex", "nrow"]
复制代码
修改此处再编译即可。注意,该模块也不是必须的。而ndstate 在最新代码中源文件已经被删除,默认模式即可,不需要修改,不做深入研究无须要安装这个包。
Win 下面编译好的 whl 为:selective-scan-0.0.2-cp310-cp310-win-amd64.whl (包罗core),selective_scan_cuda_core 模块为:selective-scan-cuda-core.cp310-win-amd64.pyd。

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

本帖子中包含更多资源

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

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

傲渊山岳

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

标签云

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