pythonvisual-studio-codepytorchvscode-debugger

How to make VScode launch.json for a Python module


I'm researching self-supervised machine learning code.

And I have wanted to debug the code with python debugger not pdb.set_trace(). This is python command for ubuntu terminal.

python -m torch.distributed.launch --nproc_per_node=1 main_swav.py \
--data_path /dataset/imagenet/train \
--epochs 400 \
--base_lr 0.6 \
--final_lr 0.0006 \
--warmup_epochs 0 \
--batch_size 8 \
--size_crops 224 96 \
--nmb_crops 2 6 \
--min_scale_crops 0.14 0.05 \
--max_scale_crops 1. 0.14 \
--use_fp16 true \
--freeze_prototypes_niters 5005 \
--queue_length 380 \
--epoch_queue_starts 15\
--workers 10

In order to debug the code with VScode, I tried to revise launch.json like below as referring stackoverflow question

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "module": "torch.distributed.launch --nproc_per_node=1 main_swav.py",
            "request": "launch",
            "console": "integratedTerminal",
            "args": ["--data_path", "/dataset/imagenet/train"]
        }
    ]
}

I knew this would not work...

Could you give me some advice?


Solution

  • Specify the module you want to run with "module": "torch.distributed.launch"

    You can ignore the -m flag. Put everything else under the args key.

    Note: Make sure to include --nproc_per_node and the name of file (main_swav.py) in the list of arguments

    {
        "version": "0.2.0",
        "configurations": [
            {
                "name": "Python: Current File",
                "type": "debugpy",
                "module": "torch.distributed.launch",
                "request": "launch",
                "console": "integratedTerminal",
                "args": [
                    "--nproc_per_node", "1", 
                    "main_swav.py",
                    "--data_path", "/dataset/imagenet/train",
                ]
            }
        ]
    }
    

    Read more here: https://code.visualstudio.com/docs/python/debugging#_module