Home · ASPLOS 2025 · Machine Learning Systems

Cascade: A Dependency-aware Efficient Training Framework for Temporal Graph Neural Network

Yue Dai, Xulong Tang and Youtao Zhang

Conference
ASPLOS 2025
Published
2025
Pages
95-110
Citations
2

Temporal graph neural networks learn from a stream of time-ordered events on an evolving graph by keeping a running memory for each node, but training them is painfully slow, because processing events in big parallel batches means later events read stale node memories that earlier events in the same batch should have updated — forcing tiny batches that leave the GPU idle; this work from the University of Pittsburgh notices that most events in a batch do not actually depend on each other, either because they touch different parts of the graph or because the nodes they touch have barely-changing memories, and packs those independent events together to run 2.3 times faster on average without losing accuracy.

The argument in one glance

  1. Problem

    Training temporal graph networks forces tiny, slow batches

    A temporal graph neural network keeps a running memory per node, updated by a time-ordered stream of events. Training batches events for parallelism, but within a batch, later events read node memories from before the batch instead of the fresher ones earlier events should have produced.

  2. What people did

    Trade batch size against accuracy

    Use larger batches for more parallelism and speed, or smaller batches for fresher memories and better accuracy, picking a point on the tradeoff.

  3. Why it fell short

    Both ends of the tradeoff are bad

    Large batches rely on stale node memories and hurt accuracy; small batches keep accuracy but mean far more iterations, high latency, and an underutilized GPU. On one benchmark a small batch is noticeably more accurate but trains several times slower, so methods are stuck with small batches.

  4. This paper's idea

    Pack only the independent events into big batches (Cascade)

    Cascade observes that most events in a batch do not truly depend on each other. A topology-aware scheduler packs together events touching different parts of the graph (spatially independent), and it uses memory similarity to find stabilized nodes whose memories barely change, breaking temporal dependencies on them; it also adapts each node's update frequency from runtime feedback. This safely enlarges batches for a 2.3 times average speedup with no accuracy loss.

Why this problem is worth solving

Dynamic graphs are everywhere, and the models that learn from them keep a running memory that makes training uniquely sequential.

Many real-world systems are dynamic graphs that change over time — social networks, knowledge graphs, traffic and autonomous systems — and are naturally modeled as a continuous-time stream of events, such as an edge appearing between two nodes at a particular timestamp, chronologically ordered. A temporal graph neural network (TGNN) learns from this stream by keeping, for each node, a state vector called its memory, which encodes the temporal and spatial dynamics around that node. As events arrive, they generate messages that update the memories of the involved nodes, and the memories are used to make predictions — for instance, whether an edge will appear. This memory is what lets TGNNs capture how the graph evolves and achieve their strong accuracy. To train efficiently, systems segment the event stream into batches and process each batch in parallel: predict on the current memories, compare against the batch’s events as ground truth to compute a loss and update the model weights, then generate messages from the batch’s events and update the node memories. The memory is the crux — it makes every event depend, in principle, on the events before it.

That per-node memory creates a sequential dependency that pits parallelism against accuracy, and the tradeoff is brutal.

Batching is what gives training its parallelism, but it glosses over the order of events within a batch. When many events are processed together as a batch, they all read the node memories as they stood before the batch began, rather than the fresher memories that earlier events in the same batch would have produced had they been applied first. So an event late in a large batch may be trained and make its update based on stale information about the very nodes it touches. The larger the batch, the more parallel the training and the faster it runs — but the more events rely on outdated memories, which degrades the model’s accuracy. Shrink the batch and the memories each event sees are fresher and accuracy recovers, but now there are many more small batches, each underutilizing the GPU, so training becomes slow and the hardware sits idle. The paper quantifies how sharp this is: on the Temporal Graph Network model with the Wikipedia dataset, a batch size of 900 achieves markedly better validation loss than a batch size of 6000, yet trains several times slower on an A100 GPU. Existing methods, unwilling to sacrifice accuracy, are forced into small batches and pay the efficiency cost.

What people did before, and where it broke

  • Use large batches for speed. Pack many events per batch to maximize parallelism and keep the GPU busy. Where it broke. Events in a large batch read pre-batch node memories, so many train on stale information, which reduces the model’s accuracy.
  • Use small batches for accuracy. Shrink the batch so each event sees fresh, recently-updated memories. Where it broke. Small batches mean many more iterations that each underutilize the GPU, so training is slow and hardware sits idle — several times slower on a real benchmark.
  • Pick a fixed point on the tradeoff. Choose one batch size balancing speed against accuracy for the whole run. Where it broke. Any fixed size accepts either staleness or slowness across the board, and cannot exploit that the right balance differs across the graph and over time.
  • Treat every event in a batch as dependent on the others. Assume the sequential order matters uniformly, so batching is inherently limited by staleness. Where it broke. Most events in a batch actually do not affect each other — they touch different parts of the graph, or nodes whose memories are barely changing — so this assumption leaves large safe batching opportunities unused.
  • The gap. No framework identified which events in a batch are genuinely independent and enlarged batches only with those, adapting over time. Providing that is what Cascade does.

