deepspeedai / deepspeedai/DeepSpeed

[BUG] Code blocking when training on multi-nodes using DS-Chat.

Open
#5,548 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug training
Dominant language
Python
Stars
43.1k
Forks
5k
Avg merge
4d 15h
Merged PRs (30d)
112

Description

Describe the bug
When using multi-nodes to train DS-Chat, it will happen the code blocking util time-out.
To Reproduce

  1. I use SSH key to realize passwordless SSH connection:
    ssh-keygen xxxx to generate the private and public key in ~/.ssh/
    ssh-copy-id -i ~/.ssh/id_rsa.pub xxx to send the public key to other nodes
  2. I configure the alias of each node in ~/.ssh/config
Host worker-i
    Hostname xxxx
    user xxxx
  1. write the all node in hostfile:
worker-i slots=xxx
  1. using deepspeed to launch the distributed training using DS-Chat to realize the stage-1 SFT:
deepspeed --hostfile=hostfile ./applications/DeepSpeed-Chat/training/step1_supervised_finetuning/main.py xxx

ds_report output
By default, deepspeed will select the first node in hostfile as master node, so I execute the forth operation in the first node. After repeatedly executing the forth operation and Ctrl + C to kill it. When executed the forth operation again later, it will be blocking util time-out, and report the error as follows:

torch.distributed.DistBackendError: [3] is setting up NCCL communicator and retrieving ncclUniqueId from [0] via c10d key-value store by key '0', but store->get('0') got error: Socket Timeout

Were previously killed processes not killed completely, piling up together? Because I see the previous processes using top:
image

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the multi-node launch from applications/DeepSpeed-Chat/training/step1_supervised_finetuning/main.py using the SSH configuration and hostfile described in the report. Start by checking the processes left after Ctrl+C and the distributed launcher output, then determine what causes the NCCL store timeout on a later launch. Done means the repeated launch no longer blocks until Socket Timeout.

Written by the indexing model from the issue text.

Assessment

Tech stack
python, pytorch
Domain
distributed-systems, machine-learning
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.