Skip to content

NUMA 主机上 collector CPU 默认切片不感知拓扑:需按 GPU NUMA 亲和性自动推导 #1506

Description

@TATP-233

背景

排查多 GPU rank 分配时发现:off-policy DP 下 collector 的 CPU 核区默认按 cpu_count // world_size 切连续块(uni_rl/ipc/dp_launcher.py resolve_collector_cpu_ids),与每个 rank 绑定 GPU 的 NUMA node 完全无关联。

现状

  • 显式配置接口已存在:training.dp_collector_cpu_idssrc/unilab/conf/sac/config.yaml:51td3/config.yaml:46flashsac/config.yaml:61 均默认为 null;测试见 tests/ipc/test_dp_launcher.py:528-535,文档见 docs/sphinx/source/zh_CN/2-user_guide/2-algorithms/3-sac.md:79),经 EnvCfg.cpu_ids 生效(src/unilab/base/cpu_runtime.py)。
  • 缺口在默认行为:用户不显式配置时,连续块切片不保证落在 rank GPU 所属的 NUMA node(跨 socket 编号不连续的主机上尤其明显),也不感知 training.devices 的选取。
  • learner 与 collector 的 obs/action/权重 IPC 全走 /dev/shm,collector CPU 与 GPU 跨 socket 时 IPC 与 H2D 拷贝都跨 NUMA 互联。

建议方向(供 maintainer 判断)

  1. 默认切片从连续块改为按 rank GPU 的 NUMA node 从 /sys/devices/system/node/nodeN/cpulist 取亲和核区再分配;无 NUMA 信息或单 socket 主机回退现有连续块行为。
  2. 保留 training.dp_collector_cpu_ids 显式覆盖的优先级不变。
  3. 多 NUMA 主机检测到默认切片与 GPU NUMA 错配时输出 warning,引导用户显式配置。

#1505 的关系:#1505 记录整体拓扑感知缺失(rank 到 GPU 映射与 NCCL transport),本 issue 聚焦 collector CPU 切片的默认推导策略。

仅为问题记录与方向建议,不在本 issue 内实施。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions