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

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

文章目录

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

  File "/_src_debug/src/data.py", line 807, in compile_data
    train_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_size
    return _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 initialized

Process 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 main
    setup = process_command_line(sys.argv)
  File "/root/.pycharm_helpers/pydev/_pydevd_bundle/pydevd_command_line_handling.py", line 146, in process_command_line
    raise 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_code
    exec(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 main
    cmd=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)
相关推荐
D-海漠1 小时前
安全光幕Muting功能程序逻辑设计
服务器·网络·人工智能
CCF_NOI.1 小时前
从底层架构到多元场景:计算机构成与应用的深度剖析
大数据·linux·运维·服务器·计算机
都给我2 小时前
可计算存储(Computational Storage)与DPU(Data Processing Unit)的技术特点对比及实际应用场景分析
运维·服务器·网络·云计算
₯㎕星空&繁华2 小时前
Linux—进程状态
linux·运维·服务器·笔记
小毛驴8503 小时前
Visual Studio Code (VSCode) 的常用快捷键
ide·vscode·编辑器
ALLSectorSorft4 小时前
相亲小程序用户注册与登录系统模块搭建
java·大数据·服务器·数据库·python
hzsnone5 小时前
公网服务器上Nginx或者Openresty如何屏蔽IP直接扫描
服务器·nginx·openresty
NullPointerExpection5 小时前
win10 环境删除文件提示文件被使用无法删除怎么办?
java·ide·windows·win10
C++ 老炮儿的技术栈5 小时前
在vscode 如何运行a.nut 程序(Squirrel语言)
c语言·开发语言·c++·ide·vscode·算法·编辑器
wyjcxyyy6 小时前
打靶日记-RCE-labs(续)
linux·运维·服务器