deepspeedai / deepspeedai/DeepSpeed

[BUG] Questions about PipelineEngine._reduce_output when output is list

Open
#3,750 0 comments 0 reactions 1 assignee View on GitHub

@duli2012 is already working on this.

Since Jun 16, 2023.

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

Description

https://github.com/microsoft/DeepSpeed/blob/cd911f9ab2213edb0c8781bd5fd604c37c020dfb/deepspeed/runtime/pipe/engine.py#L470-L478

In else block output[0] is of type list, thus for idx, out in outputs and reduced[idx] += out seems a bit weird.

And according to _exec_forward_pass:
https://github.com/microsoft/DeepSpeed/blob/cd911f9ab2213edb0c8781bd5fd604c37c020dfb/deepspeed/runtime/pipe/engine.py#L672-L678

outputs should be a 2-d list contains losses in different micro batch. I think the following code is more reasonable:

for out in output:
    for idx, o in enumerate(out):
        reduced[idx] += o
    

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.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.