# byronliang8/diffusion-geometry architecture

> Architecture diagram of the GitHub repository byronliang8/diffusion-geometry, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/byronliang8/diffusion-geometry
- Repository: https://github.com/byronliang8/diffusion-geometry

## Overview

This research tool evaluates diffusion-model instability by comparing prompt-conditioned generations, estimating local geometry from finite-difference perturbations, and saving diagnostic maps or per-sample metrics. The main workflow is documented for paired in-distribution and out-of-distribution prompts; the sampled code shows SD3.5 prompt encoding, sampling, low-dimensional Jacobian estimation, and metric computation. Heatmap rendering and result writing are documented, though their complete implementations were not sampled. Both scripts support distributed execution; the graph focuses on product behavior, not execution infrastructure.

Main entry points: [`sd35/based_stepwise_sd.py`](https://github.com/byronliang8/diffusion-geometry/blob/main/sd35/based_stepwise_sd.py) (SD3.5 analyzer), [`Geometry_Diffusion.py`](https://github.com/byronliang8/diffusion-geometry/blob/main/Geometry_Diffusion.py) (Heatmap workflow)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_analysis["Geometry analysis"]
  node_prompt_pairs["ID/OOD prompts"]
  node_heatmap_workflow["Heatmap workflow"]
  node_stepwise_workflow["Stepwise analysis"]
  node_fd_jacobian["Finite differences"]
  node_local_geometry["LS and LC"]
  node_phfe_axis["PHFE and axis"]
  node_map_geometry["Map geometry"]
end

subgraph group_generation["Diffusion generation"]
  node_sd35_analyzer["SD3.5 analyzer"]
  node_prompt_encoding["Prompt encoding"]
  node_diffusion_sampling["Latent sampling"]
  node_sd3_pipeline["SD3.5 pipeline"]
end

subgraph group_results["Diagnostics and results"]
  node_visualization["Heatmap rendering"]
  node_sample_image["Sample image"]
  node_map_artifacts["Map outputs"]
  node_metric_artifacts["Metric reports"]
end

node_researcher(("Researcher"))

node_researcher -->|"provides prompts"| node_prompt_pairs
node_prompt_pairs -->|"evaluates prompts"| node_heatmap_workflow
node_prompt_pairs -->|"evaluates prompts"| node_stepwise_workflow
node_stepwise_workflow -->|"runs analysis"| node_sd35_analyzer
node_sd35_analyzer -->|"encodes prompt"| node_prompt_encoding
node_sd35_analyzer -->|"samples latents"| node_diffusion_sampling
node_prompt_encoding -->|"encodes with"| node_sd3_pipeline
node_diffusion_sampling -->|"denoises with"| node_sd3_pipeline
node_sd35_analyzer -->|"estimates Jacobian"| node_fd_jacobian
node_fd_jacobian -->|"perturbs and samples"| node_diffusion_sampling
node_sd35_analyzer -->|"computes metrics"| node_local_geometry
node_sd35_analyzer -->|"computes metrics"| node_phfe_axis
node_local_geometry -->|"uses derivatives"| node_fd_jacobian
node_phfe_axis -->|"samples directions"| node_diffusion_sampling
node_stepwise_workflow -->|"returns image"| node_sample_image
node_stepwise_workflow -->|"writes reports"| node_metric_artifacts
node_heatmap_workflow -->|"computes maps"| node_map_geometry
node_map_geometry -->|"samples perturbations"| node_diffusion_sampling
node_heatmap_workflow -->|"renders maps"| node_visualization
node_heatmap_workflow -->|"saves maps"| node_map_artifacts

click node_heatmap_workflow "https://github.com/byronliang8/diffusion-geometry/blob/main/Geometry_Diffusion.py"
click node_stepwise_workflow "https://github.com/byronliang8/diffusion-geometry/blob/main/sd35/based_stepwise_sd.py"
click node_sd35_analyzer "https://github.com/byronliang8/diffusion-geometry/blob/main/sd35/based_stepwise_sd.py"
click node_prompt_encoding "https://github.com/byronliang8/diffusion-geometry/blob/main/sd35/based_stepwise_sd.py"
click node_diffusion_sampling "https://github.com/byronliang8/diffusion-geometry/blob/main/sd35/based_stepwise_sd.py"
click node_fd_jacobian "https://github.com/byronliang8/diffusion-geometry/blob/main/sd35/based_stepwise_sd.py"
click node_local_geometry "https://github.com/byronliang8/diffusion-geometry/blob/main/sd35/based_stepwise_sd.py"
click node_phfe_axis "https://github.com/byronliang8/diffusion-geometry/blob/main/sd35/based_stepwise_sd.py"
click node_map_geometry "https://github.com/byronliang8/diffusion-geometry/blob/main/Geometry_Diffusion.py"
click node_visualization "https://github.com/byronliang8/diffusion-geometry/blob/main/Geometry_Diffusion.py"
click node_sample_image "https://github.com/byronliang8/diffusion-geometry/blob/main/sd35/based_stepwise_sd.py"
click node_map_artifacts "https://github.com/byronliang8/diffusion-geometry/blob/main/Geometry_Diffusion.py"
click node_metric_artifacts "https://github.com/byronliang8/diffusion-geometry/blob/main/sd35/based_stepwise_sd.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_prompt_pairs,node_heatmap_workflow,node_stepwise_workflow,node_fd_jacobian,node_local_geometry,node_phfe_axis,node_map_geometry toneBlue
class node_sd35_analyzer,node_prompt_encoding,node_diffusion_sampling,node_sd3_pipeline toneAmber
class node_visualization,node_sample_image,node_map_artifacts,node_metric_artifacts toneMint
class node_researcher toneIndigo
```

## Components

### Geometry analysis

- **ID/OOD prompts**
- [Heatmap workflow](https://github.com/byronliang8/diffusion-geometry/blob/main/Geometry_Diffusion.py): `Geometry_Diffusion.py`
- [Stepwise analysis](https://github.com/byronliang8/diffusion-geometry/blob/main/sd35/based_stepwise_sd.py): `sd35/based_stepwise_sd.py`
- [Finite differences](https://github.com/byronliang8/diffusion-geometry/blob/main/sd35/based_stepwise_sd.py): `sd35/based_stepwise_sd.py`
- [LS and LC](https://github.com/byronliang8/diffusion-geometry/blob/main/sd35/based_stepwise_sd.py): `sd35/based_stepwise_sd.py`
- [PHFE and axis](https://github.com/byronliang8/diffusion-geometry/blob/main/sd35/based_stepwise_sd.py): `sd35/based_stepwise_sd.py`
- [Map geometry](https://github.com/byronliang8/diffusion-geometry/blob/main/Geometry_Diffusion.py): `Geometry_Diffusion.py`

### Diffusion generation

- [SD3.5 analyzer](https://github.com/byronliang8/diffusion-geometry/blob/main/sd35/based_stepwise_sd.py): `sd35/based_stepwise_sd.py`
- [Prompt encoding](https://github.com/byronliang8/diffusion-geometry/blob/main/sd35/based_stepwise_sd.py): `sd35/based_stepwise_sd.py`
- [Latent sampling](https://github.com/byronliang8/diffusion-geometry/blob/main/sd35/based_stepwise_sd.py): `sd35/based_stepwise_sd.py`
- **SD3.5 pipeline**

### Diagnostics and results

- [Heatmap rendering](https://github.com/byronliang8/diffusion-geometry/blob/main/Geometry_Diffusion.py): `Geometry_Diffusion.py`
- [Sample image](https://github.com/byronliang8/diffusion-geometry/blob/main/sd35/based_stepwise_sd.py): `sd35/based_stepwise_sd.py`
- [Map outputs](https://github.com/byronliang8/diffusion-geometry/blob/main/Geometry_Diffusion.py): `Geometry_Diffusion.py`
- [Metric reports](https://github.com/byronliang8/diffusion-geometry/blob/main/sd35/based_stepwise_sd.py): `sd35/based_stepwise_sd.py`

### Other components

- **Researcher**

## Connections

- Researcher → ID/OOD prompts: provides prompts
- ID/OOD prompts → Heatmap workflow: evaluates prompts
- ID/OOD prompts → Stepwise analysis: evaluates prompts
- Stepwise analysis → SD3.5 analyzer: runs analysis
- SD3.5 analyzer → Prompt encoding: encodes prompt
- SD3.5 analyzer → Latent sampling: samples latents
- Prompt encoding → SD3.5 pipeline: encodes with
- Latent sampling → SD3.5 pipeline: denoises with
- SD3.5 analyzer → Finite differences: estimates Jacobian
- Finite differences → Latent sampling: perturbs and samples
- SD3.5 analyzer → LS and LC: computes metrics
- SD3.5 analyzer → PHFE and axis: computes metrics
- LS and LC → Finite differences: uses derivatives
- PHFE and axis → Latent sampling: samples directions
- Stepwise analysis → Sample image: returns image
- Stepwise analysis → Metric reports: writes reports
- Heatmap workflow → Map geometry: computes maps
- Map geometry → Latent sampling: samples perturbations
- Heatmap workflow → Heatmap rendering: renders maps
- Heatmap workflow → Map outputs: saves maps
