Repository navigation
[Wave 4] Low/info — Docs: docs/usermanuals/en/training/ (part 1/2) #791
Description
Wave 4 · 20 finding(s) in 20 fix package(s). Documents with fewer than five findings each in this wave, grouped by directory.
Findings
-
DOC-BLEGAL-242 (docs, Low) — docs/usermanuals/en/training/kto.md: wrong detail — "TRL's KTOTrainer runs with library defaults (1.0 / 1.0 weights, sigmoid loss)."
severity Low
Where.docs/usermanuals/en/training/kto.md:65(Turkish mirror:docs/usermanuals/tr/training/kto.md:65) · type: wrong detail
The document says. "TRL's KTOTrainer runs with library defaults (1.0 / 1.0 weights, sigmoid loss)."
What the code does. KTOConfig's loss_type default is 'kto' on trl 1.0.0, 1.7.1 and 1.14.1.
Proposed correction. '(1.0 / 1.0 weights, loss_type "kto")'
Turkish mirror. the Turkish page has the same error; fix both in the same PR -
DOC-D3B05-047 (docs, Low) — docs/usermanuals/en/training/dpo.md: broken example — Enable reference_free: true (less stable but skips the second model)
severity Low · already tracked: KNOWN-OPEN C31-DOC-SCHEMA-PROSE docs/roadmap/phase-16-trust-surface-hardening.md:785-786
Where.docs/usermanuals/en/training/dpo.md:128· type: broken example
The document says. Enable reference_free: true (less stable but skips the second model)
What the code does. training.reference_free is rejected (extra_forbidden, exit 1). The same page says at dpo.md:114 that reference_free is not exposed.
Proposed correction. Delete the bullet (or point to SimPO)
Turkish mirror. the Turkish page has no such statement -
DOC-D3B05-048 (docs, Low) — docs/usermanuals/en/training/dpo.md: false claim — ForgeLM automatically rolls back to the pre-DPO checkpoint
severity Low · already tracked: KNOWN-OPEN DOCS-04 docs/roadmap/phase-16-trust-surface-hardening.md:760-765
Where.docs/usermanuals/en/training/dpo.md:203· type: false claim
The document says. ForgeLM automatically rolls back to the pre-DPO checkpoint
What the code does. Auto-revert deletes final_model and restores nothing (exit 3). The same page's sequence diagram at dpo.md:172 says 'Delete DPO artefacts (no restore)'.
Code references.forgelm/trainer.py:994-998
Proposed correction. Say that the DPO output is deleted and the input model is left untouched
Turkish mirror. the Turkish page has no such statement -
DOC-D3B05-049 (docs, Low) — docs/usermanuals/en/training/dpo.md: misleading — Start at
5e-6for full fine-tunes
severity Low
Where.docs/usermanuals/en/training/dpo.md:212(Turkish mirror:docs/usermanuals/tr/training/dpo.md(pitfalls)) · type: misleading
The document says. Start at5e-6for full fine-tunes
What the code does. There is no full-fine-tune path; every run is LoRA (model.py:609).
Code references.forgelm/model.py:609
Proposed correction. Drop the full-fine-tune branch; give a LoRA DPO range only.
Turkish mirror. the Turkish page has the same error; fix both in the same PR -
DOC-D3B05-055 (docs, Low) — docs/usermanuals/en/training/kto.md: misleading — About 1.5× SFT memory — keeps a reference model like DPO does
severity Low
Where.docs/usermanuals/en/training/kto.md:73(Turkish mirror:docs/usermanuals/tr/training/kto.md:73) · type: misleading
The document says. About 1.5× SFT memory — keeps a reference model like DPO does
What the code does. ForgeLM is always LoRA (model.py:609). TRL computes the KTO reference with adapters disabled or a ref adapter, so no second model is loaded.
Code references.forgelm/model.py:609
Proposed correction. Say the reference is the adapter-disabled base model.
Turkish mirror. the Turkish page has the same error; fix both in the same PR -
DOC-D3B05-056 (docs, Low) — docs/usermanuals/en/training/kto.md: misleading — Production telemetry is imbalanced; KTO's per-class weights handle that more naturally
severity Low
Where.docs/usermanuals/en/training/kto.md:80(Turkish mirror:docs/usermanuals/tr/training/kto.md:80) · type: misleading
The document says. Production telemetry is imbalanced; KTO's per-class weights handle that more naturally
What the code does. The per-class weights are fixed at TRL defaults 1.0/1.0 and are not configurable in ForgeLM (the same page, lines 45 and 65; trainer.py:746-751).
Code references.forgelm/trainer.py:746-751
Proposed correction. Add: "(in ForgeLM the weights are fixed at 1.0/1.0; oversample the minority class instead)".
Turkish mirror. the Turkish page has the same error; fix both in the same PR -
DOC-D3B05-057 (docs, Low) — docs/usermanuals/en/training/kto.md: false claim — Use JSON booleans; the data loader rejects integer labels for KTO
severity Low
Where.docs/usermanuals/en/training/kto.md:84-86· type: false claim
The document says. Use JSON booleans; the data loader rejects integer labels for KTO
What the code does. Only column presence is checked; label 1/0 trains with exit 0
Code references.forgelm/data.py:600-607,forgelm/data.py:720
Proposed correction. Remove the sentence or add a bool-type check
Turkish mirror. the Turkish page has the same error; fix both in the same PR -
DOC-D3B05-058 (docs, Low) — docs/usermanuals/en/training/sft.md: misleading — Schema LR default is tuned for full-parameter training; 'For full fine-tuning, drop to 1e-5'; '(or merged checkpoint if not using LoRA)'
severity Low
Where.docs/usermanuals/en/training/sft.md:78,109,130 (Turkish mirror:docs/usermanuals/tr/training/sft.md:78,109,130) · type: misleading
The document says. Schema LR default is tuned for full-parameter training; 'For full fine-tuning, drop to 1e-5'; '(or merged checkpoint if not using LoRA)'
What the code does. ForgeLM always applies get_peft_model (model.py:609). There is no non-LoRA / full-parameter path. A merged checkpoint appears only with training.merge_adapters: true (config.py:457-460).
Code references.forgelm/model.py:609,forgelm/config.py:457-460
Proposed correction. State that ForgeLM always trains a LoRA-family adapter (usetraining.merge_adapters: trueto save merged weights), and drop the full-fine-tune guidance.
Turkish mirror. the Turkish page has no such statement -
DOC-D3B05-059 (docs, Low) — docs/usermanuals/en/training/sft.md: wrong detail —
--fit-checkoutput:FITS est. peak 7.8 GB / 12 GB available
severity Low
Where.docs/usermanuals/en/training/sft.md:101-104(Turkish mirror:docs/usermanuals/tr/training/sft.md:102-103) · type: wrong detail
The document says.--fit-checkoutput:FITS est. peak 7.8 GB / 12 GB available
What the code does. format_fit_check prints a block: '=== VRAM Fit Check ===', 'GPU available: X GB', 'Estimated peak: Y GB', 'Verdict: FITS', a breakdown and recommendations (fit_check.py:473-512).
Code references.forgelm/fit_check.py:473-512
Proposed correction. Show the real multi-line block, or say 'abridged'.
Turkish mirror. the Turkish page has the same error; fix both in the same PR -
DOC-D3B05-060 (docs, Low) — docs/usermanuals/en/training/sft.md: wrong detail — After training: checkpoints/sft/ holds adapter_model.safetensors, README.md, config_snapshot.yaml, and compliance/ only when the compliance: block…
severity Low
Where.docs/usermanuals/en/training/sft.md:124-134· type: wrong detail
The document says. After training: checkpoints/sft/ holds adapter_model.safetensors, README.md, config_snapshot.yaml, and compliance/ only when the compliance: block is present
What the code does. The adapter, card and tokenizer are in <output_dir>/final_model/. No config_snapshot.yaml is written (the config summary is compliance/training_manifest.yaml). compliance/ is written without a compliance: block. checkpoint-N, audit_log.jsonl and model_integrity.json/deployer_instructions.md also appear.
Code references.forgelm/trainer.py:1496-1506
Proposed correction. Replace the tree with the real layout
Turkish mirror. the Turkish page has the same error; fix both in the same PR -
DOC-D3B05-061 (docs, Low) — docs/usermanuals/en/training/simpo.md: misleading — Removing the reference model gives roughly half the VRAM of DPO (1.2× vs 2× SFT)
severity Low
Where.docs/usermanuals/en/training/simpo.md:8,72 (Turkish mirror:docs/usermanuals/tr/training/simpo.md:8,67) · type: misleading
The document says. Removing the reference model gives roughly half the VRAM of DPO (1.2× vs 2× SFT)
What the code does. ForgeLM's DPO never loads a second model: it is always LoRA and TRL uses adapter-disabled reference passes (model.py:609).
Code references.forgelm/model.py:609
Proposed correction. Say SimPO saves the reference forward passes, not a second model copy.
Turkish mirror. the Turkish page has the same error; fix both in the same PR -
DOC-D3B06-037 (docs, Low) — docs/usermanuals/en/training/distributed.md: misleading — "ForgeLM picks up the resulting [accelerate] config automatically."
severity Low
Where.docs/usermanuals/en/training/distributed.md:149(Turkish mirror:docs/usermanuals/tr/training/distributed.md) · type: misleading
The document says. "ForgeLM picks up the resulting [accelerate] config automatically."
What the code does. ForgeLM never reads an accelerate config.accelerate launchapplies it to the processes it spawns.
Code references.forgelm/trainer.py:592-615
Proposed correction. "accelerate launchapplies the recorded config to the ForgeLM processes it starts."
Turkish mirror. the Turkish page has the same error; fix both in the same PR -
DOC-D3B06-038 (docs, Low) — docs/usermanuals/en/training/galore.md: wrong detail — Comment:
galore_rank: 256 # higher than LoRA default (128).
severity Low
Where.docs/usermanuals/en/training/galore.md:34(Turkish mirror:docs/usermanuals/tr/training/galore.md:34) · type: wrong detail
The document says. Comment:galore_rank: 256 # higher than LoRA default (128).
What the code does. 128 is the GaLore rank default (galore_rank, forgelm/config.py:553-555). The LoRA default rank is 8 (config.py:347-352).
Code references.forgelm/config.py:553-555,forgelm/config.py:347-352
Proposed correction.# higher than the GaLore default (128) — projection rank
Turkish mirror. the Turkish page has the same error; fix both in the same PR -
DOC-D3B06-039 (docs, Low) — docs/usermanuals/en/training/galore.md: wrong detail —
galore_proj_typevalues are "std (default), reverse_std, right, left".
severity Low
Where.docs/usermanuals/en/training/galore.md:37,52 (Turkish mirror:docs/usermanuals/tr/training/galore.md:37) · type: wrong detail
The document says.galore_proj_typevalues are "std (default), reverse_std, right, left".
What the code does. The Literal also acceptsfull, which disables projection and is debug only (forgelm/config.py:564-567).
Code references.forgelm/config.py:564-567
Proposed correction. Add "full(disables projection; debugging only)".
Turkish mirror. the Turkish page has the same error; fix both in the same PR -
DOC-D3B06-040 (docs, Low) — docs/usermanuals/en/training/long-context.md: misleading — "ForgeLM supports training (and continued pre-training) on extended contexts."
severity Low
Where.docs/usermanuals/en/training/long-context.md:8(Turkish mirror:docs/usermanuals/tr/training/long-context.md:8) · type: misleading
The document says. "ForgeLM supports training (and continued pre-training) on extended contexts."
What the code does. Line 134 of the same page states "ForgeLM doesn't ship a pre-training trainer". The trainer types are sft/orpo/dpo/simpo/kto/grpo only (forgelm/config.py:461-464).
Code references.forgelm/config.py:461-464
Proposed correction. Drop "(and continued pre-training)" from the intro.
Turkish mirror. the Turkish page has the same error; fix both in the same PR -
DOC-D3B06-041 (docs, Low) — docs/usermanuals/en/training/long-context.md: misleading — Sliding-window attention "processes long sequences in overlapping windows". The example comment "process in 4K windows" presents it as a tec…
severity Low
Where.docs/usermanuals/en/training/long-context.md:28,51 (Turkish mirror:docs/usermanuals/tr/training/long-context.md) · type: misleading
The document says. Sliding-window attention "processes long sequences in overlapping windows". The example comment "process in 4K windows" presents it as a technique ForgeLM applies to any model.
What the code does.sliding_window_attentiononly passessliding_window=<int>intofrom_pretrainedkwargs (forgelm/model.py:468-471). Its schema description is "Override the model's sliding-window-attention size … None = use the model default" (config.py:586-589). It has an effect only on architectures that implement sliding-window attention.
Code references.forgelm/model.py:468-471,forgelm/config.py:586-589
Proposed correction. "Overrides the model's sliding-window size; only effective on architectures with sliding-window attention (e.g. Mistral)."
Turkish mirror. the Turkish page has the same error; fix both in the same PR -
DOC-D3B06-042 (docs, Low) — docs/usermanuals/en/training/long-context.md: wrong detail —
longrope: "Learns separate scaling per RoPE dimension." The section also implies a scalarfactoris the parameter.
severity Low
Where.docs/usermanuals/en/training/long-context.md:64(Turkish mirror:docs/usermanuals/tr/training/long-context.md:64) · type: wrong detail
The document says.longrope: "Learns separate scaling per RoPE dimension." The section also implies a scalarfactoris the parameter.
What the code does.longropedoes not learn anything. It requires operator-supplied per-dimensionshort_factorandlong_factorlists, andfactoris optional; alongropeblock without both lists is rejected at config load (forgelm/config.py:573-581, 670-678).
Code references.forgelm/config.py:573-581,forgelm/config.py:670-678
Proposed correction. "longrope| Per-dimension scaling | Requiresshort_factorandlong_factorlists (one value per RoPE dimension);factoroptional."
Turkish mirror. the Turkish page has the same error; fix both in the same PR -
DOC-D3B06-043 (docs, Low) — docs/usermanuals/en/training/long-context.md: misleading — "ForgeLM masks loss across example boundaries automatically" when packing.
severity Low
Where.docs/usermanuals/en/training/long-context.md:94(Turkish mirror:docs/usermanuals/tr/training/long-context.md:94) · type: misleading
The document says. "ForgeLM masks loss across example boundaries automatically" when packing.
What the code does. ForgeLM only forwardspackingto TRL'sSFTConfig, and only fortrainer_type: sft(forgelm/trainer.py:689-693). Any boundary handling is TRL's packing behaviour, which ForgeLM does not configure; ForgeLM sets no attention implementation.
Code references.forgelm/trainer.py:689-693
Proposed correction. "packingis forwarded to TRL's SFTConfig (SFT only); cross-example isolation depends on TRL's packing strategy and the attention implementation."
Turkish mirror. the Turkish page has the same error; fix both in the same PR -
DOC-D3B06-044 (docs, Low) — docs/usermanuals/en/training/lora.md: misleading — LoRA/QLoRA/DoRA is "a property of the optimiser, not the algorithm".
severity Low
Where.docs/usermanuals/en/training/lora.md:10(Turkish mirror:docs/usermanuals/tr/training/lora.md:10) · type: misleading
The document says. LoRA/QLoRA/DoRA is "a property of the optimiser, not the algorithm".
What the code does. PEFT is applied at model load, before any trainer is built (forgelm/model.py:609; cli/_training.py:141-148). It is not an optimiser property. The claim that it applies to every trainer is true.
Code references.forgelm/model.py:609,forgelm/cli/_training.py:141-148
Proposed correction. "…it is applied when the model is loaded, independent of the alignment algorithm."
Turkish mirror. the Turkish page has the same error; fix both in the same PR -
DOC-D3B06-045 (docs, Low) — docs/usermanuals/en/training/pipelines.md: misleading — Every stage's
model.name_or_pathis auto-set to the previous stage'straining.output_dir/final_model.
severity Low
Where.docs/usermanuals/en/training/pipelines.md:92,118 (Turkish mirror:docs/usermanuals/tr/training/pipelines.md) · type: misleading
The document says. Every stage'smodel.name_or_pathis auto-set to the previous stage'straining.output_dir/final_model.
What the code does. Auto-chaining happens only when the stage does not declare its ownmodel:block, or when it is overridden by--input-model(forgelm/config.py:2242-2248). A stage with its ownmodel:keeps its ownname_or_path. The inheritance matrix on line 129 is correct.
Code references.forgelm/config.py:2242-2248
Proposed correction. "…auto-set, unless the stage declares its ownmodel:block (then itsname_or_pathis used as written)."
Turkish mirror. the Turkish page has the same error; fix both in the same PR
Done when
- Every finding above is fixed or closed with a reason (tick it here).
- Code fixes carry a test; doc fixes update the Turkish mirror in the same PR.
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