pycharm中调试pyskl的训练脚本

pyskl源代码: https://github.com/kennymckormick/pyskl
开发环境: Pycharm远程Linux服务器

首先pyskl提供的训练脚本是写在dist_train.sh里的,而bash文件又不是很方便调试,所以直接调用写在bash中的命令。
打开dist_train.sh可以看到以下内容:

CONFIG=$1
GPUS=$2
PORT=${PORT:-29500}

MKL_SERVICE_FORCE_INTEL=1 PYTHONPATH="$(dirname $0)/..":$PYTHONPATH \
python -m torch.distributed.launch --nproc_per_node=$GPUS --master_port=$PORT \
    $(dirname "$0")/train.py $CONFIG --launcher pytorch ${@:3}

调用dist_train.sh文件的命令:

bash tools/dist_train.sh {config_name} {num_gpus}

bash文件中的各个参数为:
config是配置文件,跟在train.py后面。
gpus是使用gpu数量,可以在参数nproc_per_node中设置。
port是进程端口号,可以在参数master_port中设置。
第四行是环境参数,在debug configurations的环境参数中设置(效果未知)。
第五行是python命令,调用分布式launch.py文件(现在改为使用run.py)。
第六行是train.py文件,参数-launcher默认pytorch,可忽略。

在pycharm配置步骤

  1. 找到torch的分布式路径,建立软连接到pyskl项目中:
ln -s /home/usr/anaconda3/envs/python-37/lib/python3.7/site-packages/torch/distributed/ /home/usr/code/pyskl
# dist_train.sh中的launch.py就在该torch/distributed文件夹中
  1. 打开pycharm的Debug Configuration(右上角):
    选择需要调试的xx.py脚本进行debug(或者鼠标右键脚本-debug xx.py)
    Configuration -> Script path -> 选择本地的run.py(路径参考:D:\Project\pyskl\distributed\run.py)
    Parameters输入 --nproc_per_node=2 --master_port=29510 D:\Project\pyskl\tools\train.py D:\Project\pyskl\configs\stgcn++\…\joint.py
    joint.py中的dataset路径需要是ann_file=’/home/usr/code/pyskl/data/xxx/xxx.pkl’, work_dir=’/home/usr/code/pyskl/work_dirs/xxx’
    Environment variables输入PYTHONUNBUFFERED=1;CUDA_VISIBLE_DEVICES=0,1;MKL_SERVICE_FORCE_INTERL=1
    Python interpreter选择当前项目的解释器
    Working directory是D:\Project\pyskl\distributed
  2. 打断点,debug。

需要注意的点是:Debug Configuration中的路径都是本地路径,脚本里面的路径是服务器中对应的路径。dist_test.sh同理。

你可能感兴趣的:(pycharm,python,ide)