Vision Mamba 代码调试---Pycharm+AutoDL

2024-05-15 00:52

本文主要是介绍Vision Mamba 代码调试---Pycharm+AutoDL,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《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分布式程序》

这篇关于Vision Mamba 代码调试---Pycharm+AutoDL的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/990343

相关文章

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

Java实现自定义table宽高的示例代码

《Java实现自定义table宽高的示例代码》在桌面应用、管理系统乃至报表工具中,表格(JTable)作为最常用的数据展示组件,不仅承载对数据的增删改查,还需要配合布局与视觉需求,而JavaSwing... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,

Python如何去除图片干扰代码示例

《Python如何去除图片干扰代码示例》图片降噪是一个广泛应用于图像处理的技术,可以提高图像质量和相关应用的效果,:本文主要介绍Python如何去除图片干扰的相关资料,文中通过代码介绍的非常详细,... 目录一、噪声去除1. 高斯噪声(像素值正态分布扰动)2. 椒盐噪声(随机黑白像素点)3. 复杂噪声(如伪

Java Spring ApplicationEvent 代码示例解析

《JavaSpringApplicationEvent代码示例解析》本文解析了Spring事件机制,涵盖核心概念(发布-订阅/观察者模式)、代码实现(事件定义、发布、监听)及高级应用(异步处理、... 目录一、Spring 事件机制核心概念1. 事件驱动架构模型2. 核心组件二、代码示例解析1. 事件定义

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部