Augmentation benchmark contract
Read docs/benchmark_execution_contract.md before changing code, launching,
resuming, aggregating, plotting, or interpreting results. It is the source of
truth; this skill is the short operational checklist.
Current production question
The only runnable matrix is RGB dataloader_disk: local ImageNet JPEG →
library-native reader and decoder → recipe → collate → pinned H2D → model-ready
CUDA batch. RGB uses one Standard g2-standard-16 VM with one L4 and the
frozen values in configs/families/rgb.yaml.
One cell is exactly (family, implementation, recipe, seed). One pass records
both primary outcomes:
- end-to-end throughput; and
- peak process GPU memory from pipeline construction through the final CUDA
synchronization.
Never create a memory-only, micro, H2D-only, training, capacity, or smoke
matrix unless the user explicitly adds that research question.
Non-negotiable execution rules
- Normalize never runs on CPU. CPU paths may decode, form a collatable
shape, and apply their CPU recipe. The collated batch moves to CUDA first;
conversion to
float16 and Normalize then happen on GPU. DALI performs its
native GPU normalization in the graph.
- The timed output is CUDA
float16 BCHW B×3×224×224, materialized and
synchronized. Resize is exactly Resize(224) → Normalize → ToTensor.
- Measure recipe execution, not
Compose init or imports. Start the NVML
process-memory monitor before pipeline construction.
- Keep batch, workers, prefetch policy, recipe parameters, dataset ordering,
hardware, and timing boundary identical across rows. Pairwise summaries use
the exact supported recipe intersection; coverage is a separate census.
- The VM runs one implementation sequentially through all of its recipes and
seeds. It writes every valid cell to GCS immediately. Resume validates those
immutable cells and runs only the missing ones. Do not split by duration,
recipe, seed, or arbitrary shard.
- The current runner exposes only RGB. 9ch, video, and volume become runnable
only after each has its own data format, config, recipes, GPU-only Normalize
implementation, and one-batch L4 preflight per implementation-recipe pair:
non-DALI uses one temporary DataLoader worker and DALI uses its native graph.
Before a production launch
- Confirm a clean Git worktree and build the source archive from that commit.
- Validate the RGB config (including archive identity and selection), catalog, lock, and matrix.
- Verify output validation and the same-pass GPU-memory field in the result
schema.
- Use
augbench launch-rgb; it searches eligible zones, protects an active
labelled VM from duplication, and resumes only validated missing cells.
- If the VM exits before a cell, inspect its
runs/<run_id>/logs/ bootstrap
log; do not retry blindly.
- A new run may reclaim only terminal or suspended
augbench VMs; never
delete active VMs or GCS result artifacts.
If a required measurement is absent, repair the execution path and generate the
smallest missing part of the production matrix. Never substitute prose for data.
1---2name: augmentation-benchmark-contract3description: Use before planning, changing, running, resuming, aggregating, plotting, or interpreting RGB, multichannel, video, or volume augmentation benchmarks in this repository.4---56# Augmentation benchmark contract78Read `docs/benchmark_execution_contract.md` before changing code, launching,9resuming, aggregating, plotting, or interpreting results. It is the source of10truth; this skill is the short operational checklist.1112## Current production question1314The only runnable matrix is RGB `dataloader_disk`: local ImageNet JPEG →15library-native reader and decoder → recipe → collate → pinned H2D → model-ready16CUDA batch. RGB uses one Standard `g2-standard-16` VM with one L4 and the17frozen values in `configs/families/rgb.yaml`.1819One cell is exactly `(family, implementation, recipe, seed)`. One pass records20both primary outcomes:21221. end-to-end throughput; and232. peak process GPU memory from pipeline construction through the final CUDA24 synchronization.2526Never create a memory-only, micro, H2D-only, training, capacity, or smoke27matrix unless the user explicitly adds that research question.2829## Non-negotiable execution rules3031- **Normalize never runs on CPU.** CPU paths may decode, form a collatable32 shape, and apply their CPU recipe. The collated batch moves to CUDA first;33 conversion to `float16` and Normalize then happen on GPU. DALI performs its34 native GPU normalization in the graph.35- The timed output is CUDA `float16` BCHW `B×3×224×224`, materialized and36 synchronized. `Resize` is exactly `Resize(224) → Normalize → ToTensor`.37- Measure recipe execution, not `Compose` init or imports. Start the NVML38 process-memory monitor before pipeline construction.39- Keep batch, workers, prefetch policy, recipe parameters, dataset ordering,40 hardware, and timing boundary identical across rows. Pairwise summaries use41 the exact supported recipe intersection; coverage is a separate census.42- The VM runs one implementation sequentially through all of its recipes and43 seeds. It writes every valid cell to GCS immediately. Resume validates those44 immutable cells and runs only the missing ones. Do not split by duration,45 recipe, seed, or arbitrary shard.46- The current runner exposes only RGB. 9ch, video, and volume become runnable47 only after each has its own data format, config, recipes, GPU-only Normalize48 implementation, and one-batch L4 preflight per implementation-recipe pair:49 non-DALI uses one temporary DataLoader worker and DALI uses its native graph.5051## Before a production launch52531. Confirm a clean Git worktree and build the source archive from that commit.542. Validate the RGB config (including archive identity and selection), catalog, lock, and matrix.553. Verify output validation and the same-pass GPU-memory field in the result56 schema.574. Use `augbench launch-rgb`; it searches eligible zones, protects an active58 labelled VM from duplication, and resumes only validated missing cells.595. If the VM exits before a cell, inspect its `runs/<run_id>/logs/` bootstrap60 log; do not retry blindly.616. A new run may reclaim only terminal or suspended `augbench` VMs; never62 delete active VMs or GCS result artifacts.6364If a required measurement is absent, repair the execution path and generate the65smallest missing part of the production matrix. Never substitute prose for data.