How Cascade works

From a fixed batch-size tradeoff to dependency-aware batching

  1. new

  2. new

  3. new

  4. new

  5. new

The idea

Batch the events that touch different parts of the graph. Cascade’s first lever is spatial independence: events in a dynamic graph occur sparsely, so at any moment many of them touch distinct, non-interacting regions of the graph, and two events that share no relevant nodes cannot make each other’s memories stale — applying them in the same batch is exactly as correct as applying them one after another. A topology-aware scheduler exploits this by packing as many such spatially-independent events as possible into a single batch, enlarging the batch for parallelism without introducing the staleness that a naive large batch would. Recognizing that operations on different parts of a graph do not conflict and can therefore run concurrently, so the graph’s structure itself reveals safe parallelism, is the same move the concurrent graph-traversal work covered elsewhere on this site makes, using which regions of the graph each operation touches to schedule independent work together rather than serializing over the whole structure.

Skip the dependency on state that has stopped changing. Cascade’s second lever is temporal stabilization: some nodes reach a memory that barely changes over a period — a consistently popular product whose state is effectively steady despite constant activity — and for such stabilized nodes, whether an earlier event’s update is applied before a later event makes almost no difference, because the memory would be nearly identical either way. So Cascade detects stabilized nodes by the similarity of their memories over time and removes them from the batching constraints, treating events on them as temporally independent and freeing much larger batches. Detecting when a quantity has effectively stopped changing and skipping the work of faithfully re-deriving it, because its contribution is negligible, is the same discipline the omit-weak-computation work covered elsewhere on this site follows, identifying the parts of a computation whose effect on the result is small enough to drop and spending effort only where it actually changes the outcome.

Adapt the effort to each node and the moment. Rather than a fixed policy, Cascade continually tunes how often each node’s memory is updated using runtime feedback, updating volatile nodes frequently to keep them fresh and stable nodes rarely to save work, so the parallelism-accuracy balance is set per node and adjusted as the graph and the training evolve. This makes the framework a general, adaptive TGNN training system rather than a one-shot heuristic. Building an efficient training framework that adapts its work to the data it is processing, extracting parallelism dynamically instead of applying one static schedule, is the same design the efficient graph-neural-network training work covered elsewhere on this site is built on, tailoring how the training is executed to the structure and behavior of the graph so that the hardware is used well without compromising the model.

Following a training run through Cascade

Enlarging batches by dependency, not by guesswork

A trace of Cascade training a TGNN on an event stream, following the paper's dependency-aware design.

Step 1 of 5

Events arrive as a time-ordered stream

The dynamic graph is a chronological sequence of events (edges appearing, nodes changing), each updating the memories of the nodes it touches. Training must respect that later events should see earlier updates.

The node memory is what creates the sequential dependency.

Why it works

  • Independent events can share a batch losslessly. Because two events touching different graph regions or stable nodes do not affect each other’s memories → batching them together yields the same result as processing them in order → so the batch grows without introducing staleness.
  • The graph’s sparsity supplies the parallelism. Because events occur sparsely across the graph at any moment → many pending events are spatially independent → so a topology-aware scheduler can consistently find large sets of safe-to-batch events.
  • Stable memories make order irrelevant. Because a stabilized node’s memory barely changes → the difference between applying an update before or after a later event is negligible → so dropping that temporal dependency costs essentially no accuracy while freeing much bigger batches.
  • Per-node adaptivity matches effort to volatility. Because nodes differ in how fast their memories change → updating volatile nodes often and stable nodes rarely → so freshness is preserved where it matters and work is saved where it does not.
  • Bigger safe batches use the hardware. Because small batches underutilize the GPU while large naive batches lose accuracy → enlarging batches only with independent events does both → so training runs faster at full utilization without sacrificing the model.

