vscode 单步调试docker容器内的分布式程序

vscode连接远程服务器,并在docker中利用torchrun分布式调试代码

遇到的问题: 我之前使用的经验是在conda 中调试,并且代码的启动方式是python XX.py 。像这样在docker容器内部并且调试多卡执行的程序着实费了一番功夫,下文主要是解决在vscode中调试分布式程序时的经验

vscode 连接远程服务器准备

远程资源管理器 的 SSH配置文件中,添加服务器的用户名和地址
点击小齿轮这里就可以添加啦

docker准备 (略)

在远程服务器中,

  1. 安装docker
  2. 拉取镜像
  3. 创建容器

在vscode中安装docker扩展

安装好之后会看到:

  1. 侧边栏有一个鲸鱼🐳图标
  2. 远程服务器所有的容器以及他们的状态
  3. 远程服务器所有的镜像
    在这里插入图片描述

从容器中新建VSCode窗口

  1. 在我们想要调试环境的容器中,附加VScode。右键待选择的容器选择 “附加Visual Studio Code”。此操作会新建一个VScode窗口
  2. 会等待一段时间,会新打开一个窗口,在这个窗口中新建的终端都是在容器环境内的
  3. 新建的窗口可能会导致原来安装的插件不可用。
  4. 在新建窗口的资源管理器中打开需要远程调试的文件夹,操作和不在docker里面调试是相同的。
    在这里插入图片描述

配置文件

  1. 在运行和调试中,编辑launch.json文件。
    例如原来启动的shell脚本:
export CUDA_DEVICE_MAX_CONNECTIONS=1
export OMP_NUM_THREADS=1
export CUDA_VISIBLE_DEVICES=4,5

torchrun --nproc_per_node 8 --nnodes 2 --node_rank 0 \
  XXX.test.py \
  --dataset-path xxx \
  --iteration xxx \
  --lr xxx \

则转到launch.json文件的内容为:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "megatron-core",  //名字自定义
            "type": "python",      
            "request": "launch",
            "program": "/usr/local/bin/torchrun",  // torchrun的位置,可在终端中执行which torchrun得到
            "console": "integratedTerminal",
            "env": {
                "CUDA_DEVICE_MAX_CONNECTIONS": "1",
                "OMP_NUM_THREADS": "1",
                "CUDA_VISIBLE_DEVICES": "4,5",
                "PYTHONPATH": "/xxx/xxx/file_path1:/xxx/xxx/file_path2" // 放入自己的文件的路径,冒号分隔
            },
            "args": [
                "--nproc_per_node",
                "8",
                "--nnodes",
                "2",
                "--node_rank",
                "0",
                "XXX.test.py", //建议绝对路径
                "--dataset-path",
                "xxx",
                "--iteration",
                "xxx",
                "--lr",
                "xxx",
            ]
        }
     ]
}

具体来说,要注意三个地方:

  • “program” 后面是torchrun的位置
  • “env” 后面是环境变量,冒号后面接每个环境变量的值
  • “args” 后面是原来torchrun命令后面的所有的内容,包括节点数量等。每个值用双引号指定。

launch.json中的内容 根据自己的任务修改

调试

在运行和调试中, 选择自己写好的配置,就可以单步调试执行了。
在这里插入图片描述

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 要在VSCode中进行远程调试docker容器,可以按照以下步骤进行操作。首先,确保你已经安装了VSCodeDocker,并且已经在远程服务器上启动了docker daemon。然后,使用VSCode的remote-ssh插件连接到远程服务器。在远程服务器的命令行中启动docker,并在docker容器中配置ssh连接。你可以修改ssh的config文件,允许root用户远程登录,并设置root用户的密码。接下来,在VSCode中使用remote-ssh插件连接到docker容器进行远程调试。你可以在VSCode的配置文件中添加相关的主机配置,包括主机名、用户名、端口等信息。然后,你就可以在VSCode中进行远程调试docker容器内的代码了。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [VSCode连接远程的docker容器进行代码调试](https://blog.csdn.net/TracelessLe/article/details/119060513)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [vscode连接docker远程调试](https://blog.csdn.net/DCGJ666/article/details/108536065)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值