Skip to content

Commit f28b02d

Browse files
committed
Single source for images in content folders
1 parent 5b0accc commit f28b02d

14 files changed

Lines changed: 11 additions & 11 deletions

content/dynamic_shapes/2025-07-08-guard-free-dynamic-shapes.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ tags: [dynamic_shapes, unbacked, dde, guard_free, export, torch.compile]
1616
> achieving a **55% reduction** in framework DDEs and saving weeks of
1717
> engineering time on complex model exports.
1818
19-
![DDE reduction progress](/devlogs/images/2025-07-08-dde-progress.jpg)
19+
![DDE reduction progress](./images/2025-07-08-dde-progress.jpg)
2020

2121
## Why are guard-free dynamic shape graphs necessary?
2222

content/dynamic_shapes/2026-01-20-backed-to-unbacked.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ date: 2026-01-20
55
tags: [dynamic_shapes, unbacked, backed, torch.compile, frontier]
66
---
77

8-
![Hint stamp](/devlogs/images/2026-01-20-backed-unbacked-header.jpg)
8+
![Hint stamp](./images/2026-01-20-backed-unbacked-header.jpg)
99

1010
> **TL;DR** – We expect unbacked dynamic shapes to become the dominant
1111
> shape mechanism for Frontier-style workloads due to their better

content/dynamic_shapes/2026-02-27-compile-time-unbacked-export.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ date: 2026-02-27
55
tags: [dynamic_shapes, unbacked, torch.export, compile_time, symbolic_shapes]
66
---
77

8-
![Compile time reduction](/devlogs/images/2026-02-27-compile-time-header.jpg)
8+
![Compile time reduction](./images/2026-02-27-compile-time-header.jpg)
99

1010
> **TL;DR** – A regression report revealed that
1111
> exporting a model with many unbacked (data-dependent) symbols took
@@ -20,7 +20,7 @@ A report indicated a severe slowdown when exporting a model that heavily
2020
uses data-dependent operations (i.e., unbacked symbolic shapes). Profiling
2121
showed that most of the time was spent inside the symbolic shape system.
2222

23-
![Profiling hotspot: SymNode.expr takes significant trace time](/devlogs/images/2026-02-27-compile-time-fig1.png)
23+
![Profiling hotspot: SymNode.expr takes significant trace time](./images/2026-02-27-compile-time-fig1.png)
2424

2525
At the time of investigation, `torch.export` did not support profiling
2626
out of the box, which made root-cause analysis difficult. After
@@ -77,7 +77,7 @@ became a significant cost.
7777
A per-SymNode cache was added that is invalidated only when replacements
7878
change (tracked via a version counter). **9% improvement.**
7979

80-
![Profiling hotspot: SymNode.expr takes significant trace time](/devlogs/images/2026-02-27-compile-time-fig1.png)
80+
![Profiling hotspot: SymNode.expr takes significant trace time](./images/2026-02-27-compile-time-fig1.png)
8181

8282

8383
### 4. Optimize `_smart_symbol_sort` hint access ([PR #174655](https://github.com/pytorch/pytorch/pull/174655))
@@ -96,7 +96,7 @@ side is an unbacked symbol and the other is a constant triggered expensive
9696
sympy evaluation. Since unbacked symbols have no assumptions, there's
9797
nothing to simplify. Using `evaluate=False` skips this unnecessary work.
9898
**15% improvement.**
99-
![cost of sympy_eq](/devlogs/images/2026-02-27-compile-time-fig2.png)
99+
![cost of sympy_eq](./images/2026-02-27-compile-time-fig2.png)
100100

101101
### 6. Avoid redundant `compute_hint()` calls during expression construction ([PR #174664](https://github.com/pytorch/pytorch/pull/174664))
102102

@@ -105,7 +105,7 @@ When `SymNode` operations produce results with unavailable hints, passing
105105
for no reason — it will fail. A sentinel value now explicitly indicates
106106
"hint unavailable, don't recompute." **7% improvement.**
107107

108-
![compute hint overhead](/devlogs/images/2026-02-27-compile-time-fig3.png)
108+
![compute hint overhead](./images/2026-02-27-compile-time-fig3.png)
109109

110110
### 7. Skip static eval for unbounded unbacked symbols ([PR #174652](https://github.com/pytorch/pytorch/pull/174652))
111111

@@ -121,7 +121,7 @@ range `[0, ∞]` will be fast due to the earlier optimization.
121121
performing redundant computations. Using `_from_args` directly with
122122
`is_commutative=True` saves **5% improvement.**
123123

124-
![Cumulative improvement: 264s → 87s](/devlogs/images/2026-02-27-compile-time-fig4.png)
124+
![Cumulative improvement: 264s → 87s](./images/2026-02-27-compile-time-fig4.png)
125125

126126
## Process takeaways
127127

content/dynamic_shapes/2026-03-25-unbacked-perf-parity.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ date: 2026-03-25
55
tags: [dynamic_shapes, unbacked, performance, vllm, torchbench, inductor]
66
---
77

8-
![Backed vs unbacked perf parity](/devlogs/images/2026-03-25-perf-parity-header.jpg)
8+
![Backed vs unbacked perf parity](./images/2026-03-25-perf-parity-header.jpg)
99

1010
> **TL;DR** – Unbacked dynamic shapes had 2x–20% slowdowns on TorchBench
1111
> and ~30% regressions on vLLM. We fixed the root causes — now unbacked

hugo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ title = 'PyTorch DevLog'
66
[params]
77
description = 'Developer technical notes for PyTorch'
88

9-
summaryLength = 30
9+
summaryLength = 60
1010

1111
[markup]
1212
[markup.goldmark]

static/css/style.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,7 @@ a.tag:hover {
409409
font-size: 0.85rem;
410410
color: var(--color-text-muted);
411411
margin-bottom: 0.5rem;
412-
max-height: 12rem;
412+
max-height: 18rem;
413413
overflow: hidden;
414414
}
415415

-121 KB
Binary file not shown.
-80.9 KB
Binary file not shown.
-13.1 KB
Binary file not shown.
-25.8 KB
Binary file not shown.

0 commit comments

Comments
 (0)