使用Windows WSL2搭建Linux Mamba环境

总之就是经过一番倒腾,发现windows自己启mamba就是依托。先说自己的需求,这里我肯定是不奢望自己的本地可以跑起大规模的模型训练的,这里主要就是为了本地进行简单的模型调试然后丢服务器上面进行训练,所以这里我本地的要求也就是一个能跑就行。

(本机win11 ,RTX4060 ,32G运行内存)

WSL基本安装:

(注意在这个之前看看系统虚拟化开没开,这里我默认开了的也就没管了)

控制面板->启动或关闭Windows功能->适用于Linux的Windows子系统

(这里点击完了之后也就开始安装了,装完了自己会重启,总之注意一下,要下一会)

重启完成之后打开cmd,终端输入wsl会有回显的。

设置wsl版本为wsl2:

wsl --set-default-version 2

更新wsl:

wsl --update

使用WSL安装ubuntu:

查看可以安装的wsl列表:

wsl --list --online

选择你要安装的版本(这里我本地安装的是ubuntu 22.04,问就是喜欢)

wsl --install -d Ubuntu-22.04

然后按照提示设置用户名密码,总之没什么大问题。

然后中间可能会有一个网络问题,但其实我ping了一下百度好像是没什么影响,出问题了再说。

但是还是设置了一下。在主机的WSL settings中,选择网络,把对应的网络模式改了:

改成mirrored。

因为害怕文件太大。磁盘不够用,所以按照这个改了一下这个类似镜像一样的东西的地址:

https://www.cnblogs.com/Chary/p/18072267不是必须的,你C盘大你自己随便造

查看wsl发行版本:

wsl -l --all -v

导出tar文件到我想要的盘里面:

wsl --export Ubuntu-22.04 e:\WSL_EX\wsl-ubuntu22.04.tar

注销当前的发行版本:

wsl --unregister Ubuntu-22.04

重新导入我们刚刚导出的东西:

wsl --import Ubuntu-22.04 e:\WSL_EX e:\WSL_EX\wsl-ubuntu22.04.tar --version 2
#wsl --import 你的镜像名字 你要把镜像放的文件夹 刚刚你到处的文件路径

完了之后你可以在你的盘看到这个东西:

这玩意就是wsl那一坨的本体了,那个tar文件也可以删了(确实不小)

接下来也可以在开始页面把我们的东西固定到页面里面,这个无所谓,双击就可以启动我们的系统了。

简单提一嘴这个文件管理在哪里看:

你的主机内存里面:

点进去就是。总之按照需要来。

Ubuntu使用前基本配置:

这里使用之前我还是进行简单地换了源(注意这里我就默认我的系统是ubuntu终端了,前面地操作是在windows终端执行的,总之自己区分一下不难的)

换源

换源(清华源对我有恩!(bushi,这里我是ubuntu22.04TL注意看一下自己的版本哦):

注意选择!https://mirror.tuna.tsinghua.edu.cn/help/ubuntu/

打开你的终端:(总之有没有gui影响不大,就当它没有gui的服务器了,gui我倒腾了一下没有调出来QAQ)

vim /etc/apt/sources.list

我是把前面的全注释了,然后把我们清华源的东西贴进去:

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse

# 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换
deb http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
# deb-src http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse

(vim怎么保存?首先esc,然后 :wq,回车)

然后刷新一下:

sudo apt-get update
sudo apt-get upgrade

然后这里就可以按照你需要的开心pip了,当然你觉得麻烦也可以临时pip install -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple 临时使用。

这里按照微软自己的官方文档还有一堆没什么用的东西(主要是我也不知道有什么用你看着装):

https://learn.microsoft.com/zh-cn/windows/wsl/tutorials/gui-apps

装miniconda:

为什么选择miniconda?因为它善!)

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
chmod ++x Miniconda3-latest-Linux-x86_64.sh
./Miniconda3-latest-Linux-x86_64.sh

执行完这三个之后会有一个问你要不要默认激活的东西,总之我激活了,你看着办(yes/no)自己对应敲就完了。

可以通过conda env list看看目前已有的环境,这里会回显base。然后给conda换源:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes

管他有没有用,总之肯定有点点用也好。用这个指令可以简单看看自己的使用情况:

conda config --show

好了到这里最最最基本的大环境倒腾完了。

