Two-phase DP scheduler converts heterogeneous volunteer GPUs into a practical LLM inference platform: Phase 1 allocates model layers region-locally via DP + water-filling; Phase 2 selects per-request pipeline chains via DAG shortest-path over live DHT metrics. Up to 3.6× throughput over HexGen on 7-GPU decentralized testbed.
Centralized LLM serving requires homogeneous GPU clusters with high-bandwidth interconnects — prohibitively expensive for many organizations. Decentralized volunteer GPU pools offer an alternative, but introduce three compounding challenges:
Prior work (Petals) demonstrated feasibility of volunteer-driven LLM inference but used swarm-parallel coordination with greedy heuristics and no global optimization, failing to account for the joint effect of device and network heterogeneity.
Core idea: decompose the NP-hard joint placement-and-routing problem into two tractable DP subproblems that are structurally coupled — Phase 1's output constrains Phase 2's search space.
Phase 1 — Model Allocation (offline, per-configuration):
Phase 2 — GPU Pipeline Chain Selection (online, per-request):
核心技术壁垒: the structural coupling between phases — Phase 1's region-bounded contiguous allocation produces a compact DAG (small $\bar{R}$) that makes Phase 2's per-request DP tractable in a single pass. Without this coupling, the joint problem is NP-hard and no polynomial-time per-request routing exists.

Paper's Figure 1, verbatim (caption: "Example of the first phase model allocation among heterogeneous GPU types across different geographic regions").
Four geographic regions each contain multiple pipeline replicas composed of three different GPU types. Each GPU hosts a contiguous slice of transformer layers proportional to its memory capacity. Region 2 highlights one complete pipeline spanning two stages across two GPUs. The region-based heuristic ensures no pipeline crosses regional boundaries, eliminating high-latency cross-region activation transfers on the critical path.

