任务申请的总芯片数量为32,sp-block设置为32可以正常训练,sp-block设置为16无法完成训练,训练容器报错提示初始化连接失败
问题现象描述
在总线设备环境中,sp-block设置为32可以正常训练,sp-block设置为16无法完成训练,训练容器报错提示初始化连接失败,日志截图如下。
原因分析
当sp-block配置为32时,总线设备划分出来的逻辑超节点包含两个计算节点。由于任务申请的总芯片数量为32,因此本任务正好有一个逻辑超节点。
当sp-block配置为16时,总线设备划分出来的逻辑超节点包含一个计算节点。由于任务申请的总芯片数量为32,因此本任务正好有两个逻辑超节点。
在总线设备中,不同逻辑超节点内部的计算节点之间使用RoCE网络通信,而在同一个逻辑超节点内部的计算节点之间采用HCCS网络通信。
经过上面的分析,可能的一个原因是由于sp-block配置为32时,任务只分配了一个逻辑超节点,逻辑超节点内部的计算节点采用HCCS网络通信。而sp-block配置为16时,任务分配了两个逻辑超节点,而位于不同逻辑超节点的计算节点之间采用RoCE网络通信。因此很有可能是因为底层的RoCE网络没有连通导致sp-block配置为16时任务初始化连接失败。
解决措施
可以通过hccn_tool工具测试两个计算节点之间的RoCE网络是否是连通的。方法如下:
- 执行如下命令获取ID为0的卡的IP地址。
hccn_tool -i 0 -ip -g
- 执行如下命令ping其他逻辑超节点中的计算节点。
hccn_tool -i 0 -ping -g address {其他逻辑超节点中任意计算节点的NPU卡的ip}
- 如果能够ping通,说明RoCE网络没有问题。此时,需要根据具体的日志信息排查是否是其他问题。
- 如果显示以下提示信息:3 packets transmitted, 0 received, 100.00% packet loss,说明RoCE网络是有问题的。此时需要解决计算节点之间RoCE网络连通性问题。
父主题: 使用时出现的故障