What it costs (trade-offs and scope)

  • Detecting independence adds bookkeeping. Cascade must analyze which events are spatially independent and measure node-memory similarity to find stabilized nodes, plus track runtime feedback. This scheduling and analysis is overhead that must stay small relative to the training it accelerates, which the design targets but is a real cost.
  • Stabilization is an approximation. Treating a stabilized node’s memory as effectively unchanged is an approximation; if a node judged stable actually shifts, its temporal dependency is dropped incorrectly. The paper reports no accuracy loss, indicating the similarity threshold is chosen conservatively, but the safety depends on that judgment being accurate for the workload.
  • The benefit depends on graph sparsity and stability. The gains come from events being spatially sparse and some nodes being stable; a densely-interacting graph where most events touch overlapping, volatile nodes would offer fewer independent events to batch, so the speedup would shrink.
  • The speedups vary widely. The 2.3 times average (up to 5.1 times) reflects that different datasets and models have very different amounts of exploitable independence; the low end is a modest gain and the high end an outlier, with typical results in between.
  • It targets memory-based TGNN training. Cascade is designed for temporal graph networks that keep per-node memories updated by continuous-time events. Static GNNs, snapshot-based models, or TGNNs without this memory structure would not benefit from the same mechanisms.
  • Results are against specific baselines. The improvements are over particular state-of-the-art TGNN training frameworks on particular datasets (such as Wikipedia and Reddit) and hardware; other baselines, graphs, or GPUs would shift the exact numbers.

The evaluation

Batching strategies for temporal graph network training

PropertyLarge fixed batchesSmall fixed batchesCascade (dependency-aware)
Parallelism / GPU utilization
Node-memory freshness
Accuracy
Adapts across graph and time
Training speedFast but inaccurate
Batching strategies for training temporal graph neural networks, as compared in the paper. A TGNN keeps a memory vector per node, updated by a time-ordered stream of events, and training batches events for parallelism. But within a batch, events read the node memories from before the batch rather than the fresher ones earlier events would produce, so large fixed batches run fast but train many events on stale memory and lose accuracy, while small fixed batches keep memories fresh and accurate but under-utilize the GPU and run several times slower — a sharp tradeoff that traps prior methods in small batches. Cascade breaks the tradeoff by enlarging batches only with events that are genuinely independent. A topology-aware scheduler packs together spatially-independent events that touch different, non-interacting parts of the graph, whose memory updates cannot conflict; it uses node memories' similarities to identify stabilized nodes whose memories barely change and drops the temporal dependency on them, packing more temporally-independent events together; and it adaptively decides each node's memory update frequency from runtime feedback, updating volatile nodes often and stable nodes rarely. This keeps memories effectively fresh while raising parallelism to full GPU utilization, achieving a 2.3 times average (up to 5.1 times) speedup over prior state-of-the-art TGNN training frameworks without jeopardizing accuracy.Underlined values explain themselves when clicked.

Check yourself

Check your understanding

  1. 1. Why is training a temporal graph neural network (TGNN) inherently sequential, and what tradeoff does batching create?

  2. 2. What is Cascade's key observation that lets it enlarge batches safely?

  3. 3. What are the three mechanisms Cascade uses?

  4. 4. What did Cascade achieve, and what are its limitations?

Sources

The paper is “Cascade: A Dependency-Aware Efficient Training Framework for Temporal Graph Neural Networks” by Yue Dai, Xulong Tang, and Youtao Zhang, published at ASPLOS 2025, DOI 10.1145/3676641.3716250. All authors are in the Department of Computer Science at the University of Pittsburgh.

This explainer is based on the full text of the paper, obtained from an author’s copy hosted on Xulong Tang’s University of Pittsburgh publications page. The problem framing (temporal graph neural networks modeling dynamic graphs as continuous-time streams of events and keeping a per-node memory vector updated by events and used for predictions; the three-step batch computation of predicting, computing loss and updating weights, generating messages, and updating memories; and the staleness-versus-parallelism tradeoff where batching reads pre-batch memories, so large batches lose accuracy and small batches underutilize the GPU, quantified by the Wikipedia example where a batch of 900 beats a batch of 6000 on validation loss but trains several times slower on an A100), the two key observations (spatial sparsity of events across the graph giving weak dependencies, and temporal stabilization of some nodes’ memories), the Cascade design (a topology-aware scheduler that packs spatially-independent events into batches; using node memories’ similarities to identify stabilized nodes and break temporal dependencies on them for more temporally-independent batching; and adaptively deciding nodes’ memory update frequencies based on runtime feedback), and the results (a 2.3 times average and up to 5.1 times speedup over prior state-of-the-art TGNN training frameworks without accuracy loss) are all drawn directly from the paper. Background explanations of graph neural networks, dynamic and continuous-time graphs, node memory, batching, and staleness are standard and provided to make the paper’s contribution understandable.

Related papers on Machine Learning Systems

See all 212 →