Paper's Figure 2, verbatim (caption: "Example of the second phase GPU pipeline chain selection among GPUs (pipeline stages)").
Three clients each receive a distinct GPU chain (colored arrows) traversing Front, Middle, and Back layer groups. Each chain may mix stages from different pipeline replicas — one client takes a path through certain GPUs while another takes a different path through the same layer groups. This cross-replica stitching enables load balancing: the DP selects lowest-latency paths through the DAG of available stages, naturally deflecting traffic from loaded GPUs toward idle ones.
System scope: Parallax covers both prefill and decode. Parallelism axes: request-level data parallelism (multiple replicas) + pipeline parallelism (layer partitioning within replicas). No tensor parallelism — activation communication is inter-stage only (low volume). Deployment mode: multi-node decentralized over public WAN.
| Symbol | Meaning | Domain |
|---|---|---|
| $L$ | Total transformer layers in model | $\mathbb{N}$ |
| $N$ | Number of available GPUs | $\mathbb{N}$ |
| $g_i$ | GPU $i$ in pool $\mathbf{G} = \{g_1, \dots, g_N\}$ | — |
| $c_i$ | Max layer capacity of GPU $g_i$ (VRAM-constrained) | $\mathbb{N}$ |
| $k$ | Number of pipeline replications | $\{1, \dots, k_{\max}\}$ |
| $s^{\star}(k)$ | Minimum total stages for $k$ replications | $\mathbb{N}$ |
| $r_{\mathrm{RTT}}$ | Average inter-stage hop latency (profiled) | $\mathbb{R}^+$ (s) |
| $T_{\mathrm{comp}}$ | Average per-replication compute time | $\mathbb{R}^+$ (s) |
| $F_i$ | Compute capacity (FLOPs) of GPU $g_i$ | $\mathbb{R}^+$ |
| $\lambda$ | Water-filling scaling parameter | $\mathbb{R}^+$ |
| $\tau_{g_i}$ | Profiled processing latency on GPU $g_i$ | $\mathbb{R}^+$ (s) |
| $\rho_{g_i, g_{i'}}$ | One-way RTT between GPU pair $(g_i, g_{i'})$ | $\mathbb{R}^+$ (s) |
| $\bar{R}$ | Average replicated copies per layer in DAG | $\mathbb{R}^+$ |
| $\alpha$ | Load metric weight (memory vs. compute) | $[0, 1]$, default 0.5 |
Eq 1 — Maximum replication bound:
$$k_{\max} = \min\!\big(N,\; \lfloor \textstyle\sum_{i=1}^{N} c_i / L \rfloor\big)$$
Upper-bounds replications by the lesser of GPU count and aggregate capacity divided by model size. When total capacity barely exceeds $L$, only one replica fits regardless of GPU count.
Eq 2 — Phase 1 scoring function:
$$Z(k) = k - \frac{s^{\star}(k)/k \cdot r_{\mathrm{RTT}}}{T_{\mathrm{comp}}}$$
Effective throughput: $k$ replications minus the communication tax per replica. The ratio $r_{\mathrm{RTT}} / T_{\mathrm{comp}}$ captures how expensive each additional pipeline stage is relative to compute. In decentralized settings this ratio is large (communication-dominated), so minimizing $s^{\star}(k)/k$ (stages per replica) is critical.
Eq 3 — Phase 2 DP recurrence:
$$\mathrm{dp_2}(\ell{+}1, g_{i'}) = \min\!\big(\mathrm{dp_2}(\ell{+}1, g_{i'}),\; \mathrm{dp_2}(\ell, g_i) + \rho_{g_i, g_{i'}} + \tau_{g_{i'}}\big)$$
Standard shortest-path relaxation on the layer-indexed DAG. Node cost $\tau$ captures current compute load (updated via DHT), edge cost $\rho$ captures network overhead. The min across all predecessors finds the chain with lowest cumulative latency.
Eq 4 — Water-filling fractional allocation:
$$x_i = \min(c_i,\; \lambda F_i)$$
Allocates layers proportional to compute capacity $F_i$, capped by memory capacity $c_i$. The scaling parameter $\lambda$ (found via binary search) is the "water level" — GPUs with higher $F_i$ receive more layers until they hit their capacity ceiling. Rounded to integers via largest-remainder (Hamilton) method.
Eq 5 — Dynamic membership load metric:
$$\mathrm{Load} = \alpha \cdot \frac{\text{current\_kv\_size}}{\text{total\_cluster\_memory}} + (1 - \alpha) \cdot \frac{\text{current\_compute}}{\text{total\_cluster\_flops}}$$
Composite utilization metric balancing memory pressure (KV cache size) and compute pressure (FLOPs). Global rebalancing is triggered when the coefficient of variation of per-layer loads exceeds a configurable threshold, or when no pipeline covers all $L$ layers.

Paper's Figure 3, verbatim (caption: "End-to-end latency comparison between Parallax and HexGen across different models, traces, and request arrival rates").
A 4×3 grid of latency-percentile curves spanning two traces (ShareGPT, WildGPT), two model sizes (32B, 16B), and three request arrival rates (4, 8, 32). Parallax (blue) consistently runs below HexGen (red) across all percentiles. The gap widens at tail latencies (p97–p100) and higher request rates — the regime where communication bottlenecks and load imbalance compound. Largest improvement: WildGPT 32B at rate=32, where Parallax p99 stays under 100 s while HexGen exceeds 195 s.

Paper's Figure 4, verbatim (caption: "End-to-end throughput comparison between Parallax and HexGen across different models, traces, and request arrival rates").
Throughput improvement percentages annotated directly on bars. The 32B model (top row) shows dramatic gains: 264% on WildGPT rate=32, 218% on WildGPT rate=8, 100% on ShareGPT rate=32. The 16B FP8 model (bottom row) shows smaller gains (6%–61%) because quantization halves model size, reducing per-stage communication volume and diminishing the scheduling advantage. This reveals Parallax's sweet spot: communication-dominated regimes where scheduling decisions have the largest impact.

