目录

1. 情况说明

2.具体实现措施,举例说明

(1) 准备工作

(2)具体实施

3. debug 调试


1. 情况说明

我的情况是通过pycharm连接云端服务器,然后实现代码的pytorch分布式训练(DDP),虽然跑训练代码直接在云端的终端下就可以执行,但是我想看一下训练过程中的细节,这就需要在pycharm上debug来更清晰的查看。

注: 这是通过ssh远程连接的云端服务器。怎么连接的大家应该都大同小异。

2.具体实现措施,举例说明

(1) 准备工作

首先,直接在云端服务器的终端下执行训练代码如下所示

所需的环境变量设置:

(siamban1) root@aaa:~/data/zjx/siamBAN/siamban_ori/experiments/siamban_r50_l234# export PYTHONPATH=../../
(siamban1) root@aaa:~/data/zjx/siamBAN/siamban_ori/experiments/siamban_r50_l234# CUDA_VISIBLE_DEVICES=0,1,2

执行训练:

root@aaa:~/data/zjx/siamBAN/siamban_ori/experiments/siamban_r50_l234# python -m torch.distributed.launch
--nproc_per_node=3
../../tools/train.py
--cfg config.yaml

可以看到,这里有很多传入的参数,并且涉及到pytorch的分布式训练,需要在launch中启动,如果直接在本地的pycharm上运行 train.py 是行不通的。其一是因为这些传入的参数以及环境变量需要设置,其二pytorch的分布式训练是在launch中启动的。

所以,以上的环境变量和传入的参数就相当于需要准备的东西,

(2)具体实施

所有的设置都是在pycharm 的 Run下面的Edit configrations中实现的,如下图所示:

首先,环境变量的设置需要在 训练代码文件中设置,比如我的训练代码文件名为 train.py,那么环境变量(对比(1)准备工作)的都在train中添加,如下面所示,注意如果需要添加导入模块路径的环境变量(如(1)中 PYTHONPATH),则路径应为云端服务器中该模块的路径,而不是本地的,最好写绝对路径。

接下来需要设置传入的参数,由于我这个情况是 分布式训练,从launch启动,所以需要找到launch.py文件,在这个文件中设置传入的参数

它的路径在 torch\distributed\launch.py,如果找不到,可以直接pycharm右上角搜索

注意这里的launch.py此时是本地C盘下的,需要做一下映射关系,把它map到对应云端服务器的lauch.py文件。这样需要先找到云端服务器环境下的launch.py文件,它在torch/distirbuted 文件夹下,可以在云端服务器利用下面语句终端里先搜索

root@aaa:~/anaconda3/envs/siamban1# find / -name launch.py
/root/anaconda3/envs/siamban/lib/python3.7/site-packages/setuptools/launch.py
/root/anaconda3/envs/siamban1/lib/python3.7/site-packages/setuptools/launch.py
/root/anaconda3/envs/siamban1/lib/python3.7/site-packages/torch/distributed/launch.py
/root/anaconda3/lib/python3.6/site-packages/anaconda_navigator/utils/launch.py
/root/anaconda3/lib/python3.6/site-packages/navigator_updater/utils/launch.py
/root/anaconda3/lib/python3.6/site-packages/setuptools/launch.py
/root/anaconda3/pkgs/anaconda-navigator-1.8.7-py36_0/lib/python3.6/site-packages/anaconda_navigator/utils/launch.py
/root/anaconda3/pkgs/navigator-updater-0.2.1-py36_0/lib/python3.6/site-packages/navigator_updater/utils/launch.py
/root/anaconda3/pkgs/setuptools-39.1.0-py36_0/lib/python3.6/site-packages/setuptools/launch.py
/root/anaconda3/pkgs/setuptools-62.3.3-py37h89c1867_0/lib/python3.7/site-packages/setuptools/launch.py

然后 ctrl+c 退出,选择你对应的环境中的launch.py文件(选择torch/distirbuted文件夹下的),比如我的是

/root/anaconda3/envs/siamban1/lib/python3.7/site-packages/torch/distributed/launch.py

然后回到pycharm,点击 Run 中的 Edit Configration,选中launch文件,在Path mapping那一栏填写对应的路径

其中 Local path填本地的launch.py路径,Remote path 填上述寻找到的云端的launch.py路径

做完映射关系后,在 Parameters填入传入的参数,如下所示

具体传入的参数就是之前那个执行代码需要的(见(1)中),除了

python -m torch.distributed.launch

外,其它参数都需要添加进来, 设计到路径的最好都用绝对路径代替,避免出错。

3. debug 调试

上面的设置完成后,直接运行launch.py 即可,而不是去运行train.py,不过这没关系,把断点打在train.py或者训练过程中的任何地方依然没什么问题。