这里,比较抽象的一点是,微软官方给的是用docker来启,主要是我觉得有点太抽象了QAQ,所以还是按照网友方案来了:(贴一个官方的docker方案:https://learn.microsoft.com/zh-cn/windows/wsl/tutorials/gpu-compute

安装各种东西:

conda安装虚拟环境:

conda先建立一个虚拟环境:

conda create -n mamba python=3.10
conda activate mamba

nivida:(接下来全是试错成本!这里直接下12.1少一堆问题)

直接下载12.1就可以了!但是写都写了,吃过的石还是记录一下

https://developer.nvidia.com/cuda-11-8-0-download-archive?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=22.04&target_type=deb_local(这个煞笔下了11.8,结果就是删了重装)

这里你应该下载的是这个:https://developer.nvidia.com/cuda-12-1-0-download-archive?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=22.04&target_type=deb_local,安装方法和下面一样。

安装对应的驱动版本。(这里我装下来没什么问题,特别大的3G可能要解决一下网络问题,5min左右下完)

最后一步执行可能又要很久,毕竟文件本体有这么大

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-repo-ubuntu2204-11-8-local_11.8.0-520.61.05-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2204-11-8-local_11.8.0-520.61.05-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2204-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda

执行完了之后手动导入一下路径:

export PATH=/usr/local/cuda-11.8/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH

【这里改成对应的12.1】

然后执行:

nvcc -V

检查是否安装成功:

这里这样显示就没有问题了。

pytorch:

然后安装对应版本的pytorch:

https://pytorch.org/

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

这里你应该下载这个!!!

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

可以这样简单来检查一下:

triton:

【从这里开始往下的东西其实大差不差了,这里也就不用太在意差别,基本东西是差不多的】

但是这个triton特别要注意一下对应的版本问题,不然会有点点麻烦。

安装triton:

pip install triton==3.2.0
#这里你其实应该安装
#pip install triton==3.1.0

检查:

import triton
print(triton.__version__)

causal-conv1d:

【这里用的源码编译,所以其实影响不大,直接执行就完了,然后可以提前安装一下ninja,据说会快一点。

然后我看有的博客还写了安装这个:

conda install -c "nvidia/label/cuda-11.8.0" cuda-nvcc

我的感受是我也不知道,这里没管也不影响,或许还是要对应一下12.1.0?没管。

安装causal-conv1d:

git clone https://github.com/Dao-AILab/causal-conv1d.git
cd causal-conv1d
CAUSAL_CONV1D_FORCE_BUILD=TRUE pip install .

总之就是装下来有点慢,这里毕竟用的是.cu编译,要一会。安装完之后没报错可以用import causal_conv1d来检查一下安装。

mamba-ssm:

【过程和上面差不多】

安装mamba-ssm:

sudo apt-get install build-essential python3-dev

cd ..

git clone https://github.com/state-spaces/mamba.git
cd mamba

CAUSAL_CONV1D_FORCE_BUILD=TRUE pip install . -v

(这里输出这个-v就可以看看你到底卡哪里了,应该这一趟操作下来是没有什么特别大的问题的)

这样对中间的setup代码也不用怎么改,然后就完了。

可以python执行完import一下看看报不报错。

我吃过的石:

好,现在我这里存在的问题是:import causal_conv1d_cuda没问题,但是import selective_scan_cuda不行,提示的报错是缺少某个基于12的包。

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: libcudart.so.12: cannot open shared object file: No such file or directory

好,非常好(ctm的环境依赖问题,tm早点写明白会s?)

这里的解决方案是(删干净)

conda remove -n mamba --all

然后重复前面安装各种东西的过程(下载12.1的版本,不嘻嘻)。

conda create -n mamba python=3.10
conda activate mamba

下载:https://developer.nvidia.com/cuda-12-1-0-download-archive?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=22.04&target_type=deb_local

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda-repo-ubuntu2204-12-1-local_12.1.0-530.30.02-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2204-12-1-local_12.1.0-530.30.02-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2204-12-1-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda

下载完了导入路径:

# 添加 CUDA 到 PATH
echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc

# 设置 LD_LIBRARY_PATH
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc

# 应用环境变量更改
source ~/.bashrc

使用nvcc -V进行检查。

然后继续对应.......不赘述了。

有一个小坑点:

这里我不知道为什么有时候安装cuda toolkit那一坨东西会默认到base上面去,其实这个不影响,在虚拟环境中手动重新导一下路径就可以了。还是挺方便的。

咱装完了(●'◡'●):

可以这样简单检查一下:

没有出现报错也就没有什么大的问题了。

关于pycharm对程序代码支持的使用:

本人使用的开发环境是pycharm 2024.3.4,现在我们对应的linux环境是配置好了,我们肯定还是希望可以使用的。

然后pycharm比较好的一点就是这个支持wsl的虚拟环境/docker环境的(因为这里我没有使用docker,所以也就记录一下)。这里可以在文件设置里面设置python解释器:

CTRL+ALT+S->Python解释器->添加python解释器:

->基于WSL:

选择对应的版本:

然后选择我们对应的conda环境就可以了:

很好用吧(_)

至此我们的开发环境中也就可以使用了(这里我以mambaUnet的中间运行代码为例子:

简单运行一下效果就是这样的:

posted @ 2025-04-13 14:34  stribik  阅读(557)  评论(0)    收藏  举报