deepspeedai / deepspeedai/DeepSpeed
Deprecate unused DeepSpeed features
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 43.1k
- Forks
- 5k
- Avg merge
- 4d 15h
- Merged PRs (30d)
- 112
Description
Summary
Tracking issue for retiring unused / unmaintained DeepSpeed features so the runtime, docs, tests, and packaging stay consistent.
Goal: remove code paths that are no longer supported, then sweep the leftover docs, extras, CODEOWNERS, and tests so they cannot be re-enabled by accident.
PRs
| PR | State | Scope |
|---|---|---|
| #8490 | Merged 2026-09-12 | First sweep: compression library, 1-bit Adam/Lamb, 0-1 Adam, MiCS, Nebula (71d316d60, +169 / −8,298) |
| #8099 | Merged 2026-07-01 | ZeRO-3 elastic_checkpoint (use Universal Checkpointing). Stage 1/2 unchanged |
| #8493 | Merged 2026-09-14 | Sparse Attention |
| #8504 | Merged 2026-09-16 | sparse_gradients |
| #8534 | Open | LoCo-Zero++ (zeropp_loco_param) |
| #8535 | Open | Compression leftovers: 1-bit comm backends, MoQ/eigenvalue, fake-quant kernels, docs/CODEOWNERS/issue template |
There is no PR for the full follow-up sweep described below (MoQ + 1-bit comm + PLD + Apex AMP as one bundle). #8535 covers the 1-bit comm and MoQ/eigenvalue leftovers. Progressive Layer Dropping and Apex AMP still have no PR.
Coverage statistics
Line counts are from git diff --numstat. Code = runtime/library sources; tests = tests/; docs = docs/ plus CODEOWNERS / issue templates / CI where noted.
Removed in #8490
| Feature | Code − | Tests − | Docs − | Net |
|---|---|---|---|---|
| Compression library | 2,430 | 301 | 455 | −3,166 |
| 1-bit / 0-1 Adam optimizers | 1,132 | 1,255 | 745 | −3,131 |
| MiCS ZeRO-3 | 650 | 225 | 34 | −909 |
| Nebula checkpoint engine | 229 | 0 | 0 | −229 |
Runtime wiring (config.py / engine.py / launchers / CODEOWNERS) |
264 | 0 | 3 | −208 |
| Shared docs (config-json, training pages, nav) | 0 | 0 | 513 | −506 |
| Shared tests (config dict, AutoEP MiCS gate, ZeRO) | 0 | 62 | 0 | −19 |
Helper relocation (recursive_getattr → module_utils) |
0 | 0 | 0 | +39 |
| PR total | +169 / −8,298 |
Follow-up sweep (no dedicated PR)
Local working-tree estimate vs master when this was written: +104 / −2,814. Combined vs pre-#8490: +253 / −11,092.
| Feature | Code − | Tests − | Docs − | Status |
|---|---|---|---|---|
| 1-bit comm backends | 717 | 676 | 0 | Open in #8535 |
| MoQ / eigenvalue | 333 | 18 | 212 | Open in #8535 |
| Progressive Layer Dropping | 40 | 116 | 155 | No PR |
| Apex AMP / runtime wiring | 383 | 0 | 0 | No PR (engine amp path) |
| Docs / CI / packaging | 24 | 0 | 113 | Partially in #8535 |
| ZeRO-3 elastic checkpoint | 16 | — | config-json | Done in #8099 |
| Rejection tests | 0 | +52 | 0 | Split across follow-up PRs |
Leftover configs should fail at parse time (DeepSpeedConfigError or ZeRO-3 ValidationError) instead of silently training without the feature.
Features to deprecate
Training / checkpointing
- Nebula checkpoint engine (
deepspeed/nebula,NebulaCheckpointEngine) — #8490 - MiCS ZeRO-3 sharding (
MiCS_Init,mics_shard_size,mics_hierarchical_params_gather) — #8490 - ZeRO-3 elastic checkpoint (
zero_optimization.elastic_checkpointwith stage 3; use Universal Checkpointing). ZeRO-1/2 elastic checkpoints remain. — #8099
Optimizers
Compression / quantization
- Model compression library (
deepspeed.compression, compression scheduler, related tests) — #8490 - Mixture-of-Quantization (MoQ) /
quantize_training/ eigenvalue scheduling — #8535
Mixed precision
- Apex AMP (
ampconfig). Usefp16,bf16, ortorch_autocast. No PR.
Training schedule
- Progressive Layer Dropping (
progressive_layer_drop). No PR.
1-bit communication leftovers (optimizers are gone; backends remain)
- Compressed allreduce backends (
deepspeed/runtime/comm/{nccl,mpi,compressed}.py,deepspeed/runtime/compression/cupy.py) — #8535 -
tests/onebit/and remaining unit tests for those backends — #8535 -
setup.pyextras1bit/1bit_mpiandrequirements/requirements-1bit-mpi.txt— #8535
Docs / repo hygiene
- Docs nav Model Compression (removed in #8490)
- Docs nav Mixture-of-Quantization and Progressive Layer Dropping — MoQ nav in #8535; PLD still open
-
.github/ISSUE_TEMPLATE/compression_bug_report.md— #8535 -
CODEOWNERS/deepspeed/runtime/fp16/onebit/(removed in #8490) -
CODEOWNERS/deepspeed/runtime/compression/— #8535 - Config / tutorial leftovers for MoQ, Apex AMP, PLD (bulk Nebula/one-bit optimizer/MiCS docs already removed in #8490)
GitHub usage consensus (2026-09-14)
Three independent classifications (Opus, Codex, Grok) over the same GitHub pull agreed on the next deprecation set below.
Method
- Issues/PRs: unauthenticated
/search/issueson 2026-09-14. Primary column is-org:deepspeedai. Relative score vs"zero_optimization" -org:deepspeedai= 1,362. - Code: authenticated
/search/codeon 2026-09-14 viagh. Relative score vs"zero_optimization" -org:deepspeedai= 49,280. Code search over-counts vendored DeepSpeed copies (e.g.DeepSpeed-0.9.5/inside other repos) and generic identifiers. Treat as ordinal rank, not user counts. - Not consensus / do not add from this scan: inference v1/v2, Windows, ZeRO offload, pipeline, DeepCompile, Hybrid Engine, autotuning, DataStates, ZenFlow.
Consensus candidates
| Feature | Issue query | Issues −org | Rel. issues | Issues in DS repo | Code query | Code −org | Rel. code | Status |
|---|---|---|---|---|---|---|---|---|
| Sparse Attention | "sparse_attention" |
358 (158 w/ "mode") |
0.26 (0.12) | 86 | "sparse_attention" |
27,264 | 0.55 | Done #8493 |
sparse_gradients |
"sparse_gradients" |
20 | 0.015 | 8 | "sparse_gradients" |
4,616 | 0.094 | Open #8504 |
| Elastic training | "max_train_batch_size" "micro_batch_sizes" |
0 | 0 | 64 (word “elasticity”) | same pair | 1,900 | 0.039 | No PR |
graph_harvesting |
"graph_harvesting" |
83 | 0.061 | 10 | "graph_harvesting" |
1,052 | 0.021 | No PR (0 tests; config-dump noise) |
Legacy curriculum_learning |
"curriculum_learning" |
185 | 0.14 | 27 | "curriculum_learning" |
15,136 | 0.31 | No PR (homonym; superseded by Data Efficiency) |
| LoCo-Zero++ | "zeropp_loco_param" |
37 | 0.027 | 3 | "zeropp_loco_param" |
152 | 0.003 | Open #8534 |
2-of-3 only (not unanimous; do not treat as consensus)
Data Efficiency / Random-LTD, dump_state (debug flag; "dump_state" code search is 164k unrelated hits), disable_allgather, FusedLion.
Other unused / already-deprecated candidates
- Sparse Attention (
deepspeed/ops/sparse_attention,extras_require['sparse_attn']) — #8493 -
sparse_gradients(config-json already calls this essentially deprecated) — #8504 - Elastic training (
elasticity/max_train_batch_size+micro_batch_sizes) -
graph_harvesting - Legacy curriculum learning (superseded by Data Efficiency)
- LoCo-Zero++ (
zero_optimization.zeropp_loco_param) — #8534
Notes
- Checked items landed in #8490, #8099, or #8493.
- The original follow-up sweep is not a single open PR. #8535 takes 1-bit comm + MoQ leftovers; PLD and Apex AMP still need a PR.
- MiCS removal also dropped the AutoEP ZeRO-3 “no MiCS” compatibility gate and its unit test.
- 1-bit optimizers are gone in #8490; 1-bit communication backends are in #8535 (
coalesced_collectives.pystays for ZeRO-3). deepspeed/compression/helper.pyremains as aFutureWarningshim for DeepSpeed-Chat after #8490.- Apex AMP removal is still local / un-PRed; PyTorch
torch_autocastis unchanged. Localimport apexremains only to detectapex.optimizers.FusedAdamfor FP16 optimizer wrapping. - Stats methodology: #8490 from
git diff --numstat 71d316d60^1 71d316d60; follow-up fromgit diff --numstat origin/masteron the working tree at the time; combined vsb726f4edb.
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
Start by separating the unchecked features from work already covered by PRs #8490, #8099, #8493, #8534, and #8535. Read the listed runtime paths, configuration entries, tests, setup.py extras, docs, and CODEOWNERS files, beginning with the specific feature you select. Done means the unsupported configuration fails at parse time and its runtime code, tests, packaging, and documentation no longer advertise it.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python, pytorch
- Domain
- distributed-systems, machine-learning, performance
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100