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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/327335.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于FPGA的音视频监视器,音视频接口采集器的应用

① 支持1路HDMI1路SDI 输入 ② 支持1路HDMI输出 ③ 支持1080P高清屏显示实时画面以 及叠加的分析结果 ④ 支持同时查看波形图(亮度/RGB)、 直方图、矢量图 ⑤ 支持峰值对焦、斑马纹、伪彩色、 单色、安全框遮幅标记 ⑥ 支持任意缩放画面,支…

深入解析RedisJSON:在Redis中直接处理JSON数据

码到三十五 : 个人主页 JSON已经成为现代应用程序之间数据传输的通用格式。然而,传统的关系型数据库在处理JSON数据时可能会遇到性能瓶颈。为了解决这一问题,Redis推出了RedisJSON模块,它允许开发者在Redis数据库中直接存储、查询…

文心一言 VS 讯飞星火 VS chatgpt (259)-- 算法导论19.3 2题

二、使用聚合分析来证明 FIB-HEAP-DECREASE-KEY 的 O(1) 摊还时间是每一个操作的平均代价。如果要写代码,请用go语言。 文心一言: FIB-HEAP-DECREASE-KEY 是斐波那契堆(Fibonacci Heap)操作中的一个,它允许我们减少堆…

Excel如何设置密码保护【图文详情】

文章目录 前言一、Excel如何设置密码保护?二、Excel如何取消密码保护?总结 前言 在软件项目开发过程中,会输出很多技术文档,其中也包括保密级别很高的服务器账号Excel文档。为了确保服务器账号相关的Excel文档的安全性&#xff0…

1-1ARM开发环境搭建(GD32)

1:安装MDK最好是5.27以及以上版本,避免后续学习中出现相关错误 2:安装芯片支持包 双击安装即可,也可以是默认路径,也可以自己更改路径 3:安装jlink下载器驱动(下载调试器) 具体安装步骤如下所示…

汇昌联信科技:拼多多电商的运营流程有哪些?

在当今互联网高速发展的时代,电商平台层出不穷,其中拼多多以其独特的团购模式和低价策略迅速崛起,成为众多消费者和商家的新宠。那么,拼多多电商的运营流程究竟包含哪些环节呢?接下来,我们将从商品上架、营销推广、订…

ctfshow web入门 php反序列化 web267--web270

web267 查看源代码发现这三个页面 然后发现登录页面直接admin/admin登录成功 然后看到了 ///backdoor/shell unserialize(base64_decode($_GET[code]))EXP <?php namespace yii\rest{class IndexAction{public $checkAccess;public $id;public function __construct(){…

一篇详解Git版本控制工具

华子目录 版本控制集中化版本控制分布式版本控制 Git简史Git工作机制Git和代码托管中心局域网互联网 Git安装基础配置git的--local&#xff0c;--global&#xff0c;--system的区别 创建仓库方式1git init方式2git clone git网址 工作区&#xff0c;暂存区&#xff0c;本地仓库…

k8s v1.20二进制部署 部署 CNI 网络组件 部署 Calico

一、部署 flannel 1.1.K8S 中 Pod 网络通信 ●Pod 内容器与容器之间的通信 在同一个 Pod 内的容器&#xff08;Pod 内的容器是不会跨宿主机的&#xff09;共享同一个网络命名空间&#xff0c;相当于它们在同一台机器上一样&#xff0c;可以用 localhost 地址访问彼此的端口。…

ROS2 conda 环境下报 No module named ‘catkin_pkg‘

这里使用的环境是&#xff1a;Ubuntu 22.04, ROS2, Conda python 虚拟环境是3.10 ~/.bashrc 里注释掉 conda&#xff0c;并添加 export PYTHONPATH$PYTHONPATH:/usr/lib/python3/dist-packages sudo gedit ~/.bashrc source ~/.bashrc

springboot3 集成spring-authorization-server (一 基础篇)

