使用DLC模块时,可参考本页面的常见问题及解决方案。
有问题先问小PAI
PAI智能助手(小PAI)针对PAI全链路产品功能使用提供详细说明及使用指引,提供DSW实例、DLC任务、EAS服务运维诊断能力,自动诊断失败原因,提供下一步操作工具/建议。

Q:DLC 任务长时间处于“排队中状态”,且资源监控显示总体资源充足,该如何排查?
资源监控页面显示的通常是资源池的配额总量,而任务调度器在分配资源时,是以单节点可用资源为匹配条件的。即使集群总资源充足,若单个节点无法满足任务所需的完整资源组合(如 CPU+GPU),任务仍会排队。
请根据以下常见原因进行排查和优化:
1. 资源碎片化(最常见原因)
-
现象描述:GPU 资源集中在少数节点,但这些节点上的 CPU 或内存已被其他任务占用,导致剩余资源无法满足当前任务对“CPU+GPU”的组合需求。
-
解决方案:尝试停止部分低优先级的占用任务,释放节点资源后重新提交目标任务。适当调小任务所需的 CPU 规格后重试,以适配当前碎片化的资源状况。
2. 请求的单节点资源规格过大
-
现象描述:任务请求的单节点资源规格(如 CPU 核数、内存大小)超过了资源组内任意一个节点的实际可用量。
-
解决方案:检查资源组中各节点的实际配置。尝试缩小任务的单节点资源规格(例如减少 CPU 核数),确认是否能正常调度。
3. 并发任务竞争与优先级问题
-
现象描述:多个任务同时竞争同一资源池,较低优先级的任务需等待高优先级任务释放资源。
-
解决方案:合理配置任务优先级。将非紧急任务错峰提交,避免在高峰时段集中竞争资源。
4. 错误代码指引
-
若任务报错
Resource queue timeout, lack of sufficient resources,请重点确认当前资源组中各节点的实际可用 CPU/GPU 数量,而非仅看总量。
Q:模型训练时报错:SupportsDistributedTraining false, please set InstanceCount=1
-
报错原因:当前训练任务启用了多个实例(节点数大于1),但该模型不支持分布式训练。
-
解决方案:将节点数量设置为1。
Q:模型训练时报错:failed to compose dlc job specs, resource limiting triggered, you are trying to use more GPU resources than the threshold
训练任务当前限制最多同时运行2*GPU,超过会触发资源限制。请等待正在运行中的训练任务完成再启动,或提交工单申请增加配额。
Q:“exited with code 137”,遇到错误码137怎么办?
错误码137表示进程被SIGKILL强制中止,最常见原因是内存溢出(OOM)。可结合任务详情中worker的内存水位确认,然后选择:更换内存规格更大的实例、增加worker数量,或减少代码中的内存申请量。
Q:当DLC任务执行状态为已失败或已出队时该如何处理?
DLC的任务执行状态顺序为:
|
任务类型 |
任务执行状态顺序 |
|
|
使用按量计费资源提交DLC任务 |
使用灵骏智算竞价资源 |
|
|
使用灵骏智算或通用计算公共资源 |
|
|
|
使用包年包月资源提交DLC任务 |
|
|
Q:使用公共资源的DLC任务后期能调整为专属资源吗?
DLC任务不支持直接调整资源类型,需重新创建。单击原始任务操作列下的克隆,在新任务中选择专属资源,原有参数自动带入。关于计费详情,请参见分布式训练(DLC)计费说明。
Q:在DLC中使用多机多卡如何设置?
您可以在创建DLC任务时,配置以下启动命令,更多配置详情,请参见创建训练任务。
python -m torch.distributed.launch \ --nproc_per_node=2 \ --master_addr=${MASTER_ADDR} \ --master_port=${MASTER_PORT} \ --nnodes=${WORLD_SIZE} \ --node_rank=${RANK} \ train.py --epochs=100
Q:如何将在PAI-DLC平台训练得到的模型下载到本地?
在任务的环境信息中添加自定义数据集,将挂载路径设置为 /mnt/data/,然后在启动命令中加入 cp -r ./output /mnt/data,将训练产出复制到挂载目录。训练完成后,直接从数据集对应的文件系统下载模型文件。
-
如何在提交DLC任务时绑定数据集,请参见创建训练任务。
-
如何将对象存储OSS文件系统中的文件下载到本地,请参见控制台快速入门。
-
如何将NAS文件系统中的文件下载到本地,请参见函数计算挂载文件系统。
Q:在DLC中如何使用Docker镜像?
-
使用Docker镜像创建DLC任务:您可以将Docker镜像推送至阿里云容器镜像服务ACR中,然后再将其添加至PAI工作空间自定义镜像中,即可在创建DLC任务时选择对应镜像启动实例。
-
将Docker镜像推送至容器镜像服务ACR中,请参见使用个人版实例推送拉取镜像。
-
添加PAI自定义镜像,请参见自定义镜像。
-
-
在DLC容器中安装和使用Docker:DLC任务本身运行在容器中,因此无法在DLC中再安装和使用Docker。
Q:DLC 任务有部分节点已经完成要怎么配置才能释放给其他dlc使用?
问题描述:
在DLC任务启动多worker分布式训练任务时,由于每个worker数据不完全一致(比如数据倾斜),会有部分worker先完成,并正常退出的现象。但是默认配置下,部分worker仍会占用调度的节点。
解决方案:参考PAI-DLC高级参数ReleaseResourcePolicy,将其配置为 pod-exit。默认情况下资源在整个任务完成后才释放;设置为 pod-exit 后,worker退出即释放对应资源。
Q:DLC任务报错OSError: [Errno 116] Stale file handle?
问题描述:
多个Worker在执行PyTorch的torch.compile(AOT编译)时,因读取缓存文件失败而报错OSError: [Errno 116] Stale file handle。
排查思路&过程:
同步复现发现:该错误通常发生在NFS(Network File System)环境下,当某个进程持有文件句柄但文件在服务器端已被删除或移动时,客户端尝试访问会导致句柄失效。
问题原因:
PyTorch的AOT编译会将优化后的计算图缓存到文件系统(默认在/tmp)。在集群环境中,缓存可能写入NFS挂载的CPFS,而NFS对文件删除敏感。触发Stale file handle的条件:PyTorch自动清理旧缓存或其他进程删除了缓存目录;NFS服务器端文件被移动、删除或权限变更,但客户端仍持有旧句柄;NFS客户端缓存文件属性,可能感知不到服务器端变更。此外,CPFS基于NFS,在高并发访问时容易出现该问题;多Worker并发读写缓存会进一步引发竞争。
解决方案:
-
优先验证:强制缓存使用本地tmpfs(通过环境变量TORCHINDUCTOR_CACHE_DIR=/dev/shm/torch_cache)。
备选方案:
-
参考Torch官方文档改用Redis作为共享缓存(需搭建Redis服务)。
-
检查CPFS的NFS配置(noac挂载选项可能缓解但影响性能)。
-
禁用缓存(TORCHINDUCTOR_CACHE_DIR="",但牺牲编译性能)。
Q:DLC出队失败,错误码roleMaximumResource ?
问题描述:
DLC任务长时间处于排队中,但资源充足,节点也未发现故障:
任务请求资源为 CPU: 512、内存: 4.00 TiB、GPU: 32,超出角色 PAI.WorkspaceOutsider 的配额上限(CPU: 184、Memory: 1800、GPU: 8),完整错误信息为 {"CodeType":"ConfigRule","Code":"roleMaximumResource","Reason":"Current Limit is CPU: 184 limited by Role PAI.WorkspaceOutsider.Memory: 1800 limited by Role PAI.WorkspaceOutsider.GPU: 8 limited by Role PAI.WorkspaceOutsider."}。
排查思路&过程:
即使主账号赋予了管理员权限,仍可能失败,此时报错角色变为PAI.WorkspaceAdmin:
此时出队失败原因列显示完整错误信息:{"CodeType":"ConfigRule","Code":"roleMaximumResource","Reason":"Current Limit is CPU: 184 limited by Role PAI.WorkspaceAdmin. Memory: 1800 limited by Role PAI.WorkspaceAdmin. GPU: 8 limited by Role PAI.WorkspaceAdmin."},表明当前角色的资源配额上限为 CPU 184、Memory 1800、GPU 8。
问题原因:
原因是工作空间管理员还限制了资源使用额度:
在工作空间的资源使用额度配置中,可查看各角色(如管理员、算法开发、算法运维)对应的最高可使用 GPU 卡数、最高可使用 CPU 核数和最高可使用内存数等限制,单击修改配置可调整相关额度。
解决方案:
让工作空间管理员取消该限制,或者将限制提升到DLC所需的资源以上即可。
Q:访问/mnt/data数据集报错"Transport endpoint is not connected"?
问题描述:
DLC任务启动后,执行命令中访问已挂载的数据集路径(如/mnt/data)时报错:Transport endpoint is not connected,表示NFS挂载点已断开连接。
常见原因:
-
CPFS VPC不匹配:使用CPFS数据集时,训练任务所在VPC必须与CPFS文件系统的VPC一致,否则挂载失败。
-
数据集未就绪:通过AI资产管理创建的数据集可能仍在初始化中。
-
挂载路径配置错误:任务配置中指定的挂载路径与数据集实际挂载点不一致。
解决方案:
Q:DLC任务一直卡在"环境准备中",报错"Unable to attach or mount volumes"?
问题描述:
DLC任务启动过程中,一直卡在网络初始化/环境准备阶段,日志中出现如下报错:
Unable to attach or mount volumes: unmounted volumes=[hostpath-volume], unattached volumes=[...]: timed out waiting for the condition
常见原因:
-
节点磁盘空间不足:计算节点本地磁盘空间已满,无法挂载hostpath-volume。
-
存储后端异常:NAS/CPFS/OSS等存储后端出现暂时性故障或连接超时。
-
节点资源争抢:多个任务同时调度到同一节点,导致volume挂载排队超时。
解决方案:
-
重新提交任务:大多数情况下,该错误为暂时性问题,重新创建任务即可恢复。
-
检查存储连通性:确认数据集关联的NAS/CPFS/OSS服务状态正常,VPC和安全组配置正确。
-
如果问题持续出现,请联系阿里云技术支持并附上任务ID和完整错误日志。
,或者查看实例操作日志,来初步定位任务执行失败的原因,详情请参见