Repository navigation
Documented 'built-in' DeepSpeed presets (and the default preset) are not shipped in the wheel (CR-MISC-002) #115
Description
Wave 0 · theme D0-8: Packaging and delivery promises · highest severity High · 1 finding(s) · effort small
Summary
A pip-installed user sets distributed.strategy: deepspeed with deepspeed_config: zero2 or leaves it unset. _resolve_deepspeed_config raises ConfigError ('DeepSpeed preset zero2 not found at /configs/deepspeed/zero2.json'), so the run exits 1. The CI 'DeepSpeed config validation' step only validates the files in the checkout, and the wheel-install smoke does not touch DeepSpeed.
Primary finding
CR-MISC-002 — Documented 'built-in' DeepSpeed presets (and the default preset) are not shipped in the wheel
severity High · reachability default · intent contract-violation · confidence confirmed · independently confirmed · reproduced end to end
What happens. forgelm/trainer.py:632-649 resolves the presets zero2, zero3 and zero3_offload to configs/deepspeed/*.json, relative to the parent of the installed package directory or the CWD. [tool.setuptools.package-data] covers only templates, safety_prompts, wizard/_defaults.json and py.typed. MANIFEST.in's recursive-include configs affects the sdist only. docs/reference/distributed_training.md:52 and configuration.md:295 present the three presets as built in, and a None deepspeed_config defaults to zero2.
Where.
forgelm/trainer.py:632-649pyproject.toml:257-279MANIFEST.in:5docs/reference/distributed_training.md:52docs/reference/configuration.md:295config_template.yaml:167docs/reference/distributed_training.md:48(the 'built-in presets' sentence; line 52 is the table header)forgelm/trainer.py:617-670(preset map 632-636, default 638-639, resolution 642-660).github/workflows/ci.yml:211forgelm/trainer.py:591-595(call site)
Recommended fix. Move the presets into the package (e.g. forgelm/deepspeed_presets/ with package-data) and resolve them with importlib.resources. Add a wheel-content test that asserts the preset files are present.
Acceptance criteria
- A regression test reproduces the failure scenario and asserts the corrected behaviour.
- Documentation listed above is corrected in English and in its Turkish mirror in the same PR.
- Every finding in this issue is resolved or explicitly closed with a reason.
- The release note names the contract this fix restores.
Found by the October 2026 ForgeLM code and documentation review against commit cab2947. Code links point at that commit; line numbers may have moved since. Finding IDs (CR-…, DOC-…, TECH-…) are stable references for this backlog.
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsTodo
Activity
cemililik commentedon Oct 15, 2026
This is the same defect as #110 and #111: the DeepSpeed presets are not shipped in the wheel. They are meant to be fixed in one pull request, so the contributor guidance ("Where to start") lives on #110. Please claim and discuss it there.
docs: webhooks, DeepSpeed presets, first-run output tree and --offlin…