pycharm连接云端服务器后实现远程debug调试相关推荐

  1. 用pycharm连接云端服务器

    一.连接云端 1.Tools --> Deployment–>configuration 2.先点左上角的加号,选择SFTP,然后输入与你的云端服务器对应的信息 再点Mapping,第一行 ...

  2. Pycharm连接Linux服务器进行远程开发

    Pycharm连接Linux服务器进行远程开发 1.电脑创建空文件夹并用Pycharm打开 2.Pycharm配置Deployment 3.配置SFTP 验证可成功连接 4.配置项Linux项目路径 ...

  3. 解决SSH连接到服务器后因闲置时间导致的断开连接

    解决SSH连接到服务器后因闲置时间导致的断开连接 方法一 方法二 方法一 (服务器端)通过修改SSH配置文件 使用编辑器(vim.vi)等打开/etc/ssh/sshd_config 找到被注释的代码 ...

  4. openstack windows下远程debug调试(komodo)

    2019独角兽企业重金招聘Python工程师标准>>> 感谢朋友支持本博客,欢迎共同探讨交流,由于能力和时间有限,错误之处在所难免,欢迎指正! 如有转载,请保留源作者博客信息. Be ...

  5. IDEA配置远程debug调试

    当项目部署到远程服务器上的时候,很多时候会发现在远程服务器上执行的结果与我们在本地的执行结果不一致,因此,为了方便我们部署到远程服务器上和在本地debug调试一直,特需配置远程debug调试. 配置远 ...

  6. IntelliJ IDEA远程debug调试

    IntelliJ IDEA远程debug调试 IntelliJ IDEA远程debug调试 解决痛点: 排查线上bug log日志埋点不准确,告别屡次打包部署cycle 前提: 本地代码必须与远程代码 ...

  7. 【安信可NB-IoT模组EC系列AT指令应用笔记①】连接TCP服务器,实现远程收发数据

    目录 一.前期准备 1.硬件准备 2.TCP服务器 二.连接网络 1.查看SIM卡是否正常 2.附着网络 3.注册APNID 4.激活网络 5.测试网络连接情况 三.连接TCP服务器 1.创建sock ...

  8. postman测试远程服务器,远程debug调试入门

    1.远程DEBUG的必要性 由于部署环境的差异性,相信很多朋友都碰到过开发环境正常测试过的功能在测试环境甚至生产环境下出现bug的情况.一般情况下,生产环境可以采取的手段比较单一,即通过日志的方式获取 ...

  9. idea 远程debug调试

    1,远程DEBUG的必要性    由于部署环境的差异性,相信很多朋友都碰到过开发环境正常测试过的功能在测试环境甚至生产环境下出现bug的情况.一般情况下,生产环境可以采取的手段比较单一,即通过日志的方 ...

最新文章

  1. 都觉得FFT简单实用,可为什么还有人不断问问题呢?
  2. html中的js点击ipunt后加一,iphone 端 ipunt输入框光标偏移
  3. 利用序列化与反序列化对Java对象进行深度复制
  4. 网络钓鱼大讲堂 Part4 | 网络钓鱼攻击战术
  5. mugen4g补丁如何使用_如何搜索下载游戏
  6. android listview settag,Android View中setTag的二三事
  7. mysql select null 0,查询值中为NULL,在MySQL中产生0.00
  8. 群论及Polya计数定理题目入门
  9. php mysql工单_详解使用PHP开发客服工单系统
  10. Vue3@cli项目结构
  11. java 正则提取邮箱_如何用正则表达式提取一个网站里面的所有邮箱地址?
  12. csol永恒python使用技巧大全_小甲鱼Python第028讲集合:因为懂你,所以永恒 | 课后测试题及参考答案...
  13. 同步助手 android 微信 表情包,微信表情轻松导,同步助手带你装逼带你飞
  14. 压力换算公斤单位换算_常用压力单位换算表
  15. 小文件治理之hive文件合并:hive小文件合并的三种方法
  16. error C2144: syntax error: 'int' should be preceded by ';'
  17. 微信小程序使用node-xlsx解析excel文件的云函数
  18. vue即时通讯,一个很好用的插件
  19. 三分钟集成 TapTap 登录 SDK(Unity 版)
  20. 【Java+MySQL】使用JDBC连接MySQL 8.0数据库

热门文章

  1. 【黑苹果教程】驱动ATI Radeon HD5450显卡
  2. 技术交流微信群欢迎小伙伴前来交流
  3. 程序人生 - 王者荣耀隐身设置,不让好友看到在线状态
  4. API Gateway/API 网关(三) - Kong的使用 - 限流rate limiting(redis)
  5. 【中级计量经济学】Lecture 5 自相关
  6. 点赋科技:本地生活,如何开启复苏之路
  7. 阿里双11集团技术总指挥——汤兴:一场不亚于移动化的变革已经发生
  8. 公司终于又一次屏蔽了QQ
  9. 程序物语(五):经营自己的程序生涯
  10. 如何安装配置JDK(保姆级完美解决教程+附百度网盘链接)