DLC常见问题

更新时间:
复制 MD 格式

使用DLC模块时,可参考本页面的常见问题及解决方案。

有问题先问小PAI

PAI智能助手(小PAI)针对PAI全链路产品功能使用提供详细说明及使用指引,提供DSW实例、DLC任务、EAS服务运维诊断能力,自动诊断失败原因,提供下一步操作工具/建议。

image

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任务

创建中->排队中->环境准备中->运行中->已成功/已失败/已停止

  • 当任务执行状态为环境准备中时如何处理?

    如果任务长时间处于环境准备中状态,可能是因为您创建的分布式训练任务配置了CPFS类型的数据集,但没有配置专有网络导致的。您需要重新创建分布式训练任务,配置CPFS类型数据集并配置专有网络,且选择的专有网络需要与CPFS一致,详情请参见创建训练任务

  • 当任务执行状态为已失败时如何处理?

    您可以在任务详情页面中,将鼠标悬浮到任务执行状态后的image.png,或者查看实例操作日志,来初步定位任务执行失败的原因,详情请参见查看训练详情

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,将训练产出复制到挂载目录。训练完成后,直接从数据集对应的文件系统下载模型文件。

Q:在DLC中如何使用Docker镜像?

  • 使用Docker镜像创建DLC任务:您可以将Docker镜像推送至阿里云容器镜像服务ACR中,然后再将其添加至PAI工作空间自定义镜像中,即可在创建DLC任务时选择对应镜像启动实例。

  • 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在执行PyTorchtorch.compile(AOT编译)时,因读取缓存文件失败而报错OSError: [Errno 116] Stale file handle。

排查思路&过程:

同步复现发现:该错误通常发生在NFS(Network File System)环境下,当某个进程持有文件句柄但文件在服务器端已被删除或移动时,客户端尝试访问会导致句柄失效。

问题原因:

PyTorchAOT编译会将优化后的计算图缓存到文件系统(默认在/tmp)。在集群环境中,缓存可能写入NFS挂载的CPFS,而NFS对文件删除敏感。触发Stale file handle的条件:PyTorch自动清理旧缓存或其他进程删除了缓存目录;NFS服务器端文件被移动、删除或权限变更,但客户端仍持有旧句柄;NFS客户端缓存文件属性,可能感知不到服务器端变更。此外,CPFS基于NFS,在高并发访问时容易出现该问题;多Worker并发读写缓存会进一步引发竞争。

解决方案

  • 优先验证:强制缓存使用本地tmpfs(通过环境变量TORCHINDUCTOR_CACHE_DIR=/dev/shm/torch_cache)。

备选方案

  1. 参考Torch官方文档改用Redis作为共享缓存(需搭建Redis服务)。

  2. 检查CPFSNFS配置(noac挂载选项可能缓解但影响性能)。

  3. 禁用缓存(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资产管理创建的数据集可能仍在初始化中。

  • 挂载路径配置错误:任务配置中指定的挂载路径与数据集实际挂载点不一致。

解决方案:

  1. AI资产管理中确认数据集状态为"可用"(Available)。

  2. 如果使用CPFS数据集:创建训练任务时确保配置的VPCCPFS文件系统的VPC一致。详情请参见创建训练任务中的VPC配置说明。

  3. 检查挂载路径:在任务日志中执行 ls -la /mnt/data 确认挂载是否可访问。

  4. 如果使用OSS数据集:尝试使用存储挂载方式替代数据集挂载,兼容性更好。

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挂载排队超时。

解决方案:

  1. 重新提交任务:大多数情况下,该错误为暂时性问题,重新创建任务即可恢复。

  2. 检查存储连通性:确认数据集关联的NAS/CPFS/OSS服务状态正常,VPC和安全组配置正确。

  3. 如果问题持续出现,请联系阿里云技术支持并附上任务ID和完整错误日志。