Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

[REQUEST] Add pipeline section in `config.json` for pp

Open
#8,696 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 3 days

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
30/100
Issue type
Feature
Clarity
Needs clarification
Activity status
Active
Tech stack
python

Research direction

Start with get_pipeline_config in deepspeed/runtime/config.py, then read PipelineModule in deepspeed/runtime/pipe/module.py and the engine selection in deepspeed.initialize(). Trace how partitioning currently occurs in PipelineModule.init and how deepspeed/runtime/pipe/engine.py reads pipeline settings. Done means the existing pipeline keys configure stages, partitioning, and schedule while constructor-based behavior remains valid when configuration is absent.

Written by the indexing model from the issue text.

Description

enhancement

Is your feature request related to a problem? Please describe.
The pipeline section of config.json controls only part of pipeline parallelism. The engine reads activation_checkpoint_interval, pipe_partitioned, grad_partitioned and use_reentrant from it. The number of stages, the partition method and the schedule are set in Python, through the PipelineModule constructor and the choice of module class (see here).

The pipeline section already defines stages, partition and seed_layers in get_pipeline_config (See here), but nothing reads them.

Tensor parallelism and expert parallelism are both driven from the config, through tensor_parallel.autotp_size and expert_parallel.autoep_size.

Describe the solution you'd like
Make the existing pipeline section the place to configure pipeline parallelism.

{
  "pipeline": {
    "stages": 4,
    "partition": "parameters",
    "schedule": "dualpipev",
    "activation_checkpoint_interval": 0
  }
}
  • stages: the number of pipeline stages.
  • partition: the partition method.
  • schedule: 1f1b or dualpipev. deepspeed.initialize() selects the engine from this key. Today it selects by module class.

Existing code keeps working. Values passed to the PipelineModule constructor stay valid when the config does not set them.

Additional context

Open questions for discussion.

  1. PipelineModule partitions its layers in __init__ (see here), before deepspeed.initialize() reads the config. Should partitioning move to initialize(), or should the module be re-partitioned there?
  2. Which value wins when the constructor and the config disagree?

I am happy to work on this.

cc: @delock

Dominant language
Python
Stars
43.3k
Forks
5.1k
Avg merge
4d 21h
Merged PRs (30d)
66

Getting set up

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.

More from deepspeedai/DeepSpeed

All issues in deepspeedai/DeepSpeed

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.