deepspeedai / deepspeedai/DeepSpeed
[BUG] Code blocking when training on multi-nodes using DS-Chat.
Nobody has claimed this yet.
- 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
- 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 - I configure the alias of each node in
~/.ssh/config
Host worker-i
Hostname xxxx
user xxxx
- write the all node in
hostfile:
worker-i slots=xxx
- 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:
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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