Skip to main content

Graphyco

Computational graph topology and dynamic gradient-flow monitoring for PyTorch.


What is Graphyco

Graphyco extracts a formal computational graph from any PyTorch model and monitors gradient flow during training.

  • Static topology — Graph density, connectivity coherence, bottleneck ratio, perturbation resilience, and 7 structural invariants in deterministic fixed-point arithmetic.
  • Dynamic gradient-flow — Per-node activation/gradient RMS, edge attenuation, bottleneck concentration ($G_{\max}$), forward-backward alignment, temporal stability.
  • Live diagnostics — Context managers for training loops with automated vanishing/exploding gradient and dead neuron alerts.
  • Export & query — Serialize telemetry to JSON, compare architectures via QueryEngine or REST API.
  • Desktop GUI — PySide6 real-time visualization.

Install

pip install graphyco

# with desktop GUI
pip install graphyco[gui]

Full technical documentation: docs/DOCUMENTATION.md


How to Use It

1. One-Line Profiling

import torch.nn as nn
from graphyco import visualize

model = nn.Sequential(nn.Linear(64, 128), nn.ReLU(), nn.Linear(128, 10))
visualize(model, inputs=torch.randn(8, 64), steps=5, port=8000)

2. Static Topology Evaluation

from graphyco import evaluate_model, validate_invariants

result = evaluate_model(model, mode="trace")  # or mode="module"

print(f"Nodes: {result['num_nodes']}, Edges: {result['num_edges']}")
print(f"Bottleneck Ratio: {result['topological_bottleneck_ratio']}")
print(f"Resilience: {result['structural_perturbation_resilience']}")

validate_invariants(result['graph_state'])

3. Live Training Monitoring

from graphyco import LiveTrainingMonitor

monitor = LiveTrainingMonitor(model, log_interval=5)

for step in range(100):
    with monitor.observe(step):
        optimizer.zero_grad()
        loss = criterion(model(x), y)
        loss.backward()
        optimizer.step()

    if monitor.has_new_data():
        info = monitor.get_latest_bottleneck()
        print(f"Step {step}: choke={info['bottleneck_node']} G_max={info['max_concentration']:.2f}")

4. Health Diagnostics

from graphyco import LiveTrainingDiagnostics

diag = LiveTrainingDiagnostics(model, inputs=torch.randn(16, 64))

for step in range(50):
    with diag.observe_step(step):
        optimizer.zero_grad()
        loss = criterion(model(x), y)
        loss.backward()
        optimizer.step()

health = diag.get_health_snapshot()
print(health.status)
print(health.bottleneck)
print(health.layer_telemetry)

5. Export & Query

from graphyco import extract_benchmark_json, QueryEngine

extract_benchmark_json(model, inputs=x, steps=10, arch_name="MyModel", export_path="benchmark.json")

engine = QueryEngine("benchmark.json")
engine.describe()                     # single-model summary
engine.describe(siblings=True)        # cross-architecture comparison
engine.get_bottlenecks()              # ranked bottleneck nodes
engine.get_neighbors("layer_3")       # DAG predecessors, successors, siblings

6. CLI

python -m graphyco.visualizer --json benchmark.json
python -m graphyco.visualizer --json benchmark.json --query bottlenecks

python -m graphyco.visualizer --model resnet --steps 10 --export resnet_benchmark.json

Tutorials

Jupyter notebooks in notebooks/tutorials/:

Notebook Purpose
Quickstart & Model Evaluation Static graph extraction, topological metrics, invariant validation, perturbation analysis, scale invariance.
Live Training Diagnostics LiveTrainingMonitor and LiveTrainingDiagnostics in training loops, gradient bottleneck tracking, dead neuron detection, anomaly alerts.
Benchmark Export & Querying FX tracing vs module fallback, extract_benchmark_json, QueryEngine summaries, cross-architecture comparison, DAG queries.
Live GUI Visualization PySide6 desktop GUI, real-time training visualization, %gui qt integration, CLI usage.

Verification

pytest
python validation/validate_framework.py
python validation/validate_dynamic_flow.py

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

graphyco-0.1.1.tar.gz (44.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

graphyco-0.1.1-py3-none-any.whl (50.0 kB view details)

Uploaded Python 3

File details

Details for the file graphyco-0.1.1.tar.gz.

File metadata

  • Download URL: graphyco-0.1.1.tar.gz
  • Upload date:
  • Size: 44.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.13

File hashes

Hashes for graphyco-0.1.1.tar.gz
Algorithm Hash digest
SHA256 3bd2ce4bb34abd429813c10206fcb60f1b0b4ffa2a7bcd925bfc33e00ba41479
MD5 10d4301d1a24465a1e21ac180478d57f
BLAKE2b-256 136d6387c6eba2e739cd2e9baba9e1ed6a17f02b204af334fc69dea1381779f5

See more details on using hashes here.

File details

Details for the file graphyco-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: graphyco-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 50.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.13

File hashes

Hashes for graphyco-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 fd74dcfbc36dbb14c368a19ec5c59d40f3c9c8c224a9bc20c324fb1f9b364d41
MD5 eace7243e17ab1158452923b20b57356
BLAKE2b-256 7831b9e55466a78be35c06d5fbb9fa0d15c19ed8fd06336bf48fa98cab93093c

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page