当前位置: 首页 > news >正文

win10系统完美配置mamba-ssm全整合方案

好久没瞎写东西了,刚好最近遇到一个逆天需求:要在win10平台上配置可用的mamba-ssm环境。由于这个环境原版以及相关依赖都是仅适配linux的,即使是依赖conda环境直接拿来往windows系统上装也全是bug,网上大量的垃圾教程也都是错的,能安装成功但是不能正常使用。花了一段时间,找到一个可行的方案,并且实际踩了坑之后总算是成功运行起来了。

安装包版本:causal-conv1d 1.4.0、mamba-ssm 2.2.2、triton 3.1.0(这三个包我放在github仓库:https://github.com/divertingPan/mamba-for-windows内了,使用方法在下文)

前期准备:win10系统(其他版本不确定,win10实测是可以的)、anaconda、N卡(至少10系显卡算力6.1起步:查询https://developer.nvidia.com/cuda-gpus)

参考链接:
Windows 下安装 triton 教程:
https://blog.csdn.net/yyywxk/article/details/144868136
Windows 下Mamba2 / Vim / Vmamba 环境安装问题记录及解决方法终极版(无需绕过triton):
https://blog.csdn.net/yyywxk/article/details/145018635

下面开始步骤详解

1)首先给系统安装cuda 12.4.0,点击下面链接里的download:https://developer.nvidia.com/cuda-12-4-0-download-archive?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exe_local

2)准备安装triton-windows。这一步是最关键的,因为大量教程都忽略了这部分,导致安装了原版triton,里面很多命令是linux版的,用在windows上就跑不通。首先第一步,参考Windows 下安装 triton 教程进行准备,下载安装Visual Studio Installer:https://aka.ms/vs/17/release/vs_BuildTools.exe。安装好后打开,在窗口上部找到“单个组件”,搜索MSVC v143,勾选最新版本的(我所安装完毕的版本是14.43.34808),搜索Windows 10 SDK,选最大的版本号(或者选择和我一致的号,尽量保持环境一致)

3)修改环境变量,右键“此电脑”-在“属性”里面找到最后面,点击高级系统设置,右下角“环境变量”,修改系统变量里面的部分。注意如果版本号和我的不一样,修改版本号为你自己的版本再粘贴

  • 选择 Path ,添加:
    C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.43.34808\bin\Hostx64\x64 C:\Program Files (x86)\Windows Kits\10\bin\10.0.20348.0\x64
  • 新建 LIB,添加3条:
    C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.43.34808\lib\x64; C:\Program Files (x86)\Windows Kits\10\Lib\10.0.20348.0\ucrt\x64; C:\Program Files (x86)\Windows Kits\10\Lib\10.0.20348.0\um\x64
  • 新建 INCLUDE,添加6条:
    C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.43.34808\include; C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\ucrt; C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um; C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\winrt; C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\cppwinrt; C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared

4)打开一个cmd窗口,输入cl,输出以下内容即为成功。

5)以防万一,下载https://aka.ms/vs/17/release/vc_redist.x64.exe并安装,如果按钮显示是修复,则点一下修复,以防系统缺失依赖文件。运行到这里时,重启一下电脑再继续。

6)创建虚拟环境,执行以下内容

conda create -n mamba python=3.10
conda activate mambapip install torch==2.4.1 torchvision==0.19.1 torchaudio==2.4.1 --index-url https://download.pytorch.org/whl/cu124conda install nvidia/label/cuda-12.4.0::cuda-nvcc

7)安装pip install triton-3.1.0-cp310-cp310-win_amd64.whl,运行验证脚本triton_test.py,如果输出没有报错即完成这部分安装。

8)打开目录C:\Program Files (x86)\Windows Kits\10\bin\10.0.20348.0\x64
找到“rc.exe”和“rcdll.dll”拷贝至以下目录
C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.43.34808\bin\Hostx64\x64
(若你的版本号不一致,找到你对应的号)

9)准备编译安装causal-conv1d,首先在环境里面安装

conda install nvidia/label/cuda-12.4.0::cuda-cccl
pip install ninja
pip install setuptools==68.2.2
conda install packaging

然后下载我提供的文件,进入到causal-conv1d-1.4.0的目录,这个目录下有一个setup.py文件,在此目录下执行

set CAUSAL_CONV1D_FORCE_BUILD=TRUE
python setup.py install

若最终输出没有出现error字样,则成功安装,运行pip list应看到causal-conv1d的版本号为1.4.0(原本应该是可以pip install .的,但不知道为什么我用这个命令就会报错什么No .egg-info directory found,只能使用python setup.py install才能安装)

10)准备编译安装mamba-ssm,首先在环境里面安装

pip install einops transformers

然后下载我提供的文件,进入到mamba-2.2.2的目录,这个目录下有一个setup.py文件,在此目录下执行

set MAMBA_FORCE_BUILD=TRUE
python setup.py install

若最终输出没有出现error字样,则成功安装,运行pip list应看到mamba-ssm的版本号为2.2.2

【备注:下载原版的软件包后,需要对应修改代码中的很多位置,如Windows 下Mamba2 / Vim / Vmamba 环境安装问题记录及解决方法终极版(无需绕过triton)中所示,我的这个包已经修改好了对应位置,直接下载之后编译安装即可。另外由于mamba要求GPU高于10系,这部分的兼容修改也已经改好,10系的卡也可以用了。老潘的测试环境是1080ti实测没问题】

11)运行验证脚本mamba_test.py,如果输出没有报错即完成所有安装。

(不知道原因,首次运行一个脚本会生成一些c编译的文件,但是删掉这些文件再次运行之后就不会生成了,不太懂原理是什么)

我使用我原本的项目实测,没有问题

相关文章:

  • RAG-概述
  • `get_peft_model` 是 `peft` 库什么方法
  • 基于亚博K210开发板——内存卡读写文件
  • 如何删除 Launchpad 中 Chrome 的图标
  • java输出、输入语句
  • 【SAP ME 43】RESRCE表操作导致HANA中表锁定解决方案
  • Linux:简单指令(二)
  • Hutool之DateUtil:让Java日期处理变得更加简单
  • Charles破解 激活码 Java
  • 【Python语言基础】22、异常处理
  • 练习(杨辉三角、字符串旋转)
  • 轻量化高精度的视频语义分割
  • std::unordered_set(C++)
  • 黑马点评:附近商铺+用户签到+UV统计【学习笔记】
  • Spring Boot资源耗尽问题排查与优化
  • Agent的九种设计模式 介绍
  • 基于PySide6与pyCATIA的圆柱体特征生成工具开发实战——NX建模之圆柱命令的参考与移植
  • 在 Babylon.js 中实现智能异步资源加载队列管理
  • React 事件处理基础
  • eNSP无法启动AR报错码40,而且按照eNSP帮助手册排查都没用,我的处理方法【自己存档版】
  • 湘江半程马拉松赛女配速员“跑崩”,晕倒在终点?组委会回应
  • 新增1839个!2024年度本科专业备案和审批结果,公布
  • 男子为讨喜钱掰断劳斯莱斯小金人,警方:已介入处置
  • 纪念沈渭滨︱“要把近代史搞得会通”——读《士与大变动时代》随札
  • 在没有穹顶的剧院,和春天的音乐会来一场约会
  • 夜读丨“看看世界”本身就是一种意义