如何在VS Code调试器中添加accelerate launch?连接拒绝报错求助
解决VS Code中使用accelerate launch调试时的ConnectionRefusedError问题
问题描述
尝试在VS Code调试命令中加入accelerate launch以提升调试效率,但终端持续报错:
ConnectionRefusedError: [Errno 111] Connection refused
使用的accelerate launch命令:
accelerate launch --num_processes=1 --num_machines=1 --mixed_precision=fp16 --dynamo_backend=no alpaca.py
整合后的调试命令:
cd /its/home/ar810/Project2 ; /usr/bin/env /its/home/ar810/Project2/.venv/bin/python /its/home/ar810/.vscode-server/extensions/ms-python.debugpy-2024.10.0-linux-x64/bundled/libs/debugpy/adapter/../../debugpy/launcher 45401 accelerate launch --num_processes=1 --num_machines=1 --mixed_precision=fp16 --dynamo_backend=no -- /its/home/msu22/Project2/1.DataGeneration/1.1PromptGeneration/alpaca.py
解决方案
问题根源在于直接将accelerate launch嵌套在debugpy launcher命令中,导致调试器无法正确与accelerate启动的进程建立连接。需改用调试器附着(attach)模式,让accelerate启动的进程主动连接调试器。
步骤1:配置VS Code的launch.json
打开.vscode/launch.json,添加附着模式的调试配置:
{ "version": "0.2.0", "configurations": [ { "name": "Attach to Accelerate", "type": "python", "request": "attach", "connect": { "host": "localhost", "port": 5678 }, "pathMappings": [ { "localRoot": "${workspaceFolder}", "remoteRoot": "/its/home/ar810/Project2" } ] } ] }
- 端口可自行修改,确保未被占用;
pathMappings需匹配本地和远程(或服务器)的工作目录。
步骤2:修改accelerate启动命令
在启动脚本前加入debugpy的监听参数,让accelerate启动的Python进程等待调试器连接:
/its/home/ar810/Project2/.venv/bin/accelerate launch --num_processes=1 --num_machines=1 --mixed_precision=fp16 --dynamo_backend=no -m debugpy --listen 5678 --wait-for-client /its/home/msu22/Project2/1.DataGeneration/1.1PromptGeneration/alpaca.py
- 直接使用虚拟环境中的
accelerate路径,避免环境冲突;--wait-for-client会让进程暂停,直到调试器连接成功。
步骤3:启动调试
- 运行上述修改后的
accelerate命令,终端会输出类似Waiting for debugger attach的提示; - 在VS Code的调试面板中选择
Attach to Accelerate配置,启动调试。
额外排查点
- 端口冲突:用
lsof -i :5678检查端口是否被占用,若占用则更换端口; - 路径正确性:确认脚本路径、工作目录无误,避免进程启动失败间接引发连接拒绝;
- 虚拟环境一致性:确保
accelerate和debugpy都安装在目标虚拟环境中,避免依赖版本不兼容。
内容的提问来源于stack exchange,提问作者adjr
相关产品推荐
相关产品推荐

