Windows 环境下安装 Vivim:causal-conv1d 1.0.0 与 mamba-ssm 1.0.1 完整编译安装教程

目录

一、前言

二、安装教程

1. 克隆 Github 仓库

2. 创建 Conda 环境

3. 配置 Visual Studio 编译环境

4. 安装 causal-conv1d

5. 安装 mamba-ssm

6. 运行测试脚本

三、常见 Bug 与解决方法

1. M_LOG2E is undefined

2. 模板参数不是编译期常量

3. kNRows_ 模板参数无效

4. MSVC 编译器堆空间不足

5. Windows 编译兼容问题


相关环境安装教程:Windows 环境下安装 triton、causal-conv1d 和 mamba-ssm 教程(2026最新版)-CSDN博客

一、前言

        最近在复现 Vivim 项目时,按照原作者教程在 Windows 环境下安装 causal-conv1d 1.0.0 和 mamba-ssm 1.0.1 的遇到很多问题,原版 Vivim 项目主要面向 Linux 环境,为方便 Windows 用户复现 Vivim,现将修改后的文件上传到 1552186151/Vivim-Windows-Install ,实测可稳定在 Win 10/11 环境编译,在此本文记录完整的安装教程和原项目常见安装 bug 的修复介绍。

       话不多说,GitHub 仓库地址如下,路过的小伙伴麻烦点个小星星 Star:

https://github.com/1552186151/Vivim-Windows-Install

测试环境如下,安装环境版本不必一一对应,如果编译失败在换版本

系统:Windows
IDE:PyCharm
Conda 环境:mmdet_vivim
GPU:NVIDIA RTX 4090
PyTorch:2.5.1+cu121
CUDA Runtime:12.1
Visual Studio:Visual Studio 2022 Build Tools

其中 RTX 4090 对应的 CUDA 架构是:

sm_89

如果是 RTX 30 系列,一般对应:

sm_86

如果显卡不同,后续 TORCH_CUDA_ARCH_LIST 需要相应修改。


二、安装教程

1. 克隆 Github 仓库

首先进入自己的项目目录:

cd "D:\PycharmProjects\DeepLearning"

克隆 Windows 适配仓库:

git clone https://github.com/1552186151/Vivim-Windows-Install.git

进入仓库:

cd Vivim-Windows-Install

该仓库中主要包含:

causal-conv1d
mamba
test_scripts
README.md

其中:

causal-conv1d:Mamba 所需的一维因果卷积 CUDA 扩展
mamba:Vivim 所需的 mamba-ssm 源码
test_scripts:环境测试脚本

2. 创建 Conda 环境

如果已经有一个能正常运行 PyTorch / MMDetection 的环境,可以直接克隆:

conda create -n mmdet_vivim --clone mmdet
conda activate mmdet_vivim

如果没有现成环境,也可以新建 Python 3.10 环境:

conda create -n mmdet_vivim python=3.10 -y
conda activate mmdet_vivim

安装基础依赖:

python -m pip install -U pip setuptools wheel
pip install packaging ninja timm transformers einops

检查 PyTorch 和 CUDA 是否可用:

python -c "import torch; print(torch.__version__); print(torch.version.cuda); print(torch.cuda.is_available())"

如果输出类似:

2.5.1+cu121
12.1
True

说明 PyTorch CUDA 可用,环境版本不必一一对应,如果编译失败在换版本。


3. 配置 Visual Studio 编译环境

Windows 下编译 causal-conv1dmamba-ssm 需要 MSVC 编译器。

安装过程可参考: Windows 环境下安装 triton、causal-conv1d 和 mamba-ssm 教程(2026最新版)-CSDN博客

需要安装:

Visual Studio Build Tools 2022
MSVC v143
Windows 10 SDK 或 Windows 11 SDK
C++ CMake tools for Windows

如果使用 PyCharm 的 PowerShell 终端,需要先加载 Visual Studio 编译环境:

& "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\Common7\Tools\Launch-VsDevShell.ps1" -Arch amd64 -HostArch amd64

检查 cl.exenvcc 是否可用:

where.exe cl
where.exe nvcc

如果能看到 cl.exenvcc.exe 路径,说明编译环境已经生效。

本文后续命令均以 PowerShell 为例。


4. 安装 causal-conv1d

进入 causal-conv1d 目录:

cd "D:\PycharmProjects\DeepLearning\Vivim-Windows-Install\causal-conv1d"

清理旧编译文件:

python setup.py clean

Remove-Item -Recurse -Force .\build -ErrorAction SilentlyContinue
Remove-Item -Recurse -Force .\dist -ErrorAction SilentlyContinue
Remove-Item -Recurse -Force .\*.egg-info -ErrorAction SilentlyContinue

设置编译参数:

注意:第三行命令根据显卡型号来填,RTX 20 系列:7.5 RTX 30 系列:8.6 RTX 40 系列:8.9

$env:CAUSAL_CONV1D_FORCE_BUILD="TRUE"
$env:MAX_JOBS="1"
$env:TORCH_CUDA_ARCH_LIST="8.9"
$env:CL="/Zm1000 /bigobj"

参数含义如下:

CAUSAL_CONV1D_FORCE_BUILD=TRUE:强制本地编译 causal-conv1d
MAX_JOBS=1:限制单线程编译,降低内存压力
TORCH_CUDA_ARCH_LIST=8.9:只编译 RTX 4090 对应的 sm_89 架构
CL=/Zm1000 /bigobj:增加 MSVC 编译器堆空间

