Windows 环境下安装 triton、causal-conv1d 和 mamba-ssm 教程

目录

一、前言

二、安装教程

[1.安装 NVIDIA 驱动](#1.安装 NVIDIA 驱动)

[2.安装 Visual Studio Build Tools 2022](#2.安装 Visual Studio Build Tools 2022)

3.添加环境变量

[4.创建 Conda 环境](#4.创建 Conda 环境)

5.下载安装包

[6.安装 Triton 3.1.0](#6.安装 Triton 3.1.0)

[7.编译安装 causal-conv1d 1.4.0](#7.编译安装 causal-conv1d 1.4.0)

[8.编译安装 mamba-ssm 2.2.2](#8.编译安装 mamba-ssm 2.2.2)

9.最终验证

三、常见问题


一、前言

最近在 Windows 平台上配置 Vivim、Mamba2、VMamba 等项目时,遇到了 mamba-ssm、causal-conv1d 和 triton 安装问题。原版 mamba-ssm 及相关依赖主要面向 Linux 环境,在Windows 下无法直接通过 pip install 安装。

整理部分文章的 Windows Mamba 安装方案,并结合本人实际配置过程,大幅化简安装流程。本文使用的本地安装包已经整理到 GitHub 仓库,https://github.com/1552186151/mamba2_for_windows,路过的小伙伴麻烦点个小星星 Star:

复制代码
https://github.com/1552186151/mamba2_for_windows

本教程主要安装以下三个核心依赖:

复制代码
triton 3.1.0
causal-conv1d 1.4.0
mamba-ssm 2.2.2

二、安装教程

1.安装 NVIDIA 驱动

先确认显卡驱动正常,打开 cmd 命令行窗口,输入nvidia-smi,如果能看到 GPU 型号、驱动版本、CUDA 支持信息,说明驱动正常。推荐安装 CUDA 12.4,实测 12.1 也不影响后续安装,若目前已安装先忽略 CUDA 版本。

CUDA 下载链接:CUDA Toolkit Archive | NVIDIA Developer

详细安装教程移步到本人另篇博客:【2023最新方案】安装CUDA,cuDNN,Pytorch GPU版并解决torch.cuda.is_available()返回false等问题_torch cuda-CSDN博客

2.安装 Visual Studio Build Tools 2022

Windows 编译 mamba-ssm 和 causal-conv1d 需要 MSVC 编译器。

Visual Studio Installer 下载链接:https://aka.ms/vs/17/release/vs_BuildTools.exe

安装完成后,打开 Visual Studio Installer 。如果界面中已经显示 Visual Studio 生成工具 2022 ,说明 Build Tools 已安装成功。点击右侧的 "修改(M)" 按钮,切换到 "单个组件" 页面。

搜索 MSVC v143 并勾选以下组件 MSVC v143 - VS 2022 C++ x64/x86 生成工具

搜索 Windows 11 SDK / Windows 10 SDK 选择版本号较大的 SDK 即可。

建议至少勾选以下组件:

MSVC v143 - VS 2022 C++ x64/x86 build tools

Windows 10 SDK 或 Windows 11 SDK

C++ CMake tools for Windows

MSBuild tools

勾选完成后点击右下角的 "修改""下载时安装",等待安装完成。

3.添加环境变量

右键 此电脑属性高级系统设置环境变量 ,在 系统变量 中修改或新建以下变量。

修改 Path

选择系统变量中的 Path,点击 编辑,新增以下两项:

C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.44.35207\bin\Hostx64\x64

C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x64
新建或修改 LIB

如果系统变量中没有 LIB,点击 新建 ;如果已有,则点击 编辑 。添加以下三项:

C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.44.35207\lib\x64

C:\Program Files (x86)\Windows Kits\10\Lib\10.0.26100.0\ucrt\x64

C:\Program Files (x86)\Windows Kits\10\Lib\10.0.26100.0\um\x64
新建或修改 INCLUDE

如果系统变量中没有 INCLUDE,点击 新建 ;如果已有,则点击 编辑。添加以下六项:

C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.44.35207\include

C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt

C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um

C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\winrt

C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\cppwinrt

C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared

上面的路径中有两个版本号 14.44.35207 和 10.0.26100.0

!!! 注意版本号要按本机实际情况修改 !!!

关闭当前终端,重新打开 cmd 命令行窗口,输入 where clwhere nvcc,用来分别确认 MSVC 编译器是否可用, CUDA 编译器是否可用。

4.创建 Conda 环境

建议新建一个独立环境,不要直接安装到已有项目环境中。

复制代码
conda create -n mamba2 python=3.10 -y
conda activate mamba2

升级 pip:

复制代码
python -m pip install --upgrade pip

安装 PyTorch 2.4.1 + cu124:

复制代码
pip install torch==2.4.1 torchvision==0.19.1 torchaudio==2.4.1 --index-url https://download.pytorch.org/whl/cu124

安装 CUDA 编译相关包:

复制代码
conda install nvidia/label/cuda-12.4.0::cuda-nvcc -y
conda install nvidia/label/cuda-12.4.0::cuda-cccl -y

安装基础编译依赖:

复制代码
pip install ninja
pip install setuptools==68.2.2
pip install wheel
pip install einops transformers packaging

检查 PyTorch 和 CUDA:

复制代码
python -c "import torch; print(torch.__version__); print(torch.version.cuda); print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0))"
nvcc --version

正常情况下应看到类似:

复制代码
2.4.1+cu124
12.4
True
NVIDIA GeForce RTX ...

本人实测 torch 2.5.1+cu121 也能正常安装,所以若已安装pytorch先不管版本问题。

5.下载安装包

进入项目目录,例如:

复制代码
cd "D:\PycharmProjects\DeepLearning"

克隆本仓库:

复制代码
git clone https://github.com/1552186151/mamba2_for_windows.git
cd "D:\PycharmProjects\DeepLearning\mamba2_for_windows" 
6.安装 Triton 3.1.0

Windows 下不能直接安装 Linux 版 Triton,需要安装仓库中提供的 Windows wheel:

复制代码
pip install .\triton-3.1.0\triton-3.1.0-cp310-cp310-win_amd64.whl

验证 Triton:

复制代码
python .\test_scripts\triton_test.py

如果安装正常,会输出 PyTorch、Triton、CUDA、GPU 信息

如果之前误装过其他版本 Triton,可以先卸载:

复制代码
pip uninstall -y triton

然后重新安装本地 wheel。

7.编译安装 causal-conv1d 1.4.0

进入 causal-conv1d 1.4.0 目录:

复制代码
cd causal-conv1d-1.4.0

设置强制本地编译:

复制代码
set CAUSAL_CONV1D_FORCE_BUILD=TRUE

建议设置单线程编译,降低 Windows 下编译失败概率:

复制代码
set MAX_JOBS=1

以下两条指令根据实际情况输入,第一次安装可以先不加

如果是 RTX 4090,建议只编译当前显卡架构:

复制代码
set TORCH_CUDA_ARCH_LIST=8.9

|-------------------------------|------|
| 显卡系列 | 建议值 |
| GTX 1050 / 1060 / 1070 / 1080 | 6.1 |
| RTX 20 系列 | 7.5 |
| RTX 30 系列 | 8.6 |
| RTX 40 系列 | 8.9 |
| RTX 50 系列 | 12.0 |

如果编译时出现 MSVC 堆空间不足,可以加入:

复制代码
set CL=/Zm1000 /bigobj

开始安装:

复制代码
python setup.py install

安装完成后检查:

复制代码
pip show causal-conv1d
8.编译安装 mamba-ssm 2.2.2

进入 mamba-ssm 2.2.2 目录:

复制代码
cd mamba-2.2.2

设置强制本地编译:

复制代码
set MAMBA_FORCE_BUILD=TRUE

继续设置编译参数:

复制代码
set MAX_JOBS=1

以下两条指令根据实际情况输入,第一次安装可以先不加

复制代码
set TORCH_CUDA_ARCH_LIST=8.9
set CL=/Zm1000 /bigobj

开始安装:

复制代码
python setup.py install

安装完成后检查:

复制代码
pip show mamba-ssm
9.最终验证

回到仓库根目录,运行 Mamba 测试脚本:

复制代码
python .\test_scripts\mamba_test.py

如果默认测试输出类似下图,说明基础安装环境已经可以被 Python 正常识别。

三、常见问题

1.causal_conv1d_bwd.fatbin.c(4698700): fatal error C1060: 编译器的堆空间不足 RuntimeError: Error compiling objects for extension

该问题是因为 MSVC 编译 CUDA 扩展时内存压力过大。原始 setup.py 中会同时编译多个 CUDA 架构,例如:

python 复制代码
cc_flag.append("-gencode")
cc_flag.append("arch=compute_53,code=sm_53")
cc_flag.append("-gencode")
cc_flag.append("arch=compute_60,code=sm_60")
cc_flag.append("-gencode")
cc_flag.append("arch=compute_62,code=sm_62")
cc_flag.append("-gencode")
cc_flag.append("arch=compute_70,code=sm_70")
cc_flag.append("-gencode")
cc_flag.append("arch=compute_72,code=sm_72")
cc_flag.append("-gencode")
cc_flag.append("arch=compute_80,code=sm_80")
cc_flag.append("-gencode")
cc_flag.append("arch=compute_87,code=sm_87")

if bare_metal_version >= Version("11.8"):
    cc_flag.append("-gencode")
    cc_flag.append("arch=compute_90,code=sm_90")

这样会同时生成多个架构的 CUDA 编译目标,导致中间文件过大,尤其在 Windows + MSVC 环境下容易触发编译器的堆空间不足问题。

对此解决方式是在 setup.py 中新增了 add_single_cuda_arch 函数,用于自动检测当前显卡的 CUDA 计算能力,只编译当前 GPU 对应的架构,从而显著降低编译压力。修改后的代码会优先通过 PyTorch 获取当前显卡名称和 compute capability,例如 RTX 4090 会自动识别为 sm_89

相关推荐
zhangfeng11336 小时前
ONNX Runtime 微软的推理引擎 TensorRT,NVIDIA GPU 上的深度学习推理, CUDA Graph
人工智能·深度学习·microsoft
code_pgf6 小时前
改进模型架构来减少MLLMs中的幻觉现象
人工智能·深度学习·算法
发光的小豆芽7 小时前
使用U-Net 做皮肤图像的毛孔检测尝试
深度学习·皮肤检测·u-net
All The Way North-7 小时前
大模型训练必修课:梯度裁剪(Gradient Clipping)从数学原理,到PyTorch工程实战全解析
pytorch·深度学习·混合精度训练·大模型训练·梯度裁剪·梯度爆炸·混合精度训练/amp
极光代码工作室7 小时前
基于机器学习的金融风险预测系统
python·深度学习·机器学习·ai·系统设计
装不满的克莱因瓶8 小时前
掌握条件生成对抗网络(Conditional GAN)模型结构——从无条件生成到可控生成的进阶
人工智能·pytorch·python·深度学习·神经网络·生成对抗网络·计算机视觉
TMT星球8 小时前
钉钉发布DingTalk A1豆蔻医生版,售价999元
人工智能·深度学习·钉钉
m0_图灵灵8 小时前
吴恩达《深度学习》之深度剖析Batch Norm 作用机制的本质
人工智能·深度学习·batch
AI人工智能+9 小时前
银行回单识别技术通过OCR与深度学习实现财务数字化转型
深度学习·自然语言处理·ocr·银行回单识别