应知应会
在故障定位之前,请确保您已熟悉HCCL相关基本概念及故障定位辅助功能。
对于HCCL来说,故障码会涵盖大部分常见问题,如果报错中未包含故障码信息,或故障码信息为EI9999,可能为较为少见的故障场景或HCCL内部问题,请基于实际的CANN日志和代码进行分析,如果无法解决请联系技术支持。
对于没有清晰首报错的问题,大集群故障定位时,需要梳理每个rank的行为,通过rank之间的依赖关系找到根节点。面对这个难题,HCCL提供了建链根节点定位能力和集群心跳能力,并会在常见问题中给出诊断结果,相关原理请参见建链失败定位思路、集群心跳机制 。
本文档适用场景如下:
- 本文档对HCCL的实现机制的描述,仅用于解释各类故障模式机理,辅助分析故障现象和定位原因。如果在运行机制方面的内容和该机制相关介绍文档不符,请优先参考运行机制对应文档。
- 本文档中的部分CANN日志示例随着版本更新,内容会有所调整,用户可重点关注日志中的关键信息,如有较大的差异,请以实际的日志信息为准。
- 当业务发生HCCL异常时,在CANN日志中会有HCCL组件的报错日志信息,若在CANN日志中没有发现HCCL组件的报错日志,需排查是否有其他组件的报错信息,若无报错,请注意训练脚本本身有无异常、是否存在core dump或进程卡住等异常情况。
故障诊断相关环境变量
- HCCL_CONNECT_TIMEOUT、HCCL_EXEC_TIMEOUT
HCCL在建链阶段和执行阶段的超时时间,建议HCCL_CONNECT_TIMEOUT配置的时间小于HCCL_EXEC_TIMEOUT配置的时间,以保证复杂场景下能够正确的上报首报错信息,以区分异常业务进程被阻塞的原因是本端还是远端。
- HCCL_ENTRY_LOG_ENABLE
HCCL算子级入参记录开关,如果集群行为一致性问题无法通过其他手段锁定异常原因时,可以使能此环境变量,记录不同rank上的集合通信行为,通过卡间横向比对辅助找到行为差异引入点。
- HCCL_DEBUG_CONFIG
HCCL模块级日志开关,进行算子开发调试时可以通过此配置分析算子内部的算法选择、任务编排等日志信息。
- HCCL_DFS_CONFIG
HCCL高级故障探测配置能力,详见环境变量说明,建议使用默认值。
- 当HCCL报错时会在CANN日志的debug目录下打印关键的故障信息;同时在使用部分训练框架的业务场景下,HCCL也会在业务的日志中打印关键的报错信息;
- HCCL在CANN日志的run目录下会默认记录一些关键运行日志,如通信域的初始化与析构(默认打印)、通信算子的下发(需开启HCCL_ENTRY_LOG_ENABLE环境变量)等,关键日志示例如下:
- 通信域初始化。
Entry-HcclGetRootInfo:rootInfo[0x7fffcd65f130], deviceLogicId[0] Entry-HcclCommInitRootInfoConfigInner:ranks[16], rank[0], rootinfo: host ip[127.10.0.1] port[60000] nicDeploy[1] identifier[group_name_0], deviceLogicId[0]
- ranks:通信域大小。
- rank:当前rank在通信域内的rank编号。
- rootinfo:root节点的信息。
- identifier:通信域名。
- 通信域析构。
Entry-HcclCommDestroy: op_base comm destroy begin
- 通信算子下发。
Entry-HcclAllReduce: tag[AllReduce_127.10.0.1%eth1_30000_0_1736576907435382], sendBuf[0x12e7bf550000], recvBuf[0x12e7bf550000], count[531260224], dataType[float32], op[sum], localRank[0], streamId[5],comm[0x331c9c00], deviceLogicId[0]
- tag:通信算子标识符。
- sendBuf:输入数据地址指针。
- recvBuf:输出数据地址指针。
- count:数据量。
- dataType:数据类型。
- op:reduce计算类型。
- localRank:本端rank号。
- stream:通信算子执行流。
- comm:通信域指正。
- deviceLogicid:通信算子下发的设备逻辑Id。
同时如果想要查询已经配置成功的环境变量,其配置及实际生效值会被打印在CANN日志的run/plog目录下,可以通过检索"externalinput"的关键字查询每个进程的环境变量实际生效值,例如执行:grep -r "externalinput" run/plog/plog-xxx.log,得到以下信息:
[INFO] HCCL(925892,alltoall_test):2025-10-28-16:34:59.627.615 [externalinput.cc:372] [925892]HCCL_CONNECT_TIMEOUT set by default to [120]s [INFO] HCCL(925892,alltoall_test):2025-10-28-16:34:59.627.622 [externalinput.cc:333] [925892]HCCL_EXEC_TIMEOUT set by default to [1836]s [INFO] HCCL(925892,alltoall_test):2025-10-28-16:34:59.627.629 [externalinput.cc:437] [925892]HCCL_INTRA_PCIE_ENABLE set by default to [1], HCCL_INTRA_ROCE_ENABLE set by default to [0] [INFO] HCCL(925892,alltoall_test):2025-10-28-16:34:59.627.636 [externalinput.cc:516] [925892]environmental variable PROFILING_MODE and GE profiling option is not set, default: false [INFO] HCCL(925892,alltoall_test):2025-10-28-16:34:59.627.641 [externalinput.cc:610] [925892]HCCL_WHITELIST_DISABLE set by default to [1] [INFO] HCCL(925892,alltoall_test):2025-10-28-16:34:59.627.647 [externalinput.cc:654] [925892]HCCL_IF_IP is not set [INFO] HCCL(925892,alltoall_test):2025-10-28-16:34:59.627.656 [externalinput.cc:708] [925892]HCCL_SOCKET_IFNAME set by environment to [abc] [INFO] HCCL(925892,alltoall_test):2025-10-28-16:34:59.627.661 [externalinput.cc:677] [925892]HCCL_SOCKET_FAMILY is not set and is used by default [AF_INET] [INFO] HCCL(925892,alltoall_test):2025-10-28-16:34:59.627.665 [externalinput.cc:639] [925892]HCCL_IF_BASE_PORT set by default to [60000] [INFO] HCCL(925892,alltoall_test):2025-10-28-16:34:59.627.731 [externalinput.cc:1143] [925892][Parse][CannVersion]success, CannVersion is 8.5.T5.0.B029 [INFO] HCCL(925892,alltoall_test):2025-10-28-16:34:59.627.744 [externalinput.cc:904] [925892]HCCL_RDMA_TC set by default to [132] [INFO] HCCL(925892,alltoall_test):2025-10-28-16:34:59.627.749 [externalinput.cc:939] [925892]HCCL_RDMA_SL set by default to [4] [INFO] HCCL(925892,alltoall_test):2025-10-28-16:34:59.627.839 [externalinput.cc:984] [925892]HCCL_RDMA_TIMEOUT set by default to [20] [INFO] HCCL(925892,alltoall_test):2025-10-28-16:34:59.627.850 [externalinput.cc:1018] [925892]HCCL_RDMA_RETRY_CNT set by default to [7] [INFO] HCCL(925892,alltoall_test):2025-10-28-16:34:59.627.854 [externalinput.cc:1156] [925892]HCCL_BUFFSIZE set by default to [200]M [INFO] HCCL(925892,alltoall_test):2025-10-28-16:34:59.627.859 [externalinput.cc:395] [925892]HCCL_DETERMINISTIC set by default to [false] [INFO] HCCL(925892,alltoall_test):2025-10-28-16:34:59.627.863 [externalinput.cc:1202] [925892]HCCL_DIAGNOSE_ENABLE set by default to [0] [INFO] HCCL(925892,alltoall_test):2025-10-28-16:34:59.627.868 [externalinput.cc:1290] [925892]HCCL_ENTRY_LOG_ENABLE set by default to [0] [INFO] HCCL(925892,alltoall_test):2025-10-28-16:34:59.627.873 [externalinput.cc:1311] [925892]HCCL_INTER_HCCS_DISABLE is not set, default value is FALSE. [INFO] HCCL(925892,alltoall_test):2025-10-28-16:34:59.627.883 [externalinput.cc:1378] [925892]environmental variable HCCL_OP_EXPANSION_MODE is [AIV], aicpuUnfold[0], aivMode[1], enableFfts[1] [INFO] HCCL(925892,alltoall_test):2025-10-28-16:34:59.627.889 [externalinput.cc:1227] [925892]HCCL_RDMA_QPS_PER_CONNECTION is set to default value [1] [INFO] HCCL(925892,alltoall_test):2025-10-28-16:34:59.627.893 [externalinput.cc:1260] [925892]HCCL_MULTI_QP_THRESHOLD is set to default value [512]KB [INFO] HCCL(925892,alltoall_test):2025-10-28-16:34:59.627.912 [externalinput.cc:1495] [925892][ParseRetryEnable] HCCL_OP_RETRY_ENABLE set by environment variable to [L0:0,L1:0,L2:0]. [INFO] HCCL(925892,alltoall_test):2025-10-28-16:34:59.627.917 [externalinput.cc:1507] [925892]HCCL_OP_RETRY_PARAMS is not set, default value MaxCnt is [1], HoldTime is [5000]ms, IntervalTime is [1000]ms [INFO] HCCL(925892,alltoall_test):2025-10-28-16:34:59.627.923 [externalinput.cc:1538] [925892]HCCL_LOGIC_SUPERPOD_ID is not set, default value[] [INFO] HCCL(925892,alltoall_test):2025-10-28-16:34:59.627.927 [externalinput.cc:311] [925892]HCCL_RDMA_PCIE_DIRECT_POST_NOSTRICT set by default to [EmptyString], rdmaFastPost is [0] [INFO] HCCL(925892,alltoall_test):2025-10-28-16:34:59.627.932 [externalinput.cc:565] [925892][Parse][MultiQpSrcPortConfigPath]environmental variable HCCL_RDMA_QP_PORT_CONFIG_PATH is empty [INFO] HCCL(925892,alltoall_test):2025-10-28-16:34:59.627.937 [externalinput.cc:1571] [925892]HCCL_DEBUG_CONFIG is not set, debugConfig set by default to 0x0
父主题: 定位思路