vscode调试pytorch分布式训练

launch.json文件如下"cwd"= "${fileDirname}"表示代码调试的根目录是当前你调试的文件,也就是pretrain.py所在的目录。其他路径参数都是相对这个目录的

如果改成"cwd"= "${workspaceFolder}" 表示代码调试的根目录是打开的工作目录,也就是你vscode打开的工程文件夹的目录

"program"参数是是我们要运行的文件,默认是"program": "${file}",也就是你要调试的文件本身,

比如不调试分布式的话,就是pretrain.py,分布式的话要改成"program": "/root/miniconda3/lib/python3.10/site-packages/torch/distributed/run.py"表示我们其实是要运行这个文件,然后加入args参数,把pretrain.py作为一个参数

注意:pytorch1.9之后torch.distributed.launch 即将被废弃,取而代之的是torch.distributed.run

https://www.cnblogs.com/tencent-cloud-native/p/15186403.html

而torchrun脚本就是torch.distributed.run的内容,所以在终端运行的话

bash 复制代码
python -m torch.distributed.run --nproc_per_node=8 pretrain.py --config ./configs/Pretrain.yaml --output_dir output/Pretrain

和

bash 复制代码
torchrun --nproc_per_node=8 pretrain.py --config ./configs/Pretrain.yaml --output_dir output/Pretrain

二者是等价的,终端直接输入torchrun

bash 复制代码
root@autodl-container-115911b7ae-3dcde09d:~# torchrun
usage: torchrun [-h] [--nnodes NNODES] [--nproc_per_node NPROC_PER_NODE]
                [--rdzv_backend RDZV_BACKEND] [--rdzv_endpoint RDZV_ENDPOINT]
                [--rdzv_id RDZV_ID] [--rdzv_conf RDZV_CONF] [--standalone]
                [--max_restarts MAX_RESTARTS] [--monitor_interval MONITOR_INTERVAL]
                [--start_method {spawn,fork,forkserver}] [--role ROLE] [-m] [--no_python]
                [--run_path] [--log_dir LOG_DIR] [-r REDIRECTS] [-t TEE]
                [--node_rank NODE_RANK] [--master_addr MASTER_ADDR]
                [--master_port MASTER_PORT]
                training_script ...
torchrun: error: the following arguments are required: training_script, training_script_args
root@autodl-container-115911b7ae-3dcde09d:~# which torchrun
/root/miniconda3/bin/torchrun

但vscode调试配置如下,如果直接用"program": "/root/miniconda3/bin/torchrun"也是可以的

"name": "Python: Current File", 可以改成 "name": "Python: torchrun" 不过这个不影响,只是调试窗口名字

python 复制代码
{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "/root/miniconda3/lib/python3.10/site-packages/torch/distributed/run.py",
            "console": "integratedTerminal",
            "justMyCode": false,
            "cwd": "${fileDirname}",
            "args": [
                "--nproc_per_node=1",
                "pretrain.py",
                "--config=./configs/pretrain.yaml",
                "--output_dir=output/Pretrain"
            ],
            // "env": {"CUDA_VISIBLE_DEVICES":"0"},

        }
    ]
}

最后:建议在每个工程都创建一个.vscode文件夹,在里面建一个lanuch.json文件,因为每个工程运行脚本肯定都不一样,不要在/root目录搞一个.vscode文件夹,不然你每次都是打开/root文件夹都要修改lanuch.json的内容,每次VSCODE都只打开一个工程,不要直接打开root目录

相关推荐
长成一棵参天树4 小时前
React15 vs React16 核心区别
git·vscode
田里的水稻6 小时前
FA_CNN卷积神经网络四---线性层及其拉平PyTorch
人工智能·pytorch·python·深度学习·神经网络·cnn
GPU实战笔记7 小时前
NVIDIA L40S 云端任务验证:训练、推理与生成工作流怎样先试再租
pytorch·ai生成·gpu租用·nvidia l40s
QN1幻化引擎7 小时前
信号场注意力(SFA):把 KV Cache 变成 O(1) 的双通道注意力——0.1B/0.3B 受控 A/B 精度反升 15.5% / 24.3%
pytorch·深度学习·大模型·transformer·注意力机制·推理优化
田里的水稻7 小时前
FA_CNN卷积神经网络二---PyTorch
人工智能·pytorch·python·深度学习·cnn
golang学习记9 小时前
IDEA 的 Java 智能,现在跑到 Cursor 和 VS Code 里去了
java·ide·vscode·intellij-idea·claude code
lucas_AI10 小时前
Google 和 Meta 把 TPU 变成 PyTorch「原生设备」:TorchTPU 开源,device="cuda" 改一个词就能上 TPU
pytorch
Time_Memory_cici11 小时前
在Windows系统安装Pycharm以及PyTorch方法
pytorch·windows·pycharm
田里的水稻1 天前
FA_CNN卷积神经网络七---优化器PyTorch
人工智能·pytorch·深度学习·神经网络·cnn
纪伊路上盛名在1 天前
windows 配置vscode x11转发
ide·vscode·编辑器