当前位置: 首页 > news >正文

pycharm 远程连接服务器并且debug, 支持torch.distributed.launch debug

未经允许,本文不得转载,vx:837007389

文章目录

    • step1:下载专业版本的pycharm
    • step2 配置自动同步文件夹,即远程的工程文件和本地同步
      • 2.1 Tools -> Deployment -> configuration
      • 2.2 设置同步文件夹
      • 2.3 同步服务器上代码到本地
      • 2.3 设置代码同步,Tools->Deploment->Automatic Upload Always
    • step3 配置解释器
      • 3.1 一般可以直接debug
      • 3.2 pytorch的分布式训练, 可以直接跑但是不能debug
      • 3.3 pytorch的分布式训练, 可以debug

step1:下载专业版本的pycharm


https://www.jetbrains.com/pycharm/download/other.html
首先,你需要有个专业版本的pycharm。什么ji huo 码可以私我,或者样例可以看这里链接。
https://www.cnblogs.com/yanghailin/p/17577621.html

step2 配置自动同步文件夹,即远程的工程文件和本地同步

我现在代码在远程服务器上。所以需要把远程服务器代码和我本地一个新建文件夹同步。
新建文件夹remote_0724_new并用pycharm打开,最新版本的pycharm2023.1.4打开空文件夹会自动新建一个main.py文件了。

2.1 Tools -> Deployment -> configuration

点左上角“+”,选择SFTP,随便命名一个server,“port_30975”

输入远程服务器ip,用户名密码端口号,并测试是否链接成功

2.2 设置同步文件夹


最右边的Excluded Paths是不需要同步的文件夹,比如数据文件夹等不需要同步。

2.3 同步服务器上代码到本地

这里打开多级设置,还不好截图了,只能手机拍照了。这里在文件夹上面右击如下:

最下面的File Transfer会显示传输日志信息

代码就同步过来了。

2.3 设置代码同步,Tools->Deploment->Automatic Upload Always

就是你pycharm本地修改的代码自动也在服务器上修改


这里图上下面Browse Remote Host点开,可以在侧边栏显示远程服务器的文件目录,也可以直接在侧边栏打开

代码同步功能需要自己测试一下,比如就在pycharm修改代码,看远程服务器上面代码有没有自己同步过来。

在最下面栏,Terminal然后^可以打开远程的终端,可以vim查看代码是否同步过来了。

step3 配置解释器

3.1 一般可以直接debug

File -> Settings->Project->Python interpreter->Add interpreter->On SSH

输入密码端口号用户等信息,然后next,然后第4步project director and python
这里我设置的是第二个system interpreter,我远程环境就是直接用的系统目录下的python的,没有用conda虚拟环境。
设置python的路径,可以在远程环境下which python看看用的哪里的python
sync folders还是设置的之前的本地和远程的同步文件夹

这里理论上可以运行debug远程服务器上代码了,但是我这个比较特殊,是运行的pyorch的分布式训练的代码。运行的指令是

python -m torch.distributed.launch --nproc_per_node=1 main.py

直接点运行会报错

/usr/bin/python /code_src_debug/main.py 
./logs/testFile "/_src_debug/src/data.py", line 807, in compile_datatrain_sampler = DistributedSampler(traindata)File "/usr/local/lib/python3.6/dist-packages/torch/utils/data/distributed.py", line 65, in __init__num_replicas = dist.get_world_size()File "/usr/local/lib/python3.6/dist-packages/torch/distributed/distributed_c10d.py", line 625, in get_world_sizereturn _get_group_size(group)File "/usr/local/lib/python3.6/dist-packages/torch/distributed/distributed_c10d.py", line 220, in _get_group_size_check_default_pg()File "/usr/local/lib/python3.6/dist-packages/torch/distributed/distributed_c10d.py", line 211, in _check_default_pg"Default process group is not initialized"
AssertionError: Default process group is not initializedProcess finished with exit code 1

这里需要格外的关注pycharm第一行给我们实际运行的指令

/usr/bin/python /code_src_debug/main.py 

3.2 pytorch的分布式训练, 可以直接跑但是不能debug

可以看到pycharm实际运行的指令少了分布式的那些指令,python -m torch.distributed.launch --nproc_per_node=1 main.py,所以加上:
Run ->Edit Configurations…,在Interpreter optiins:这栏填写-m torch.distributed.launch --nproc_per_node=1

