Skip to content

无法单服务器多卡训练 #4334

Open
@wangat

Description

@wangat

感谢您的代码和工程。目前有3个服务器,简写为服务器a、b、c,其中a是新到的青云服务器,8台x8卡xa30,无ib网卡,测试没有nvlink,一直无法实现单服务器多卡训练,且分别测试了3个服务器情况相同;b是之前配置训练使用的(有ib网卡、nvlink的卡),将b上工程、代码、数据、环境都迁移到a、c上面(docker启动内存是64g);c的环境和a类似,且都是青云服务器,配置和网络情况类似;

以下是目前测试遇到的一些情况:
1.在服务器b上可以正常全量微调qwen2.5-vl-3b、服务器c上也可以;
2.在服务器a上面测试单服务器8卡、2服务器16卡、8服务器64卡训练yolov5s都可以;
3.在服务器a的单台设备上测试,出现现象为:2卡连续编号比如01、12、67这样的卡号多次测试训练正常;另外发现34(测试发现是sys通信)、2卡不连续情况比如14、26概率成功/失败,且所有的报错都是一样的如下;3卡情况和2卡类似;4卡一开始都无法训练,突然一个时间之后可以正常训练(这批服务器只有我在测试),但多次测试同2卡、3卡;8卡一直训练失败;
4.训练中使用了deepspeed的zero2-offload,qwen2.5-vl-3b的模型,全量微调,尝试了多个版本的代码,4个docker镜像,都是3中的情况(应该可以排除环境的问题);
5.服务器a、服务器b、服务器c使用nccl-test测试124m、1g、18g情况,最终指标都差不多(a服务器更好);
6.驱动版本不同,都是12.4的cuda,其它torch等库一致,但是a是550.163.01,b是550.127.05(想问一下您这个应该不会影响吧?);
7.测试服务器a的cpu是intel(r)xeon(r)plainum 8500;240核一共,内存占用剩余是110g+39swap(测试关闭之后还是存在报错);服务器b是8480+版本,224核,内存剩余127g无swap;测试lscpu | grep NUMA情况,服务器a全在一个节点,b在2个节点上;另外使用numactl -H指令,服务器a显示240核,内部距离10;服务器b显示2个节点,0-0是10、0-1是21这样的情况;服务器c的情况和a类似,但是cpu更差一点,核数更少;
8.测试nvidia-smi topo -m,发现服务器a、c差不多:其中服务器a没有nvlink、gpu0-3和gpu4-7方式是sys、gpu3和nic0方式pix,还有一个nic1和所有都是sys连接;服务器c没有nvlink、gpu0-3和gpu4-7方式是sys,gpu2和nic2是pix,gpu6和nic0、1是pix,nic3和所有是sys;

所有错误情况报错都相同且如下:
Traceback (most recent call last):
File "/usr/local/lib/python3.10/runpy.py", line 196, in _run_module_as_main
​ return _run_code(code, main_globals, None,
File "/usr/local/lib/python3.10/runpy.py", line 86, in _run_code
​ exec(code, run_globals)
File "/usr/local/lib/python3.10/site-packages/torch/distributed/run.py", line 923, in
​ main()
File "/usr/local/lib/python3.10/site-packages/torch/distributed/elastic/multiprocessing/errors/init.py", line 355, in wrapper
​ return f(*args, **kwargs)
File "/usr/local/lib/python3.10/site-packages/torch/distributed/run.py", line 919, in main
​ run(args)
File "/usr/local/lib/python3.10/site-packages/torch/distributed/run.py", line 910, in run
​ elastic_launch(
File "/usr/local/lib/python3.10/site-packages/torch/distributed/launcher/api.py", line 138, in call
​ return launch_agent(self._config, self._entrypoint, list(args))
File "/usr/local/lib/python3.10/site-packages/torch/distributed/launcher/api.py", line 269, in launch_agent
​ raise ChildFailedError(

torch.distributed.elastic.multiprocessing.errors.ChildFailedError:

/usr/local/lib/python3.10/site-packages/swift/cli/sft.py FAILED

Failures:

<NO_OTHER_FAILURES>

Root Cause (first observed failure):
[0]:
time : 2025-05-21_14:43:51
host : cnnxdx-gpu-32-12
rank : 2 (local_rank: 2)
exitcode : -11 (pid: 4603)
error_file: <N/A>

traceback : Signal 11 (SIGSEGV) received by PID 4603

问题:
1.想问一下您以上情况可能是什么错误导致的呢?使用一些大模型查到说可能和拓扑结构相关。
2.最近还在尝试微调自己处理的数据,但是数据不足,尝试增加了一些开源数据,但是发现loss部分是一起计算的,想根据训练集/标签实现channel_loss,您能推荐一些资料吗?
3.想问一下代码版本的资料,虽然使用指令版本很方便,但想做一些修改,想问一下有没有最新的资料。

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