执行安装:

python setup.py install

安装完成后测试:

python -c "import causal_conv1d; print('causal_conv1d OK')"

如果输出:

causal_conv1d OK

说明安装成功。


5. 安装 mamba-ssm

进入 mamba 目录:

cd "D:\PycharmProjects\DeepLearning\Vivim-Windows-Install\mamba"

清理旧编译文件:

python setup.py clean

Remove-Item -Recurse -Force .\build -ErrorAction SilentlyContinue
Remove-Item -Recurse -Force .\dist -ErrorAction SilentlyContinue
Remove-Item -Recurse -Force .\*.egg-info -ErrorAction SilentlyContinue

设置编译参数:

注意:第三行命令根据显卡型号来填,RTX 20 系列:7.5 RTX 30 系列:8.6 RTX 40 系列:8.9

$env:MAMBA_FORCE_BUILD="TRUE"
$env:MAX_JOBS="1"
$env:TORCH_CUDA_ARCH_LIST="8.9"
$env:CL="/Zm1000 /bigobj"

执行安装:

python setup.py install

安装完成后测试:

python -c "import mamba_ssm; print('mamba_ssm OK')"
python -c "from mamba_ssm import Mamba; print('Mamba class OK')"

如果输出:

mamba_ssm OK
Mamba class OK

说明 mamba-ssm 安装成功。

继续测试 CUDA 前向传播:

python -c "import torch; from mamba_ssm import Mamba; x=torch.randn(2,64,16,device='cuda'); model=Mamba(d_model=16,d_state=16,d_conv=4,expand=2).cuda(); y=model(x); print(y.shape); print('mamba cuda forward OK')"

如果输出:

mamba cuda forward OK

说明 Mamba CUDA 扩展可以正常运行。


6. 运行测试脚本

仓库中提供了测试脚本,位于 test_scripts 文件夹,回到仓库根目录:

cd "D:\PycharmProjects\DeepLearning\Vivim-Windows-Install"

测试 Triton:

python .\test_scripts\test_triton_cuda.py

测试 causal-conv1d 和 mamba-ssm:

python .\test_scripts\test_mamba_cuda.py

测试 Vivim 前向推理:

python .\test_scripts\test_vivim_forward.py

如果测试均通过,说明 Vivim 所需核心环境已经配置完成。


三、常见 Bug 与解决方法

1. M_LOG2E is undefined(error: identifier "M_LOG2E" is undefined

报错:

identifier "M_LOG2E" is undefined

原因是 Windows/MSVC 下没有默认定义 M_LOG2E 数学常量。

解决方法是在以下两个文件开头补充:

mamba\csrc\selective_scan\selective_scan_bwd_kernel.cuh
mamba\csrc\selective_scan\selective_scan_fwd_kernel.cuh

补充内容:

#ifndef M_LOG2E
#define M_LOG2E 1.4426950408889634074
#endif

本仓库已完成该修改。


2. 模板参数不是编译期常量(error C2975: “kIsVariableB_”

报错示例:

kIsVariableB_ template parameter is invalid
kIsVariableC_ template parameter is invalid
kIsEvenLen_ template parameter is invalid

原因是 Windows/MSVC 对 lambda 中的局部 constexpr bool 处理更严格。

解决方法是在:

mamba\csrc\selective_scan\static_switch.h

将 constexpr bool 修改为 static constexpr bool

本仓库已完成该修改。


3. kNRows_ 模板参数无效(error C2975: “kNRows_”

报错:

kNRows_ template parameter is invalid
expression did not evaluate to a constant

解决方法是在:

mamba\csrc\selective_scan\selective_scan_fwd_kernel.cuh

将 constexpr int kNRows = 1; 修改为 static constexpr int kNRows = 1;

本仓库已完成该修改。


4. MSVC 编译器堆空间不足(fatal error C1060: 编译器的堆空间不足

报错:

fatal error C1060: 编译器的堆空间不足

常见原因是编译架构过多,导致 CUDA 生成的中间文件过大。

解决方法:

$env:MAX_JOBS="1"
$env:TORCH_CUDA_ARCH_LIST="8.9"
$env:CL="/Zm1000 /bigobj"

如果仍然失败:

$env:CL="/Zm2000 /bigobj"

5. Windows 编译兼容问题

在 Windows 下编译 mamba-ssm 时,可能会遇到 Windows 头文件宏冲突或模板展开问题。

解决方法是在:

mamba\setup.py

中的 nvcc 参数列表里加入:

"-DWIN32_LEAN_AND_MEAN",

本仓库已完成该修改。

p.s. 若遇到以上问题,需清理旧编译文件后重新安装

cd "D:\PycharmProjects\DeepLearning\Vivim\mamba"

python setup.py clean

Remove-Item -Recurse -Force .\build -ErrorAction SilentlyContinue
Remove-Item -Recurse -Force .\dist -ErrorAction SilentlyContinue
Remove-Item -Recurse -Force .\*.egg-info -ErrorAction SilentlyContinue

$env:MAMBA_FORCE_BUILD="TRUE"
$env:MAX_JOBS="1"
$env:TORCH_CUDA_ARCH_LIST="8.9"
$env:CL="/Zm1000 /bigobj"

python setup.py install

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值