take effect, and it will only be applied to other Parameters! E:\PaddleX\paddle\fluid\executor.py:1070: UserWarning: The following exception is not an EOF exception. Process Process-1:2: Traceback (most recent call last): File "multiprocessing\process.py", line 297, in _bootstrap File "multiprocessing\process.py", line 99, in run File "paddlexui\pms\model_tasks\tasks.py", line 68, in _call_paddlex_train File "paddlexui\pms\model_tasks\train\detection.py", line 203, in train File "site-packages\paddlex\cv\models\yolo_v3.py", line 171, in train File "site-packages\paddlex\cv\models\ppyolo.py", line 362, in train File "site-packages\paddlex\cv\models\base.py", line 493, in train_loop File "site-packages\paddle\fluid\executor.py", line 1071, in run File "site-packages\six.py", line 703, in reraise File "site-packages\paddle\fluid\executor.py", line 1066, in run File "site-packages\paddle\fluid\executor.py", line 1156, in _run_impl File "site-packages\paddle\fluid\compiler.py", line 443, in _compile File "site-packages\paddle\fluid\compiler.py", line 396, in _compile_data_parallel paddle.fluid.core_avx.EnforceNotMet: -------------------------------------------- C++ Call Stacks (More useful to developers): -------------------------------------------- Windows not support stack backtrace yet. ---------------------- Error Message Summary: ---------------------- PermissionDeniedError: Your machine has multiple cards, but the WITH_NCCL option is not turned on during compilation, and you cannot use multi-card training or prediction. Please recompile and turn on the WITH_NCCL option. [Hint: Expected places.size() == 1, but received places.size():6 != 1:1.] at (D:\1.8.4\paddle\paddle\fluid\framework\parallel_executor.cc:480)
时间: 2025-06-02 22:11:24 浏览: 32
### PaddleX多卡训练时出现PermissionDeniedError错误的解决方案
在PaddleX框架中进行多卡训练时,如果遇到`PermissionDeniedError`错误,通常与以下因素有关:环境配置问题、NCCL相关设置、权限问题或编译选项未正确启用。以下是针对该问题的详细分析和解决方法。
#### 1. 环境配置检查
确保所有GPU设备对当前用户具有访问权限。可以通过以下命令检查GPU设备的权限:
```bash
ls -l /dev/nvidia*
```
如果发现权限不足,可以使用以下命令修改权限:
```bash
sudo chmod a+r /dev/nvidia*
```
此外,确认是否正确安装了CUDA驱动程序和NCCL库,并且版本兼容。例如,CUDA 11.x需要对应版本的NCCL支持[^1]。
#### 2. NCCL相关设置
`PermissionDeniedError`可能与NCCL通信失败有关。尝试通过设置环境变量来排查问题。例如:
- 设置`NCCL_DEBUG=INFO`以获取更详细的日志信息。
- 如果使用的是RTX 4000系列显卡,可能需要禁用P2P和InfiniBand功能,设置以下环境变量[^3]:
```bash
export NCCL_P2P_DISABLE=1
export NCCL_IB_DISABLE=1
```
#### 3. WITH_NCCL编译选项
如果PaddlePaddle框架未正确启用`WITH_NCCL`编译选项,可能导致多卡训练失败。可以通过以下方式验证并重新编译:
- 检查是否启用了`WITH_NCCL`选项:
```bash
python -c "import paddle; print(paddle.distributed.parallel.ParallelEnv().nccl_version)"
```
如果返回为空或报错,则说明`WITH_NCCL`未正确启用。需要重新编译PaddlePaddle,并确保在编译时添加`-DWITH_NCCL=ON`选项[^4]。
#### 4. 权限问题排查
确保运行脚本的用户具有足够的权限访问所有GPU设备和共享内存区域。可以通过以下命令检查共享内存权限:
```bash
ipcs -m
```
如果发现权限不足,可以使用以下命令调整:
```bash
sudo sh -c 'echo 800000000 > /proc/sys/kernel/shmmax'
```
#### 5. 多卡训练脚本示例
以下是一个多卡训练的示例脚本,确保按照正确的格式启动训练任务:
```bash
python -m paddle.distributed.launch --gpus="0,1" train.py
```
其中`--gpus`参数指定了使用的GPU编号。
#### 6. 日志分析
如果上述方法仍未解决问题,建议收集完整的错误日志并分析。重点关注以下内容:
- 是否存在显存不足的问题。
- 是否有网络通信异常(如NCCL错误)。
- 是否有文件读写权限问题。
---
###
阅读全文
相关推荐



















