文档

AIACC-Training常见问题

更新时间:

本章节汇总了使用AIACC-Training时的常见问题。

容器内运行多卡分布式训练,触发NCCL unhandled error报错

设置NCCL_DEBUG=INFO,如果log信息如下所示,则需要在启动容器时,在nvidia-docker run的命令行中加入参数--shm-size=1g --ulimit memlock=-1


hzh-perseus-5868d9dfdb-q664k:34486:37433 [3] include/shm.h:28 NCCL WARN Call to posix_fallocate failed : No space left on device
hzh-perseus-5868d9dfdb-q664k:34486:37433 [3] NCCL INFO include/shm.h:41 -> 2

hzh-perseus-5868d9dfdb-q664k:34486:37433 [3] include/shm.h:48 NCCL WARN Error while creating shared memory segment nccl-shm-recv-31b93889a892fca7-0-2-3 (size 4460544)
                        

Perseus无法正常启动,遇到框架相关的Undefined symbols报错

请排查Perseus的版本和框架版本是否兼容。Perseus的版本号第一部分是Perseus自身的版本,第二部分是对应的框架版本,对应的框架版本必须与当前所使用的框架版本一致。

Perseus启动遇到链接错误:libcuda.so.1: cannot open shared object file: No such file or directory

请排查是否安装了CUDA驱动以及CUDA SDK。

Perseus启动遇到libcudart.so.X.Y: cannot open shared object file: No such file or...类似的报错

排查CUDA版本是否与当前的Perseus版本一致。

容器环境下,在nccl_comm.cpp内出现类似unhandled system error报错

可能与shm设置相关,需要修改容器启动参数,增大shm的分配,参数为--shm-size=1g --ulimit memlock=-1

Perseus报错python: double free or corruption

可能原因有如下两种:

  • 不同rank中传入的相同tensor_name的shape或size不一致,本质上用法也是不正确的,不同shape无法进行allreduce操作。

  • 不同rank执行的时序有较大差异,您可以在epoch的结束后进行一次同步,比如MXNet下可以使用kv._barrier(); mx.nd.waitall()

训练结束后未正常退出

python层面结束后会触发exit信号给perseus后端,但是python层面并没有真正结束,有可能是模型代码中存在额外的数据读取进程保持着导致无法正常结束主进程,其中一种解决方法是在所有运行结束后,主进程执行显式退出:import sys; sys.exit(0)

启动环节异常慢,查看系统的线程数非常多,有大量omp相关的线程

一般情况下,单GPU分配4个以内的omp线程是合适的,设置export OMP_NUM_THREADS=4或者更低可以解决此类问题。

  • 本页导读 (1)
文档反馈