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

news2024/11/17 9:50:45

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一文读懂通用漏洞评分系统CVSS4.0:顺带理清CVE、CWE及其与CVSS之间的关系

事件响应和安全团队论坛 (FIRST,Forum of Incident Response and Security Teams) 于 2023 年 11 月 1 日正式推出第四版通用漏洞评分系统 (CVSS 4.0,Common Vulnerability Scoring System version 4.0)。CVSS 4.0 是评估计算机系统安全漏洞严重性的行业…

初次查询大数据信用报告,需要注意哪些问题?

随着大数据的普及,基于大数据技术的大数据信用也变得越来越重要,比如在申贷之前,不少地方都会查询申贷人的大数据信用,作为风险控制的必要手段,那对于初次查询大数据信用报告的人来说,需要注意哪些问题呢?…

干部选拔任用的重要性与实践策略

在当今的组织管理中,干部选拔任用是一项至关重要的工作。它不仅关系到组织的稳定与发展,更直接影响到组织的效能和竞争力。因此,科学、公正、有效的干部选拔任用机制对于组织的长期健康发展具有不可忽视的意义。 一、干部选拔任用的重要性 …

产品经理资料包干货

1.《产品汪》免费电子书 2016年我面试了差不多有200多位产品求职者,其中不乏之前做厨师编剧这些岗位的人。在这个过程中我意识到大众或许对产品经理这个岗位存在一些认知和理解上的误差,于是我就想着写一本产品经理相关的书。 关于本书的更多信息可查看…

研究生学习---找工作

规划 研一~研二上学期完成小论文,实习,秋招 竞赛:kaggle? 面试题一般简单且为原题,笔试题目很难,不会出原题 项目 找工作软件

webapi路由寻址机制

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

菲律宾签证照片尺寸要求,用手机生成

菲律宾签证照片尺寸要求如下图所示,可以用手机在微信搜索随时照小程序,快速生成哦。

MIT 6.5840(6.824) Lab1:MapReduce 设计实现

1 介绍 本次实验是实现一个简易版本的MapReduce,你需要实现一个工作程序(worker process)和一个调度程序(coordinator process)。工作程序用来调用Map和Reduce函数,并处理文件的读取和写入。调度程序用来协…

IPsec VPN简介

什么是IPsec? IPsec(Internet Protocol Security)是为IP网络提供安全性的协议和服务的集合,它是VPN(Virtual Private Network,虚拟专用网)中常用的一种技术。其实就是一种协议簇(类…

linux 任务管理(临时任务定时任务) 实验

目录 任务管理临时任务管理周期任务管理 任务管理 临时任务管理 执行如下命令添加单次任务,输入完成后按组合键Ctrl-D。 [rootopenEuler ~]# at now5min warning: commands will be executed using /bin/sh at> echo "aaa" >> /tmp/at.log at&g…

中国目前比较有影响力的人物颜廷利:物质与无知通音

既然是在中国优秀传统文化之根-汉语当中,汉字‘物质’二字跟‘无知’通音,因此,面对当前金钱肆虐、物欲横流的现实生活,当人类众生把‘物质’(无知)生活看的太真、太重时,那么,这就很…

内网渗透—域信息收集防火墙策略同步不出网隧道上线

1、前言 最近在学域渗透方面的知识,这里就记录一下。主要涉及到什么是域,域的信息收集,防火墙的策略同步,以及当主机出网的协议被封杀时如何利用隧道上线。 2、什么是域 域是一个有安全边界的计算机集合,在域内的计…

AcqKnowledge 5.0使用方法

Biopac 数据导入 matlab 处理方法 第一步:在 AcqKnowledge 软件中,将数据通道的 mark 信息导入到 Graph,并将数据存储为 acq3 的格式 第二步:MATLAB中读取acq3文件脚本 clc clear %%%所有被试这一层路径 pathsub fullfile(file…

Milvus 简介与核心特性

一、Milvus 概述 Milvus 是一个开源的向量数据库,由 Zilliz 公司发起并维护。它专为处理非结构化数据而设计,能够存储、检索和分析大量的向量数据。Milvus 的名字来源于拉丁语,意为“一万”,象征着其处理大规模数据集的能力。 M…

【TypeScript】ts中的类型别名(Type)的介绍和使用

简言 类型别名(Type)的介绍和使用。 类型别名特别常用。 类型别名 类型别名就是用关键词type声明的类型: // Name类型 type Name string类型特别简单,他的作用就是定义一个类型的别名,这个类型可以是简单基础类型,也可以是复…

【QuikGraph】C#调用第三方库计算有向图、无向图的连通分量

QuikGraph库 项目地址:https://github.com/KeRNeLith/QuikGraph 相关概念 图论、连通分量、强连通分量相关概念,可以从其他博客中复习: https://blog.csdn.net/weixin_50564032/article/details/123289611 https://zhuanlan.zhihu.com/p/3…

buff禁售武器箱和胶囊的原因,及游戏搬砖人该如何应对

大家好,我是童话,相信大家都看到这个消息了,buff平台在14号中午11点左右,已经全面禁止了武器箱和胶囊,纪念包等的上架和售卖。在饰品市场直接搜索武器箱或者胶囊,是完全搜索不出来任何东西的哈。 面对这一消…

DOM重点核心(注册事件+DOM事件流)

目录 1.注册事件 注册时间概述 addEventListener() 删除事件 2.DOM事件流 DOM事件流理论 事件对象 事件对象的常见属性和方法 e.targe 和 this的区别 阻止默认行为 阻止冒泡 事件委托 禁止右键菜单和禁止选中文字 获得鼠标的坐标(可视区、页面、浏览器…

VS Code 将输入的tab自动替换为空格

VS Code 将tab缩进修改为空格缩进TOC 位置 图1 图2 图3 图4 使能 同时勾选图2和图3的两个配置项,在编辑器中输入的Tab,会自动替换为 4(图4的Tab Size)个空格 检查 请参考 https://blog.csdn.net/de_se/article/details/131758698?ops_request_m…

短剧看剧系统,当前互联网热门项目工具系统模板。

目录 揭秘爆款神器:短剧看剧系统,让你的内容火遍全网! 一、短剧看剧系统:一站式解决方案 二、灵活定价,实现收益最大化 三、高效管理,团队协作更轻松 四、数据驱动,精准把握市场动态 五、智…