Paper's Figure 5, verbatim (caption: "Phase-1 and phase-2 algorithm running time when scaling from smaller clusters (e.g., 4 GPUs) to larger clusters (e.g., 256 GPUs)").
Phase 1 (left, one-time): 0.10 ms at 4 GPUs → 8.55 ms at 256 GPUs. Sub-10 ms even at scale enables rapid reallocation on membership changes. Phase 2 (right, per-request): 0.01 ms at 4 GPUs → 6.63 ms at 256 GPUs. Growth matches $\mathcal{O}(L\bar{R}^2)$: as cluster grows, $\bar{R}$ increases, expanding the DAG. Both overheads remain negligible relative to end-to-end inference latencies (tens to hundreds of seconds).
| Workload regime | Parallax | HexGen | Why |
|---|---|---|---|
| 32B BF16, high rate (32 req/s) | 3.6× throughput, ~2.6× p99 | Saturated | Communication-dominated; region-bounded allocation eliminates cross-region stages |
| 32B BF16, low rate (4 req/s) | ~1.4× p99 | Adequate | Less contention; scheduling helps but gap is smaller |
| 16B FP8, any rate | 6%–61% gain | Competitive | Halved model size → less communication pressure → smaller scheduling advantage |
| WildGPT vs. ShareGPT (same config) | Larger gains on WildGPT | — | Longer, more variable sequences → more load imbalance for static partitioning |
Baseline coverage gaps: only HexGen is experimentally compared. Helix (max-flow on heterogeneous GPUs, ASPLOS 2025) is cited but not benchmarked — notable given direct relevance. Petals is discussed qualitatively but also absent from experiments.
Scheduling design notes:
| Step | Claim | Evidence | Depends on |
|---|---|---|---|
| 1 | Decentralized GPU pools suffer from compute, memory, and network heterogeneity that makes naive PP impractical | §1 qualitative analysis: cross-region latency down to hundreds of MB/s; even partitioning creates stragglers | — |
| 2 | Joint placement-and-routing is NP-hard under heterogeneity; decomposition into two DP subproblems is tractable | Claimed without proof (§3.1); tractability shown empirically via sub-10 ms overhead at 256 GPUs (Fig 5) | Step 1 |
| 3 | Phase 1 DP with region-based + latency-dominant heuristics produces compact, region-local allocations minimizing pipeline stages | Algorithm design (§3.2); region constraint eliminates cross-region edges; $Z(k)$ scoring penalizes excess stages | Step 2 |
| 4 | Phase 1's contiguous-layer, region-bounded output constrains Phase 2's DAG to small $\bar{R}$, enabling single-pass per-request chain selection in $\mathcal{O}(L\bar{R}^2)$ | Complexity analysis (§3.3); confirmed empirically: 0.01–6.63 ms/req across 4–256 GPUs (Fig 5) | Step 3 |
| 5 | Phase 2 DAG DP with live DHT metrics ($\tau$, $\rho$) naturally load-balances by deflecting requests from loaded GPUs | DHT design (§3.3): immediate $\tau$ updates on chain selection/release; shortest-path always picks currently-lowest-latency chain | Step 4 |
| 6 | Combined two-phase scheduling achieves up to 3.6× throughput and 3.2× latency improvement over HexGen | End-to-end evaluation on 7 GPUs with ShareGPT/WildGPT (§4.2, Figs 3–4); gains largest in communication-dominated regimes | Steps 3–5 |
代码仓库: https://github.com/GradientHQ/parallax
| Component | Expected module | Paper §§ |
|---|---|---|
| Phase 1 DP + water-filling | scheduler / allocator | §3.2 |
| Phase 2 DAG DP chain selection | scheduler / router | §3.3 |
| DHT performance registry | coordination layer | §3.3 |
| Dynamic membership handler | cluster manager | §3.4 |
| Pipeline execution engine | inference runtime | §2 |
file:line 级代码分析未完成 — 仓库已公开但细粒度映射待后续补充。