ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

HCCL_NPU_SOCKET_PORT_RANGE 环境变量指南:为昇腾 NPU 侧通信端口指定端口范围与多进程场景配置

HCCL_NPU_SOCKET_PORT_RANGE 环境变量指南:为昇腾 NPU 侧通信端口指定端口范围与多进程场景配置 HCCL_NPU_SOCKET_PORT_RANGE 环境变量指南为昇腾 NPU 侧通信端口指定端口范围与多进程场景配置【免费下载链接】hccl集合通信库Huawei Collective Communication Library简称HCCL是基于昇腾AI处理器的高性能集合通信库为计算集群提供高性能、高可靠的通信方案项目地址: https://gitcode.com/cann/hcclHCCL_NPU_SOCKET_PORT_RANGE 是 CANN/HCCL 集合通信库中用于控制NPU设备侧通信端口的环境变量它仅在“基于 root 节点信息创建通信域”的场景下生效是解决单卡多进程端口冲突、规避默认 16666 端口被占用等问题的关键配置。阅读本文后你将掌握该环境变量的取值语法、配置示例、使用约束以及它与 Host 侧端口配置、EI0019 端口绑定失败故障的联动关系。功能定位NPU 侧通信端口由谁使用HCCL 在进行集合通信建链时既会使用Host 侧网卡也会使用NPU设备侧网卡。当通信域的创建方式为“基于 root 节点信息创建”即通过HcclGetRootInfo获取 rootInfo、再通过HcclCommInitRootInfo/HcclCommInitRootInfoConfig创建通信域时开发者可通过HCCL_NPU_SOCKET_PORT_RANGE环境变量配置HCCL 在 NPU 侧使用的通信端口。关于“基于 root 节点信息创建”这一通信域创建方式的完整背景可参考 api_comm_impl.md在无完整 rank table 集群配置文件时root 节点调用HcclGetRootInfo生成 rootInfo包含 device ip、device id 等信息将 rootInfo 广播给通信域内所有 rank各 rank 调用HcclCommInitRootInfo或HcclCommInitRootInfoConfig基于该 rootInfo 完成通信域初始化该过程需要建立 socket 连接其中 NPU 侧网卡使用的端口即由本文所述环境变量控制。HCCL_NPU_SOCKET_PORT_RANGE与同样位于 hccl_env 目录下的 HCCL_HOST_SOCKET_PORT_RANGE 是一对“姊妹变量”前者控制NPU 侧通信端口后者控制Host 侧通信端口二者取值语法完全一致可配合使用。取值规则三种合法形态该环境变量支持配置为具体的端口号、端口范围或字符串 auto具体规则如下取值形态说明关键约束具体端口号如57000可多个端口用英文逗号分隔端口号取值范围为[1, 65535]端口范围如61000-61050表示连续的一段端口需确保端口未被其他进程占用端口号 端口范围组合如61000,61050-61100逗号分隔各段之间不能存在范围交叉autoNPU 端口号由操作系统动态分配无需人工规划端口需特别强调的是端口数量规划若指定具体的端口号或端口范围规划的端口数量建议不小于单个 NPU 上的 HCCL 进程数以保证每个进程都能分配到独立端口。此外[1, 1023]为系统保留端口应避免使用这些端口。默认行为若不配置该环境变量HCCL 在 NPU 侧使用的通信端口默认为16666。这一默认值同样体现在 rank table 配置文件中例如 rank_table_config_a3.md 中device_port字段默认即为 16666可见HCCL_NPU_SOCKET_PORT_RANGE实际上是对该默认设备端口的一种运行时覆盖手段。配置示例以下为文档中给出的四种标准配置方式可直接复制使用//方式一配置为端口范围。 export HCCL_NPU_SOCKET_PORT_RANGE61000-61050 //方式二具体的端口号与端口范围配合使用使用英文“,”分隔。 export HCCL_NPU_SOCKET_PORT_RANGE61000,61050-61100,61200-61210 //方式三指定具体的端口号使用英文“,”分隔。 export HCCL_NPU_SOCKET_PORT_RANGE57000,57005,57007,58008,58100,58105,58107,58108 //方式四操作系统动态分配端口号 export HCCL_NPU_SOCKET_PORT_RANGEauto其中方式三的示例对应 8 个独立端口与单卡 8 进程的场景相吻合方式二是端口号与端口范围混合使用的典型写法。需要注意的是示例中的//注释仅为说明用途实际执行export命令时请勿携带注释内容。在多卡多进程场景中Host 侧与 NPU 侧通常需要同时配置例如 api_comm_impl.md 给出的组合配置export HCCL_HOST_SOCKET_PORT_RANGEauto export HCCL_NPU_SOCKET_PORT_RANGEauto使用约束多卡场景必须全局配置在多卡场景下若需要配置该环境变量则同一通信域内的所有卡都必须进行配置否则可能出现部分卡端口行为不一致导致的建链异常。单卡多进程建议配置若业务为单卡多进程场景即多个业务进程同时共用一个 NPU建议配置此环境变量否则业务可能会因为端口冲突运行失败。但需要注意多进程会对资源开销、通信性能产生一定的影响。该约束同样适用于 Atlas A2 训练系列产品/Atlas A2 推理系列产品详见 env_config_info.md 中的环境配置说明。故障排查联动EI0019 参数面端口绑定失败该环境变量最典型的实战价值体现在 EI0019参数面端口绑定失败的故障处理中。根据 param_port_bind_fail_EI0019.md当多个进程执行在同一个 device 上且均调用 HCCL 通信算子接口时由于 HCCL 使用 device 侧网卡的端口时默认需绑定 16666 端口会出现端口已被其他进程绑定导致失败的问题报错日志形如[ERROR] HCCL(1009464,all_reduce_test):2025-03-15-00:41:48.470.172 [hccl_socket.cc:110] [1009464][InitGroupStage][RanktableDetect] socket type[0], listen on ip[192.168.2.199] and specific port[16666] fail. Please check the port status and whether the port is being used by other process.此时可先排查多个进程跑在同一个 device 上是否符合任务预期若符合预期即可通过配置HCCL_NPU_SOCKET_PORT_RANGE环境变量启用多进程场景export HCCL_NPU_SOCKET_PORT_RANGEauto配置为auto后NPU 侧端口由操作系统动态分配从根源上规避了多个进程争抢 16666 默认端口的问题。同时需要注意通信域集群协商阶段也可能出现端口绑定失败此时需根据报错日志中的socket type判断type 为 0 或 1 时属于参数面端口绑定失败即本文所述场景type 为 2 时属于 Host 侧网卡端口绑定失败应参考 server_node_port_bind_fail_EI0019.md 并通过 HCCL_HOST_SOCKET_PORT_RANGE 处理。与其他端口相关环境变量的关系在 HCCL 的端口配置体系中HCCL_NPU_SOCKET_PORT_RANGE与以下变量各司其职环境变量控制的端口默认行为参考文档HCCL_NPU_SOCKET_PORT_RANGENPU 侧device 网卡通信端口默认 16666HCCL_NPU_SOCKET_PORT_RANGE.mdHCCL_HOST_SOCKET_PORT_RANGEHost 侧服务器网卡通信端口默认 60000-60031与 HCCL_IF_BASE_PORT 相关HCCL_HOST_SOCKET_PORT_RANGE.mdHCCL_IF_BASE_PORTHost 网卡起始端口号配置后默认占用以该端口起始的 32 个端口默认使用 60000-60031HCCL_IF_BASE_PORT.md其中HCCL_HOST_SOCKET_PORT_RANGE的优先级高于HCCL_IF_BASE_PORT而在集群信息协商阶段Host 网卡端口的选择同时受HCCL_IF_BASE_PORT与HCCL_HOST_SOCKET_PORT_RANGE影响详见 cluster_info_nego_troubleshooting.md。NPU 侧端口则只由HCCL_NPU_SOCKET_PORT_RANGE控制两者互不干扰建议在单卡多进程场景下同时配置以确保 Host 与 NPU 两侧均不会发生端口冲突。产品支持情况该环境变量的支持情况与具体硬件产品相关Ascend 950PR / Ascend 950DT支持Atlas A3 训练系列产品 / Atlas A3 推理系列产品支持Atlas A2 训练系列产品 / Atlas A2 推理系列产品支持Atlas 训练系列产品不支持Atlas 推理系列产品不支持从支持矩阵可以看出该特性面向的是支持基于 root 节点信息创建通信域的较新产品形态。在配置前请先确认当前环境对应的产品型号对于不支持的硬件如 Atlas 训练系列产品、Atlas 推理系列产品该环境变量不会生效多进程端口冲突问题需通过其他途径解决。小结HCCL_NPU_SOCKET_PORT_RANGE是 HCCL 在 NPU 侧通信端口管理上的核心开关支持端口号、端口范围、组合写法以及auto四种配置形态默认端口为 16666。在实际部署中它最常用于单卡多进程与多卡端口规划两类场景——前者配置为auto交由系统动态分配后者按“端口数量不小于单 NPU 上 HCCL 进程数”的规则显式规划并与 HCCL_HOST_SOCKET_PORT_RANGE 配合实现 Host/NPU 两侧端口的完整管控。当业务遇到 EI0019 端口绑定失败时它也是最直接的解决方案之一。配置前请务必确认产品型号在支持矩阵内并保证同一通信域内所有卡配置一致。【免费下载链接】hccl集合通信库Huawei Collective Communication Library简称HCCL是基于昇腾AI处理器的高性能集合通信库为计算集群提供高性能、高可靠的通信方案项目地址: https://gitcode.com/cann/hccl创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表