解决步骤
- 一、报错详情
- 二、解决思路
- 1. 创建.sh运行文件
- 2. YOLO训练脚本文件
- 3. 终端命令
- 4. 成功运行
一、报错详情
subprocess.CalledProcessError: Command '['/home/xxx/anaconda3/envs/openmmlab/bin/python', '-m', 'torch.distributed.run', '--nproc_per_node', '3', '--master_port', '45955', '/home/xxx/.config/Ultralytics/DDP/_temp_k27mw9_0140144378558880.py']' returned n
二、解决思路
先看这一篇能否顺利解决你的问题【已解决】yolov8 多卡训练报错subprocess.CalledProcessError
文中提到在train
文件增加find_unused_parameters=True
参数。不过官方最新版本已经帮我们加了这个参数了。
1. 创建.sh运行文件
我们可以在ultralytics
目录下创建一个run.sh
文件,复制粘贴如下代码,根据自身代码环境完成相应替换:
#!/bin/bashPYTHON_PATH="/home/xxx/anaconda3/envs/xxx/bin/python" # 替换自己的python文件路径export CUDA_VISIBLE_DEVICES=3,4,5 # 选择相应多GPU位置
export MASTER_ADDR=localhost
export MASTER_PORT=29501 # 选择没有冲突的接口默认29500
export WORLD_SIZE=2
export OMP_NUM_THREADS=1
export NCCL_DEBUG=INFO$PYTHON_PATH -m torch.distributed.launch \--nproc_per_node=3 \ # GPU个数--master_port=29501 \ --node_rank=0 \--master_addr=localhost \/home/xxx/ultralytics/train.py # 自己的训练脚本文件
2. YOLO训练脚本文件
在 /home/xxx/ultralytics/train.py
中输入
from ultralytics import YOLO# Load a model
model = YOLO("/home/xxx/ultralytics/ultralytics/cfg/models/11/yolo11s-xxx.yaml") # build a new model from YAML# Train the model
results = model.train(data="/home/xxx/ultralytics/ultralytics/cfg/datasets/xxx.yaml", batch=15, epochs=200, imgsz=640)
3. 终端命令
切换ultralytics
项目文件夹目录
cd /home/xxx/ultralytics/run.sh
运行run.sh
文件
./run.sh