官方文档 Spring Authorization Server 环境介绍 java&#xff1a;17 SpringBoot&#xff1a;3.2.0 SpringCloud&#xff1a;2023.0.0 引入maven配置 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter…

C语言(指针)7

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸各位能阅读我的文章&#xff0c;诚请评论指点&#xff0c;关注收藏&#xff0c;欢迎欢迎~~ &#x1f4a5;个人主页&#xff1a;小羊在奋斗 &#x1f4a5;所属专栏&#xff1a;C语言 本系列文章为个人学习笔记&#x…

Elastic 通过 AI 驱动的安全分析改变 SIEM 游戏

作者&#xff1a;Santosh Krishnan, Jennifer Ellard 借助由搜索 AI 提供支持的新攻击发现功能&#xff0c;优先考虑攻击&#xff0c;而不是警报。 传统的安全信息与事件管理系统&#xff08;SIEM&#xff09;在很大程度上依赖屏幕背后的人类才能取得成功。警报、仪表盘、威胁…

MySQL数据库的初始化(创建库、创建表、向数据库添加测试数据)

MySQL数据库的初始化&#xff08;创建库、创建表、修改数据库访问密码、向数据库添加测试数据&#xff09; MySQL数据库简介MySQL创建一个新的数据库修改数据库访问密码 MySQL创建一张新的数据表简单&#xff08;设置&#xff09;表复杂&#xff08;设置&#xff09;表 填充测试…

webapi路由寻址机制

路由匹配的原则 1、启动 Application_Start 文件夹中有个WebApiConfig 会把路由规则写入一个容器 2、客户端请求时&#xff1a; 请求会去容器匹配&#xff0c;先找到控制器&#xff08;找到满足的&#xff0c;就转下一步了&#xff09;&#xff0c;然后找Action&#xff0c;we…

【Docker与Termux】闲置旧安卓手机上的NAS无缝部署方案

最近有了新手机,旧手机也闲置了,由于之前一直在寻找平价的NAS替代方案,旧手机在抽屉躺了N天后,我决定让它重新焕发光彩,努力工作,继续拉磨。 这个时代的旧手机可以满足NAS的基本配置需求,内存、硬盘、内置电源、WIFI模块、快速接口,简直是理想中的NAS形态,但是散热、R…

2024 年第一季度全球互联网中断事件

2024 年第一季度伊始&#xff0c;互联网发生了多起中断事件。陆地和海底电缆的损坏在多个地方造成了问题&#xff0c;而与持续中地缘政治冲突相关的军事行动影响了其他地区的连接。 几个非洲国家以及巴基斯坦的政府下令关闭互联网&#xff0c;主要针对移动网络连接。 被称为Ano…

使用vant-ui+vue3实现一个可复用的评星组件

如图所示 有两种情况 一种是5颗星 一种是3颗星 官网上只提供了图标类型的 并没有加文字 https://femessage-vant.netlify.app/#/zh-CN/ 自己结合两种情况 在全局注册了此组件(后续还会持续更新代码~) <template><div class"vant_rate_wrapper"><van…

Ceph集群扩容及数据再均衡原理分析

用户文件在Ceph RADOS中存储、定位过程大概包括&#xff1a;用户文件切割成对象、对象映射到PG、PG分组PGP、PG映射到OSD。这些过程中&#xff0c;可能涉及了大量概念和变量&#xff0c;而其实它们大部分是通过HASH、CRUSH等算法计算出来的&#xff0c;初始参数可能也就只有这么…

OpenResty单机限流

目录 该项目已经实现的限流方法限流流程图限流规则存储针对接口限流 限流算法实现主要代码部分固定窗口令牌桶限制并发数 注意点 前言&#xff1a; 上一篇文章介绍了OpenResty的安装和lua的基本语法学习&#xff0c;这一篇介绍一下使用OpenResty进行限流。本文只对限流功能实现…