Reinforcement Learning
Transformers
English
post-training
distillation
agentic-coding
composer-2.5
cursor
kimi-k2
grpo
dapo
diloco
openenv
trl
verl
research
methodology
Instructions to use Codeseys/composer-replication-framework with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Codeseys/composer-replication-framework with Transformers:
# pip install -U transformers accelerate # Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("Codeseys/composer-replication-framework", device_map="auto") - Notebooks
- Google Colab
- Kaggle
Commit History
-
feat(hints): ADR-009 layered HintGenerator; accepted
Track B of the deep-work-loop. Extends hint_generator.py from a flat dispatch registry into a layered, cost-ordered HintGenerator behind a typed Protocol — the SDPO textual-feedback hint source (Composer 2.5's hint mechanism is unstated in every Cursor artifact; this is our reconstruction). Layers (tried cheapest-first, first non-None wins): 1. TemplateHintGenerator — the existing 5 templates (free, deterministic; byte-identical to dispatch(), preserved). 2. RawErrorHintGenerator — raw env/tool error text as the hint (free; covers any message-bearing site templates miss). SDPO "environment feedback as conditioning signal". 3. LLMJudgeHintGenerator — <=2-sentence corrective hint via an injected complete() callable (optional, OFF unless provided; in-memory + disk cache keyed on error-context hash; covers style/communication/effort). CompositeHintGenerator.as_collator_hook() returns a callable matching the existing CollatorConfig.hint_generator signature (…84740d4 -
feat(trainer): ADR-008 gate-3 live GRPO+SDPO smoke PASS; ADR-008 accepted
The composer_grpo_sdpo_smoke instantiates a real trl.GRPOTrainer via ComposerReplicationTrainer on Qwen2.5-0.5B with the Dr. GRPO config (loss_type=dr_grpo, scale_rewards=none, num_iterations=1) and alpha_sdpo=1.0, runs 1 step, and confirms loss/sdpo_kl is logged — the SDPO channel is wired into the live Dr. GRPO loop. PASS. Surfaced + fixed a real API drift: TRL 1.5.0 dropped GRPOConfig.max_prompt_length. All 4 ADR-008 acceptance gates green -> status proposed->accepted; gate checkboxes ticked with evidence; index updated.2a34df4 -
docs(adr): add ADR-008/009/010 (Dr.GRPO+SDPO, layered hints, FeatureDeletionEnv)
Phase-4 of the deep-work-loop. Three proposed ADRs translating the Composer 2.5 data-gen + targeted-textual-feedback research into durable decisions, each with mechanized acceptance gates (status stays `proposed` until gates green): - ADR-008: target Dr. GRPO (length-std off, no std-norm, k1 KL, Adam, single-epoch — per arXiv:2603.24477) and host the live SDPO channel in the TRL ComposerReplicationTrainer. amends ADR-006 (SDPO needs full logits -> TRL-only; PRIME-RL hosts channels 1+3). preserves ADR-007. - ADR-009: layered HintGenerator (template -> raw-error -> LLM-judge -> SDPO sibling-bootstrap) behind a typed Protocol; preserves the existing templates + CollatorConfig.hint_generator hook. - ADR-010: FeatureDeletionEnv synthetic-data subsystem inverting OSS SWE substrates (SWE-bench-Lite/SWE-Gym/R2E-Gym/SWE-rebench) + online difficulty gate + reward-hacking safeguards. ADR-006 patched: Amended-by header + stale matrix row qualified. Index added. Prior-ADR audit (ad…36ab61e
-
Wave 15: 4-angle multi-model self-critique caught 2 math BLOCKERs in primary loss kernels; fixed against upstream byte-for-byte + GSM8K example + ergonomics
PHASE 15a: 4 parallel adversarial reviewers, each with different framing to maximize independent-angle coverage: - MATH (Opus 4.7): cloned upstream OPSD/TAID/PRIME-RL/SimPO, did line-by-line diff. Found 2 BLOCKERs all 8+ prior reviewers missed. - TESTS (Opus 4.7): scrutinized 3 high-stakes test files for weak assertions. Found PRIME-RL parity test silently never runs; bit-exact test uses allclose; entropy-OPD test is pure smoke. - DOCS (Opus 4.7): audited 6 major docs + ADRs. Found test-count drift (77/107/124 vs 145), compose_loss kwarg drift, stale "Deferred to Wave 14" claim, PRIME-RL test count 10 vs 16. - USER-JOURNEY (Opus 4.7): walked "RL-finetune Qwen-7B on GSM8K" end-to-end. Scored framework 2.4/5 with Real-Task-Path = 1/5. #1 friction: NO GSM8K example anywhere. All 4 reports saved to /tmp/wave15_*.md. Headline: math reviewer's upstream-clone-and-diff approach caught what paper-level review missed. PHASE 15b: synthesized findings into 5-task fix scatter. PHA…e5add15 -
Wave 14: close every Wave 13 review finding + 4 documentation files; Wave 14b: real PRIME-RL parity + multi-process DiLoCo convergence
PHASE A: 4 parallel impl subagents closed every Wave 13 cross-model review item. T1 \u2014 compose_loss integration (closes W13 BLOCKER 2): - Added `dpo_variant: 'dpo'|'simpo'`, `sdpo_wrapper: 'none'|'taid'|'entropy_opd'`, `taid_schedule_step`, `taid_total_steps` plus 5 tuning kwargs - 11 new integration tests in composer_replication/tests/test_compose_loss_integration.py - Bit-exact reproduction of legacy compose_loss output when defaults preserved - All 38 spike-005 tests still pass T2 \u2014 replaysim DJ adapter reshape (closes W13 Suggestion 3): - _dpo_pair_to_dj_record now emits BOTH flat strings AND chat-messages for dual-shape compatibility with data-juicer's text ops - _dj_record_to_normalized round-trips both shapes - default.yaml fixed: text_keys plural \u2192 text_key singular (caught a related bug in the same op set) - Real data-juicer e2e test runs DefaultExecutor on a 3-record fixture - 15 tests (was 9) T3 \u2014 MockManager DiLoCo integration (closes W13 Suggest…d9dd3a5 -
Wave 13: serverless DiLoCo + replaysim normalization + 3 distillation losses + PRIME-RL + Monarch
Expanded the brief mid-deep-work-loop to address the user's request for serverless training-system support, replaysim dataset normalization, deeper self-distillation paper coverage, and Meta's PyTorch agentic stack tie-ins. NEW MODULES (35 tests passing): - composer_replication.distillation: SimPO (arXiv:2405.14734), TAID (arXiv:2501.16937), Entropy-Aware OPD (ICLR 2026 spotlight). 17 unit tests covering scalar/differentiable/scheduler-monotonicity and boundary-condition correctness against paper formulas. - composer_replication.diloco.serverless: ServerlessExecutor Protocol + ObjectStoreAllReduce (fsspec-backed; works with file:// + s3:// + hf:// + gs:// + az://) + LocalProcessExecutor (working) + ModalExecutor / HFJobsExecutor (skeletons, raise NotImplementedError). 9 tests including 3 multi-process tests pinning the allreduce barrier with mean-of-{0,1,2}=1 + mean-of-{0,100,200}=100 across two consecutive rounds. - composer_replication.replaysim: data-juicer adapte…b266c31 -
Wave 11: cross-model adversarial review + honest down-revision
Phase 11 of the deep work loop ran a cross-model adversarial review on the Wave 7-10 work. The review (anthropic/claude-opus-4.7, separate session) found 10 substantive flaws including 2 BLOCKERs: 1. **Scorecard inflation** — initial self-claim was 5/10 → 9/10, honest re-scoring is 5/10 → 7/10 ✅ + 1/10 ⚠️ + 2/10 ❌-spirit. 2. **Spike 008 acceptance criterion silently redefined** — BACKLOG required "2 replicas converge"; what shipped is "1 replica + passthrough no-op allreduce." The recon doc's "ready-to-paste 2-replica pattern" hits a single-process post-hook sequencing bug. Both BLOCKERs addressed in this commit: - docs/research/WAVE_7_10_FINAL_REVIEW.md — full 423-line review committed. - docs/VISION_VALIDATION.md — replace 9/10 self-claim with honest 7/10 re-scoring + per-test caveats acknowledging the spirit-failures of tests 6/8/10. Explicitly notes "the framework as of this commit has zero GPU evidence of any kind." - spikes/008-streaming-diloco/verdict.md — s…f16fa23 -
Wave 7: Phase 2-4 of deep work loop — backlog, parallel research, three ADRs
Imports the gap-closer wave from VISION_VALIDATION.md as a structured backlog, records the deep work loop log, and locks three architecture decisions backed by primary-source research from three subagent recons. Backlog items (CPU-only, no GPU budget): - Spike 006 — real HF model smoke (Wave 7 next) - Spike 007 — real trace ingestion (Wave 8) - Spike 008 — Streaming DiLoCo smoke (Wave 9) - Wave 10 — packaging (pyproject.toml + examples/) - Spike 002a-mini — Modal-gated GPU smoke (Phase 10) Research (docs/research/, 1168 lines total): - MODAL_RECONNAISSANCE.md — Modal pricing + setup, primary-sourced from modal.com/pricing and modal.com/docs. Verdict: Modal L4 is $0.08-0.13 per smoke run but loses to local 5090 by 10x on iteration cycle (3-5min vs 25-40s). Modal becomes correct for parallel sweeps, 7B+ models, multi-node training, or CI repro — none of which apply to gap-closer wave. - DILOCO_RECONNAISSANCE.md — audited 5 candidates. meta-pytorch/torchft wins: BSD-3, 312 com…ac4bfb4