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配置步骤:
- 找到torch的分布式路径,建立软连接到pyskl项目中:
ln -s /home/usr/anaconda3/envs/python-37/lib/python3.7/site-packages/torch/distributed/ /home/usr/code/pyskl
- 打开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 - 打断点,debug。
需要注意的点是:Debug Configuration中的路径都是本地路径,脚本里面的路径是服务器中对应的路径。dist_test.sh同理。
|