《AutoDL使用手册》
1. 服务器租用与配置
先上项目链接:
GitHub - hustvl/Vim: Vision Mamba: Efficient Visual Representation Learning with Bidirectional State Space Model
1.1 服务器租用与配置
根据环境要求,去租一个服务器:AutoDL算力云 | 弹性、好用、省钱。租GPU就上AutoDL
我租用的服务器配置如下:
1.2 克隆项目到服务器
打开服务器终端,切换目录
cd autodl-tmp/
克隆命令:
git clone https://github.com/hustvl/Vim.git
目录结构:
1.3 配置环境
打开服务器终端,按照Vim的环境进行配置:
(1)创建虚拟环境
conda create -n vim python=3.10.13
刷新环境变量
conda init bash && source /root/.bashrc
(2)安装torch-cuda 11.8
pip install torch==2.1.1 torchvision==0.16.1 torchaudio==2.1.1 -i https://mirrors.aliyun.com/pypi/simple/
(3) 安装其他依赖
pip install -r vim/vim_requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
(4)安装causal_conv1d 和 mamba,这里选择离线安装
wget https://github.com/Dao-AILab/causal-conv1d/releases/download/v1.1.3.post1/causal_conv1d-1.1.3.post1+cu118torch2.1cxx11abiFALSE-cp310-cp310-linux_x86_64.whl
wget https://github.com/state-spaces/mamba/releases/download/v1.1.1/mamba_ssm-1.1.1+cu118torch2.1cxx11abiFALSE-cp310-cp310-linux_x86_64.whl
安装
pip install causal_conv1d-1.1.3.post1+cu118torch2.1cxx11abiFALSE-cp310-cp310-linux_x86_64.whl
pip install mamba_ssm-1.1.1+cu118torch2.1cxx11abiFALSE-cp310-cp310-linux_x86_64.whl
(5)用官方的mamba_ssm 替换虚拟环境 vim 中对应的包
cp -rf mamba-1p1p1/mamba_ssm /root/miniconda3/envs/vim/lib/python3.10/site-packages
注:下载慢可以启用加速,见《AutoDL使用手册》-->文件下载
1.4 测试能否运行
需要去4.4节中,把datasets.py文件中相应部分进行修改(直接在服务器中修改),否则没有数据集。
CUDA_VISIBLE_DEVICES=0 torchrun --master_port=6666 --nproc_per_node=1 main.py \
--model vim_small_patch16_224_bimambav2_final_pool_mean_abs_pos_embed_with_midclstok_div2 --batch-size 2 \
--drop-path 0.05 --weight-decay 0.05 --lr 1e-3 --num_workers 1 \
--data-set CIFAR \
--data-path /media/amax/c08a625b-023d-436f-b33e-9652dc1bc7c0/DATA/liyuehang/Vim-main/vim/cifar-100-python \
--output_dir ./output/vim_small_patch16_224_bimambav2_final_pool_mean_abs_pos_embed_with_midclstok_div2 \
--no_amp
2. 添加distributed软连接
为了能够在本地的pycharm调试Vim的代码,我们需要下载服务器的distributed文件夹,首先给Vim项目添加软连接。
服务器新建一个终端,进入到我们的虚拟环境vim,输入命令
pip show torch
查找python 3.10对应的torch的目录,输出如下:
进入到这个目录,然后继续找到distributed目录,进入,在终端输入pwd查看当前路径。
软连接命令:
ln -s /root/miniconda3/envs/vim/lib/python3.10/site-packages/torch/distributed Vim/
执行完后,就可以在Vim目录下,看到distributed文件夹:
测试能否使用launch.py运行:
cd Vim/
export CUDA_VISIBLE_DEVICES=0
python distributed/launch.py --master_port=6666 --nproc_per_node=1 vim/main.py \
--model vim_small_patch16_224_bimambav2_final_pool_mean_abs_pos_embed_with_midclstok_div2 --batch-size 2 \
--drop-path 0.05 --weight-decay 0.05 --lr 1e-3 --num_workers 1 \
--data-set CIFAR \
--data-path /media/amax/c08a625b-023d-436f-b33e-9652dc1bc7c0/DATA/liyuehang/Vim-main/vim/cifar-100-python \
--output_dir ./output/vim_small_patch16_224_bimambav2_final_pool_mean_abs_pos_embed_with_midclstok_div2 \
--no_amp
3. 克隆项目到本地
在本地克隆项目文件
git clone https://github.com/hustvl/Vim.git
4. Pycharm配置
用pycharm打开Vim文件夹,按照下面的操作设置python解释器。
4.1 设置远程python解释器
按照图示操作:
去容器实例,复制ssh指令,输入到pycharm中:
点击Next,会让你输入密码,直接去容器实例复制密码输入,点击Next。
连接到远程后,需要选择服务器上的python解释器路径,点击Existing:
点击最右面的三个点,找到/root/miniconda3/envs/vim/bin/python3.10,点击OK
然后我们需要配置本地的工作目录和服务器的工作目录,点击最右侧的文件夹图标:
LocalPath我选择的是本地的Vim文件夹,RemotePath选择的是服务器的Vim文件夹:
工作目录设置好后,点击OK,点击Create,就可以看到我们添加的python解释器了:
点击apply , OK 即可。
4.2 目录内容同步
配置好python解释器和工作目录后,我们需要对服务器的Vim文件夹和本地的Vim文件夹的内容进行同步,因为服务器上还添加了distributed文件夹,想要调试需要下载到本地。
pycharm中选中项目文件夹,点击Tools--DeployMent--Download from root@ ....
下载完后,Vim文件夹中就会出现distributed文件夹。
4.3 修改pycharm的运行参数
首先是Script path,要修改成Distributed文件夹中的launch.py文件。
设置环境变量Environment variables
CUDA_VISIBLE_DEVICES=0
设置运行参数Parameters,注意main.py是服务器中的绝对目录 。
--master_port=6666
--nproc_per_node=1
/root/autodl-tmp/Vim/vim/main.py
--model
vim_small_patch16_224_bimambav2_final_pool_mean_abs_pos_embed_with_midclstok_div2
--batch-size
2
--drop-path
0.05
--weight-decay
0.05
--lr
1e-3
--num_workers
1
--data-set
CIFAR
--data-path
/media/amax/c08a625b-023d-436f-b33e-9652dc1bc7c0/DATA/liyuehang/Vim-main/vim/cifar-100-python
--output_dir
./output/vim_small_patch16_224_bimambav2_final_pool_mean_abs_pos_embed_with_midclstok_div2
--no_amp
4.4 设置自动下载CiFar数据集
在pycharm中,找到Vim/vim/datasets.py,在CIFAR100数据集后面加一个download=True
然后选中datasets.py,将修改后的py文件上传到服务器并覆盖。
5. 开始调试
我们可以在main.py打个断点,然后点击debug按钮,看看是否可以跳到断点处:
终端输出:
参考
《vision mamba 运行训练记录,解决bimamba_type错误》
《Pycharm 调试debug torch.distributed.launch》
《【PyTorch】PyCharm远程连接服务器,调试torch.distributed.launch分布式程序》