Skip to content
Quickstart

From zero to your first diagnosis in under 5 minutes

Three paths. Path A is fastest — paste a log, get a diagnosis, no install. Path B is for clusters — wrap your training command with the agent and get every failure diagnosed automatically. Path C is proactive — watch the GPUs directly and get the fix before the run even crashes.

Path A — Zero-Config CLI Test Drive

Diagnose a crash instantly right from your terminal without signing up.

  1. Install the CLI globally:
    pip install denpex
  2. Pass your failing log to the CLI:
    denpex diagnose training.log
  3. You'll get the root cause, confidence, and exact fix printed to stdout in seconds.

Test drive mode allows 3 free diagnoses per IP without an API key.

Path B — Paste a log (web UI)

The agent is a single Python file, stdlib only, no dependencies. It wraps your training command and heartbeats every 30 seconds.

# 1. Grab the agent (single file, stdlib only, Python 3.8+)
curl -O https://denpex.com/agent/denpex.py

# 2. Set the API key from your dashboard
export DENPEX_API_KEY=dpx_...

# 3. Wrap your training command — that's it
python denpex.py run --job llama3-finetune -- torchrun --nproc_per_node=8 train.py

On a non-zero exit, the agent ships the last 500 log lines to the Denpex API and you get the diagnosis in your dashboard. A silent heartbeat for 3+ minutes flags the job as hung — which the failure logs alone can never tell you about.

Path C — Catch failures before the crash

Path B diagnoses a run after it dies. Path C watches the GPUs themselves. The telemetry watcher polls NVML — or an existing DCGM-Exporter — every 30 seconds and ships a diagnosis the instant it sees an Xid fault, uncorrectable ECC error, pending row-remap, or thermal throttle. That is usually minutes before the NCCL watchdog fires and the job actually crashes. By the time you open your laptop, the root cause and the fix are already in Slack.

# Grab the telemetry watcher (single file, stdlib only)
curl -O https://denpex.com/agent/denpex_telemetry.py

# Read the driver directly on each node — no extra dependencies
python denpex_telemetry.py --nvml --watch

# ...or scrape a DCGM-Exporter you already run
python denpex_telemetry.py --dcgm http://localhost:9400/metrics --watch

# See it right now: inject a simulated Xid 79 and watch the full loop
python denpex_telemetry.py --simulate

--simulate fires a synthetic GPU fault so you can watch detection → diagnosis → alert end-to-end in a single cycle, even on a laptop with no real fault — the fastest way to see the proactive loop work. Run one watcher per node, or point it at a rack-level DCGM-Exporter. Proactive cluster monitoring is included on Scale and trial plans.

What happens next

  • Diagnosis lands in your dashboard with root cause + fix.
  • If you've configured an alert channel (Slack, PagerDuty, SMS, webhook), the diagnosis is pushed there with severity mapping.
  • Press the thumbs-up to add the fix to your team's knowledge base. Future identical failures match against confirmed fixes first.

Next steps