delta-v / static /technical-note.html
KrishMalik's picture
Deploy main 49c5f9f: site-wide loading bars (PR 104)
22cfde9 verified
Raw History Blame Contribute Delete
10.6 kB
<!doctype html>
<html lang="en" data-theme="light">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<title>Delta-V: Technical note, prototype 3</title>
<link rel="icon" href="logo.svg" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=IBM+Plex+Sans:wght@400;500;600;700&display=swap" />
<link rel="stylesheet" href="app.css?v=redesign-33" />
</head>
<body>
<div id="site-loading" role="progressbar" aria-label="Loading" hidden></div>
<script src="loading.js?v=redesign-33"></script>
<main class="technical-page">
<a href="/#about">← Back to Delta-V</a>
<p class="eyebrow">TECHNICAL NOTE · 11 SEPTEMBER 2026 · PROTOTYPE 3</p>
<h1>What the original model demo tests</h1>
<p>
Delta-V is a system for learned engineering surrogates built one
physical-domain lane at a time; fluid dynamics is lane 1 and the only
lane served today. Within that lane it compares one neural next-step
prediction with the recorded next snapshot, and offers a separate
table-based estimator of overall fluid outcomes. The six original
examples show training-data behavior.
Three additional official-test clips (rollout-test- IDs) provide f0–f10
references for autoregressive playback. A separate six-window
official-test check is reported below; broad generalization and a
learned-adapter advantage are not established.
</p>
<h2>Model and artifacts</h2>
<p>
The original demo uses the epoch 59 model from
<a
href="https://huggingface.co/datasets/KrishMalik/deltav-fluid/tree/7bf3f989dcfab6d0f43ea482ab8f26ddbdec3752"
>the published checkpoint revision</a
>. The checkpoint was trained across turbulent radiative layer 2D,
Rayleigh–Bénard convection and shear flow, with turbulent radiative
layer as the primary set and the other two as joint co-training sets.
Training used bounded slices of The Well at prototype budget, not the
full trajectory sets; this training scale, rather than the
architecture, is the main limit on current accuracy and rollout
horizon. The FNO uses 32 × 32 spectral modes and 128 hidden channels.
The live epoch is shown on the Model page. Runtime artifact downloads
are pinned to the linked revision, so the served weights cannot change
under the deployment without a code change.
</p>
<h2>Inputs, outputs and preprocessing</h2>
<p>
Four consecutive snapshots are mapped to density/buoyancy/tracer (the
shared scalar channel), pressure, horizontal velocity and vertical
velocity. Per-system means and standard deviations normalize each
channel as (x − mean)/(std + 10⁻⁶). Bilinear resampling with
align_corners=False produces 256 × 256 fields. The model receives
[batch,16,256,256] and produces [batch,4,256,256]. Outputs are
denormalized using the same statistics.
</p>
<p>
These are fixed data mappings, not learned adapters. Native grids are
128 × 384 for radiative cooling, 512 × 128 for convection and 256 × 512
for shear flow. Displays preserve each physical domain’s aspect ratio
and use simulation code units.
</p>
<h2>Measured quantities</h2>
<ul>
<li>
<strong>Relative L2:</strong> ‖prediction − reference‖₂ /
‖reference‖₂. Undefined for a zero-norm reference.
</li>
<li>
<strong>RMSE:</strong> square root of mean squared error, in the
field’s code units.
</li>
<li>
<strong>SSIM:</strong> scikit-image structural_similarity with the
reference’s maximum minus minimum as data_range and library defaults
(7 × 7 window). Undefined for constant reference fields.
</li>
</ul>
<p>
All scores use floating-point fields before quantization and a reference
resampled to the model grid. The self-imposed v1 policy is strictly
relative L2 &lt;15% for scalar and pressure; velocities have no
quantitative target. SSIM is an image-structure measure and does not
establish physical conservation. See the
<a href="/#about">24-row measured results table</a> and
<a href="/quality">machine-readable scores</a>.
</p>
<h2>Data provenance and time</h2>
<p>
Six bundled windows, two per served system, contain four input snapshots
and one next-step reference. They come from training slices.
The sample catalogue records window IDs, dial values, start
indices, times and shapes. These bundled files lack complete original
trajectory identifiers and are not used as the new test set. Moving a
time control shows recorded snapshots; it is not a model rollout. Moving
parameter sliders estimates aggregate outcomes from tables and does not
change the field’s initial condition.
</p>
<h2>Transport, caching and timing</h2>
<p>
Predictions are computed once during startup and cached. The display
endpoints send lossless grayscale PNG atlases of the same quantized
8-bit values previously transported in NumPy arrays; the browser
reconstructs the channel arrays before applying the established color
maps. Full-precision quality scores accompany the images. Binary
<code>/samples/{id}</code> and <code>/samples/{id}/predict</code> remain
available. <code>POST /predict/field</code> returns floating-point
predictions for correctly formatted inputs.
</p>
<p>
The Settings page separates server startup, browser readiness, first
comparison including sample load, and repeat cache retrieval. Original
model computation is labeled separately. Timing varies by network and
hardware; a 200 ms network response is not guaranteed.
</p>
<h2 id="evaluation">Held-out evaluation and fourth-system protocol</h2>
<p>
<strong>Notebook audit:</strong> the supplied training export reads only
the official training split. Its joint-model validation uses
a seeded random split of sliding windows, so neighboring windows from
one trajectory can appear in both sets. Normalization is estimated
before that split. The old validation loss is not trajectory-held-out.
New tooling assigns whole trajectories before training and rejects
overlap and validation/test data in normalization.
</p>
<p>
<strong>Small official-test check:</strong> six predeclared windows, two
source files per system, from the official test split. Each uses trajectory 0,
four input snapshots and the fifth as reference. The selected starts are
40 (radiative), 100 (convection), and 60 (shear). No training or tuning
used these results. The checkpoint-to-notebook lineage is
owner-supplied, not cryptographically established. This limited check
does not replace a new fixed train/validation/test training run.
<a href="heldout-results.json"
>All scores, source revisions, identifiers and hashes</a
>
are published, including failed targets. See <a href="/#about">About</a>
for the readable table.
</p>
<p>
The evaluation tooling groups all windows from the same source
trajectory, rejects overlap between train/validation/test, verifies
local file hashes, and requires explicit checkpoint-exposure records
before accepting held-out evaluation. Hold the test set fixed, select
checkpoints using validation only, and report all four channels by
trajectory and system. Test results must not guide tuning.
</p>
<p>
The fourth research system is <code>euler_multi_quadrants_openBC</code>.
Its source includes density, energy, pressure and momentum components;
the fixed preprocessing derives velocities from momentum/density.
Compare scratch training, full fine-tuning and a frozen backbone with
learned 1 × 1 input/output projections. Use nested training fractions
1%, 5%, 10%, 25%, 50%, 100%, identical splits and validation budgets,
and report trainable parameters, wall time and per-channel errors. The
supplied notebook excludes Euler from joint training, but includes a
scratch-versus-full-fine-tuning experiment on fresh models. The owner
subsequently supplied the converged 30-epoch two-arm result: losses
0.0089 versus 0.0107, with a reported 16.3% lower final training loss
for the pretrained start. These training measurements are not live API
results. On real OpenFOAM data (October 2026) a pretrained start gave no
help over training from scratch, so pretraining is on the roadmap.
Only one gamma value was represented instead of four intended, due to a
selection bug. No fine-tuned checkpoints were saved. See the
<a href="/#probe">Generalization probe</a> for provenance and
limitations. The new learned-adapter arm has 292 trainable real
parameters; the three-arm runner is implemented but has not been run.
Target normalization is fitted only on each training fraction,
identically for all arms. Complete exposure records remain required for
that experiment.
</p>
<h2>Inspect the results</h2>
<p>Open the <a href="/#simulator">original model demo</a> to select a sample and compare its prediction with the recorded solver field. For the study workflow, visit <a href="/#evidence">Research</a>.</p>
<h2>Anonymous usage counts</h2>
<p>
Event tracking stores only aggregate counts of fixed event names, with
no user/session identifiers or arrays; it respects browser privacy
signals and the Settings opt-out. Counts are public, can include
automated traffic, and reset on restart. They cannot measure unique
users or a person-level funnel. The host may independently retain
access logs.
</p>
</main>
</body>
</html>