Releases: tsugiai/tsugi-mend
Release list
v0.1.5
Additive + hardening release; default mode remains bit-exact and byte-identical to 0.1.4.
- Under-declared-roster in-place fallback +
MergeResult.roster_fallbackdiagnostic - GraceWindowSyncer property-based fuzz (hypothesis, dev extra) + corrected
learners_excludedsemantics (merged tensors unchanged) - Sparse-delta nonzero-mask optimization, provably bitwise-identical (CUDA-confirmed)
MendConfigis now keyword-only (positional construction raises; positional order was never stable)- RuntimeAutotuner v2 observe-only signals: per-learner EWMA/CUSUM drift flag + sustained peer-relative gate (flag-only; defaults byte-identical)
- Opt-in
incremental_collect: straggler-aware first-arrival-order accumulation, bit-exact by construction with integrity fallback - Opt-in
outer_step_compression_mode="quant4": LOSSY 4-bit block quantization with error feedback (defaultnoneuntouched)
See CHANGELOG 0.1.5 for compatibility notes.
v0.1.4
World-size-aware multi-rack reducer, wired live through the runtime.
GraceWindowSyncer.start_roundaccepts an optionalexpected_learner_idsroster (andtotal_learners); the syncer early-finalizes withreason == "all_present"once every expected, non-fail-slow learner has reported and quorum is met, instead of always waiting out the full grace window. NewMergeResult.learners_absentabsentee diagnostic;quorum_min_learners > totalnow rejected with a clearValueError. (#28)- Opt-in
MendConfig.expected_learner_idsthreads the roster runtime ->ConcurrentOuterStep->start_roundon every outer round, with a per-round override onsubmit_async/outer_step_begin;learners_absentis surfaced in theouter_step_collectdiagnostic event. (#30) - Default mode (
expected_learner_ids=None) is unchanged: merge functions are character-for-character identical to v0.1.3, and the roster early-finalize path is proven bit-identical to the no-roster path withtorch.equalin the integration tests. - The roster must be exhaustive (name every learner expected to report); see the CHANGELOG and
docs/architecture.mdfor the full fallback semantics.
Full changelog: https://github.com/tsugiai/tsugi-mend/blob/main/CHANGELOG.md
v0.1.3
Ships the three features merged since v0.1.2.
Added
- Lossless sparse-delta compression mode (
outer_step_compression_mode="sparse"): opt-in, dense fallback, default staysnone. - Online runtime autotuner (
auto_tune_runtime, default OFF): bit-exact-safe in default mode. - Seeded stall-sweep benchmark harness (benchmark/docs tooling; not shipped in the wheel).
0.2.0 remains reserved for secure-by-default sideband auth. Full notes in CHANGELOG.md.
Install: pip install --upgrade tsugi-mend
v0.1.2
tsugi-mend 0.1.2 syncs the published package to the hardened, honest repo (0.1.1 on PyPI still led with the retired +28.58% single-run headline).
Highlights:
- Claim accuracy: described as a component toolkit you wire into your training loop (not a transparent drop-in); unwired mechanisms labeled with their 0.1.x status; bit-exact referent and the Decoupled DiLoCo citation corrected; the single-seed n=1 row moved out of the headline table.
- Security (sideband; opt-in; control-plane only): HMAC replay protection, TLS that requires a CA and verifies peer identity, inbound read-timeout + connection cap, per-bind insecure-bind warning. Default trusted-network behavior unchanged.
- Robustness: explicit bounded process-group timeouts + a completed multi-node runbook (NCCL_SOCKET_IFNAME + multi-NIC guidance).
Bit-exact loss equivalence in default mode is preserved throughout. See CHANGELOG.md for the full list.
v0.1.1
First versioned release through the tokenless OIDC Trusted-Publishing pipeline. Adds the tsugi-mend CLI (version/info/doctor) + py.typed; opt-in sideband auth (HMAC)/TLS + unconditional input hardening; a multi-node torchrun runbook + runnable gloo example + Dockerfile; hardened CI (blocking mypy, advisory pip-audit, current actions); and a README benchmark-honesty pass. See CHANGELOG.md.