点运行按钮,可以直接运行跑了!! 这回pycharm给出的运行指令是:

/usr/bin/python -m torch.distributed.launch --nproc_per_node=1 /code_src_debug/main.py 
./logs/test

3.3 pytorch的分布式训练, 可以debug

按照上面3.2,debug运行,报错

/usr/bin/python -m torch.distributed.launch --nproc_per_node=1 /root/.pycharm_helpers/pydev/pydevd.py --multiprocess --qt-support=auto --client localhost --port 60888 --file /code_src_debug/main.py  
Traceback (most recent call last):File "/root/.pycharm_helpers/pydev/pydevd.py", line 2016, in mainsetup = process_command_line(sys.argv)File "/root/.pycharm_helpers/pydev/_pydevd_bundle/pydevd_command_line_handling.py", line 146, in process_command_lineraise ValueError("Unexpected option: " + argv[i])
ValueError: Unexpected option: --local_rank=0
Usage:pydevd.py --port N [(--client hostname) | --server] --file executable [file_options]
Traceback (most recent call last):File "/usr/lib/python3.6/runpy.py", line 193, in _run_module_as_main"__main__", mod_spec)File "/usr/lib/python3.6/runpy.py", line 85, in _run_codeexec(code, run_globals)File "/usr/local/lib/python3.6/dist-packages/torch/distributed/launch.py", line 260, in <module>main()File "/usr/local/lib/python3.6/dist-packages/torch/distributed/launch.py", line 256, in maincmd=cmd)
subprocess.CalledProcessError: Command '['/usr/bin/python', '-u', '/root/.pycharm_helpers/pydev/pydevd.py', '--local_rank=0', '--multiprocess', '--qt-support=auto', '--client', 'localhost', '--port', '60888', '--file', '/code_src_debug/main.py  ']' returned non-zero exit status 1.Process finished with exit code 1

分析: 可以看到现在debug模式pycharm给出的运行指令不一样了,

/usr/bin/python -m torch.distributed.launch --nproc_per_node=1 /root/.pycharm_helpers/pydev/pydevd.py --multiprocess --qt-support=auto --client localhost --port 60888 --file /code_src_debug/main.py  

经过一系列折腾,终于可以了,此处省略万字,

然后可以看到pycharm给出的debug的运行指令:

/usr/bin/python /root/.pycharm_helpers/pydev/pydevd.py --multiprocess --qt-support=auto --client localhost --port 50009 --file /usr/local/lib/python3.6/dist-packages/torch/distributed/launch.py --nproc_per_node=1 main.py 
Connected to pydev debugger (build 231.9225.15)
http://www.lryc.cn/news/103919.html

相关文章:

  • SAP ABAP 基础语法超详细
  • html学习3(表格table、列表list)
  • 【SpringBoot】85、SpringBoot中Boolean类型数据转0/1返回序列化配置
  • hbase优化:客户端、服务端、hdfs
  • docker安装memcached
  • Redis 客户端有哪些?
  • smbms 超市订单管理系统设计与实现计划表
  • 如何解决制造业数字化改造的障碍?
  • 代码随想录算法训练营day49
  • 云计算与大数据——部署Kubernetes集群+完成nginx部署(超级详细!)
  • Maven 打包项目后,接口识别中文乱码
  • 计算机视觉项目中的文件批量操作与文件批量预处理
  • PHP数组转对象和对象转数组
  • 前后端分离开发中的传参
  • mount: wrong fs type, bad option, bad superblock报错 ubuntu
  • 【图像分类】CNN+Transformer结合系列.3
  • IDA分析实例android_crackme/EasyJNI/Transformers/pingan2
  • 拿捏--->求一元二次方程的根
  • 深入浅出之Docker Compose详解
  • spring5源码篇(12)——spring-mvc请求流程
  • 风辞远的科技茶屋:来自未来的信号枪
  • MongoDB教程-8
  • Redis 理论部分
  • Android—Monkey用法
  • 几个影响 cpu cache 性能因素及 cache 测试工具介绍
  • Java从入门到精通(二)· 基本语法
  • 云安全攻防(三)之 面向云原生环境的安全体系
  • BGP汇总和破解水平分割
  • BUG:pm2启动verdaccio报错:Invalid or unexpected toke
  • Zookeeper笔记