This release is a pre-release and may not be stable for production use.
Ladon-ML 🐉
The Hundred-Headed Guardian of Distributed Compute.
ladon-ml is a lightweight, infrastructure-level Python library designed to identify and reclaim Zombie Utilization in high-performance ML clusters. It is purpose-built for teams managing large-scale accelerator fleets (GPUs or specialized silicon like Trainium) where stalled kernels and silent hangs can lead to massive resource waste.
Status: Pre-Alpha. The full Collector → Brain → Reaper pipeline described below is implemented and tested (NVIDIA/Neuron/mock collectors, the sliding-window Brain, local and Kubernetes reapers, the CLI, Prometheus metrics), but it has not yet run against a real production training cluster.
LocalReaper/KubernetesReaperdefault to dry-run/log-only behavior - see Configuration before enabling live process/pod termination.
The Problem: Zombie Utilization
In distributed training, a "Zombie" is a node that reports 100% Compute Utilization and high power draw but provides 0% Functional Throughput. This usually happens due to:
- Stalled Kernels: An infinite loop in a custom op pinning the chip.
- Collective Deadlocks: A node waiting for a synchronization signal (Gloo/NCCL) that never arrives.
- Silent HBM Failures: Memory errors that stop the training loop but keep the hardware active.
Core Features
- Zero-Trust Telemetry: Correlates hardware-level metrics (Power, Thermal, Compute) with software-level progress (Network IO, Memory Delta, Gradient Updates).
- Inverse Correlation Detection: Identifies the signature of a zombie: high power/utilization + near-zero network/collective-communication traffic.
- Modular Reapers: Pluggable actions to "drain" a node, kill a specific process group, or signal orchestrators (Kubernetes/Slurm).
- Low Overhead: Written to run as a sidecar or a lightweight daemon with minimal impact on training latency.
Architecture
Ladon follows a Collector → Brain → Reaper pattern:
- Collectors: Interface with hardware drivers (e.g.,
NVML,Neuron SDK) to pull raw telemetry. - The Brain: Applies statistical analysis to detect anomalies and "Zombie" patterns over a sliding time window.
- The Reaper: Executes the reclamation policy (Log, Alert, or Kill).
Quick Start
Installation
pip install ladon-ml
CLI
# One-shot telemetry snapshot (use --mock to try it without real GPU/Neuron hardware)
ladon status --mock healthy
# Run the continuous Collector -> Brain -> Reaper daemon + Prometheus exporter (:9100)
ladon run --mock zombie
ladon status prints current telemetry per detected device - it's a single snapshot, not a Zombie verdict (the Brain needs a sliding window of samples over time to compute a Z_s score). ladon run is the real continuous detection loop.
Library usage
from ladon.brain import Brain, DeviceStatus
from ladon.collector import detect_collectors
from ladon.reaper.local import LocalReaper
collectors = detect_collectors() # auto-detects NVIDIA/Neuron hardware present on this host
brain = Brain(window_seconds=30.0, threshold=50.0)
reaper = LocalReaper(dry_run=True) # stays log-only until you explicitly opt into live kills
telemetry = [chip for collector in collectors for chip in collector.collect()]
for event in brain.ingest(telemetry):
if event.status == DeviceStatus.ZOMBIE_DETECTED:
print(f"Zombie detected on device {event.device_id} (Z_s={event.z_score:.2f})")
reaper.reap(event.active_pids)
See examples/simulate_cluster.py for a full interactive demo of this detect → reap → recover cycle, using simulated telemetry so it runs without any real hardware.
Configuration
Ladon can be configured via ladon_conf.yaml (shipped example), with environment variable overrides on top (e.g. LADON_BRAIN_THRESHOLD=75):
brain:
window_seconds: 30.0 # sliding window duration, in seconds
threshold: 50.0 # Z_s score above which a device is flagged as a zombie
epsilon: 0.001 # smoothing constant to avoid divide-by-zero on idle interconnects
power_max_w: 400.0 # device TDP used to normalize the power ratio
reaper:
dry_run: true # log-only by default; set to false to allow live process termination
grace_period_seconds: 5.0 # SIGTERM grace period before escalating to SIGKILL
Why "Ladon"?
In Greek mythology, Ladon was the dragon with one hundred heads that guarded the golden apples. He never slept and each head watched a different part of the garden. Ladon-ML serves as that unblinking guardian for your compute garden, ensuring no single chip goes rogue and wastes your "golden" training time.
License Apache 2.0
Metadata
Release files for ladon-ml 0.1.0a2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| ladon_ml-0.1.0a2.tar.gz | 29.9 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ladon_ml-0.1.0a2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 52.7 kB
Release files / ladon_ml-0.1.0a2.tar.gz
| Download URL | ladon_ml-0.1.0a2.tar.gz |
|---|---|
| Size | 29.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
441684cf4467b97a7b5a009275fdc0cd432e6361d3051133cb6585a6d7e195a9
|
|
BLAKE2b-256 checksum How to use checksums |
0db3be18d94fce9f0c2f1e63c2d33c3105d8d65c4724d757a8dc274b72f74c2f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 12, 2026.
Transparency logRelease files / ladon_ml-0.1.0a2-py3-none-any.whl
| Download URL | ladon_ml-0.1.0a2-py3-none-any.whl |
|---|---|
| Size | 22.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
59c2c269ce387344ecf5496ecfcf67a430f20fd53a8feba041e425166a53f742
|
|
BLAKE2b-256 checksum How to use checksums |
aa5c46bafbb73f5213da6a3a6c0d586e40d89ece401e18027a8f5740b4b3d765
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 12, 2026.
Transparency logSecurity for ladon-ml 0.1.0a2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for ladon_ml-0.1.0a2.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 12, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.