{
 "about": "Every VRAM measurement from the program. The cross_gpu section adds one-step probes on an AMD RX 7900 XTX (24 GB) and a second NVIDIA card. Training GPU: one 8 GB NVIDIA consumer card (an RTX 3070 Ti by today's nvidia-smi; torch reports 7.65 GiB total capacity). 'mode' is probe (one forward+backward on the single longest example, no optimizer step) or real (a full Trainer run; peak = torch.cuda.max_memory_allocated at the end). All training configs are 4-bit nf4 QLoRA on unsloth/gemma-3-4b-it with the recipe.json memory fixes unless noted.",
 "gpu": {
  "model": "NVIDIA GeForce RTX 3070 Ti",
  "total_mib": 8192,
  "usable_gib_torch": 7.65,
  "second_card": "NVIDIA GeForce RTX 3060 Ti, 8192 MiB",
  "driver": "580.178.04",
  "inferred": true,
  "note": "Card names read on 2026-10-15 and mapped through CUDA_DEVICE_ORDER=PCI_BUS_ID, CUDA_VISIBLE_DEVICES=1 as set in every training script (the probe scripts document the same pin). This holds as long as neither card changed PCIe slot since September; the owner confirms both cards were in the box then. The 7.65 GiB figure is printed in every OOM message.",
  "source": "nvidia-smi; train_router.py:33-34; probe_rank128.log",
  "measured_on": "2026-10-15"
 },
 "measurements": [
  {
   "id": "e2b-contended-load",
   "model": "unsloth/gemma-4-E2B-it",
   "mode": "load",
   "config": "Unsloth load_in_4bit, ~3.6 GB free (live models resident)",
   "result": "loaded, then forward crashed (embedding offloaded to CPU)",
   "source": "LOCAL_LLM_PHASE2_ROADMAP.md:354-361",
   "measured_on": "2026-09-13"
  },
  {
   "id": "e2b-two-gpu-split",
   "model": "unsloth/gemma-4-E2B-it",
   "mode": "load",
   "config": "Unsloth 4-bit, both GPUs visible",
   "peak": "4.38 GB on GPU0 + 3.17 GB on GPU1, zero CPU offload",
   "result": "forward crashed on a cross-device tensor in transformers' Gemma 4 forward",
   "source": "LOCAL_LLM_PHASE2_ROADMAP.md:414-424",
   "measured_on": "2026-09-13"
  },
  {
   "id": "e2b-lora-params",
   "model": "unsloth/gemma-4-E2B-it",
   "mode": "load",
   "result": "LoRA 25.3M trainable of 5.15B total (0.49%); vendor guide says E2B LoRA needs 8-10 GB",
   "source": "LOCAL_LLM_PHASE2_ROADMAP.md:346-350,409-411",
   "measured_on": "2026-09-13"
  },
  {
   "id": "g3-trial-load",
   "model": "unsloth/gemma-3-4b-it",
   "mode": "load",
   "config": "Unsloth load_in_4bit, single GPU",
   "peak_gb": 4.39,
   "result": "fits, zero CPU offload",
   "source": "LOCAL_LLM_PHASE2_ROADMAP.md:471-474",
   "measured_on": "2026-09-13"
  },
  {
   "id": "g3-trial-step",
   "model": "unsloth/gemma-3-4b-it",
   "mode": "probe",
   "config": "one forward+backward, example truncated to 2048 tokens",
   "peak_gb": 5.59,
   "source": "LOCAL_LLM_PHASE2_ROADMAP.md:486-489",
   "measured_on": "2026-09-13"
  },
  {
   "id": "first-real-step-oom",
   "mode": "real",
   "config": "plain transformers+peft, r16, full ~6300-token examples, before the memory fixes",
   "result": "OOM: 7.39 GB used, 256 MB free, tried to allocate 248 MB",
   "source": "LOCAL_LLM_PHASE2_ROADMAP.md:537-540",
   "measured_on": "2026-09-13"
  },
  {
   "id": "sdpa-forward-probe",
   "mode": "probe",
   "config": "bare no-grad forward, mem_efficient SDPA forced, 6390-token example",
   "peak_gb": 7.16,
   "note": "proved attention was not the bottleneck",
   "source": "LOCAL_LLM_PHASE2_ROADMAP.md:572-579",
   "measured_on": "2026-09-13"
  },
  {
   "id": "logits-tensor-size",
   "mode": "computed",
   "config": "[1, 6390, 262208] fp32 logits vs response span only",
   "result": "6.7 GB full vs 135 MB response-only",
   "inferred": true,
   "note": "arithmetic, not a profiler reading",
   "source": "LOCAL_LLM_PHASE2_ROADMAP.md:580-583",
   "measured_on": "2026-09-13"
  },
  {
   "id": "checkpoint-boundary-climb",
   "mode": "probe",
   "config": "one forward across 34 layers with gradient checkpointing",
   "result": "4.5 GB to 6.99 GB without offload; 6.39 GB with save_on_cpu",
   "source": "LOCAL_LLM_PHASE2_ROADMAP.md:681-687",
   "measured_on": "2026-09-14"
  },
  {
   "id": "lm-head-cast",
   "mode": "load",
   "config": "pre-training VRAM, lm_head fp32 vs bf16",
   "result": "4502 MB to 3221 MB",
   "source": "LOCAL_LLM_PHASE2_ROADMAP.md:688-695",
   "measured_on": "2026-09-14"
  },
  {
   "id": "real-v1",
   "mode": "real",
   "rank": 16,
   "dataset_examples": 152,
   "peak_mb": 4926,
   "source": "train_final3.log",
   "measured_on": "2026-09-14"
  },
  {
   "id": "real-v2",
   "mode": "real",
   "rank": 16,
   "dataset_examples": 490,
   "peak_mb": 5053,
   "note": "last resumed segment",
   "source": "train_v2n.log",
   "measured_on": "2026-09-14"
  },
  {
   "id": "real-v3",
   "mode": "real",
   "rank": 16,
   "dataset_examples": 696,
   "peak_mb": 5040,
   "source": "train_v3.log",
   "measured_on": "2026-09-14"
  },
  {
   "id": "real-v4",
   "mode": "real",
   "rank": 16,
   "dataset_examples": 59,
   "peak_mb": 4889,
   "source": "train_v4.log",
   "measured_on": "2026-09-15"
  },
  {
   "id": "real-v5",
   "mode": "real",
   "rank": 16,
   "dataset_examples": 757,
   "peak_mb": 5117,
   "note": "last resumed segment",
   "source": "train_v5_relaunch_1789454375.log",
   "measured_on": "2026-09-15"
  },
  {
   "id": "real-v6",
   "mode": "real",
   "rank": 64,
   "dataset_examples": 757,
   "peak_mb": 5796,
   "source": "train_v6_wide_relaunch_1789585625.log",
   "measured_on": "2026-09-17"
  },
  {
   "id": "real-v7",
   "mode": "real",
   "rank": 112,
   "dataset_examples": 757,
   "peak_mb": 6647,
   "source": "train_v7_r112_relaunch_1789662150.log",
   "measured_on": "2026-09-17"
  },
  {
   "id": "real-dryrun",
   "mode": "real",
   "rank": 112,
   "dataset_examples": 3,
   "peak_mb": 6634,
   "note": "2-step dry run of the generic trainer",
   "source": "train_dryrun.log",
   "measured_on": "2026-09-18"
  },
  {
   "id": "real-v8",
   "mode": "real",
   "rank": 112,
   "dataset_examples": 1050,
   "peak_mb": 6643,
   "source": "train_v8_r112_relaunch_1789695443.log",
   "measured_on": "2026-09-18"
  },
  {
   "id": "real-v9",
   "mode": "real",
   "rank": 112,
   "dataset_examples": 1080,
   "peak_mb": 6643,
   "source": "train_v9-r112_relaunch_1789754626.log",
   "measured_on": "2026-09-19"
  },
  {
   "id": "real-v10",
   "mode": "real",
   "rank": 64,
   "dataset_examples": 1080,
   "peak_mb": 5767,
   "source": "train_v10-r64_relaunch_1789846500.log",
   "measured_on": "2026-09-20"
  },
  {
   "id": "real-v11",
   "mode": "real",
   "rank": 112,
   "dataset_examples": 1167,
   "peak_mb": 6648,
   "source": "train_v11-r112_relaunch_1789910846.log",
   "measured_on": "2026-09-21"
  },
  {
   "id": "real-v12",
   "mode": "real",
   "rank": 112,
   "epochs": 2,
   "dataset_examples": 1167,
   "peak_mb": 6648,
   "source": "train_v12-r112-e2_relaunch_1789974074.log",
   "measured_on": "2026-09-21"
  },
  {
   "id": "real-v13",
   "mode": "real",
   "rank": 112,
   "rslora": true,
   "alpha": 32,
   "dataset_examples": 1172,
   "longest_example_tokens": 7177,
   "peak_mb": 6653,
   "source": "train_v13-r112-rslora-a32_relaunch_1790015912.log",
   "measured_on": "2026-09-22"
  },
  {
   "id": "real-v14-run1",
   "mode": "real",
   "rank": 112,
   "rslora": true,
   "dropout": 0.1,
   "dataset_examples": 1172,
   "result": "died at step 184: CUDA illegal memory access (Xid 31 MMU fault)",
   "source": "train_v14-r112-drop10_relaunch_1790108172.log; LOCAL_LLM_PHASE2_ROADMAP.md:1260-1261",
   "measured_on": "2026-09-22"
  },
  {
   "id": "real-v14-run2",
   "mode": "real",
   "rank": 112,
   "rslora": true,
   "dropout": 0.1,
   "result": "OOM at step 236: 6.98 GiB allocated, 394 MiB reserved-unallocated, 58 MiB free",
   "source": "train_v14-r112-drop10_relaunch_1790126592.log",
   "measured_on": "2026-09-23"
  },
  {
   "id": "real-v14-run3",
   "mode": "real",
   "rank": 112,
   "rslora": true,
   "dropout": 0.1,
   "result": "OOM at step 239: 6.90 GiB allocated, 457 MiB reserved-unallocated, 78 MiB free",
   "source": "train_v14-r112-drop10_relaunch_1790132778.log",
   "measured_on": "2026-09-23"
  },
  {
   "id": "real-v15",
   "mode": "real",
   "rank": 96,
   "rslora": true,
   "alpha": 30,
   "dropout": 0.1,
   "dataset_examples": 1172,
   "peak_mb": 6629,
   "predicted_mb": 6793,
   "source": "train_v15-r96-drop10_relaunch_1790142410.log; v15_r96_chain.sh:5-9",
   "measured_on": "2026-09-23"
  },
  {
   "id": "real-v16",
   "mode": "real",
   "rank": 112,
   "dataset_examples": 873,
   "peak_mb": 6653,
   "source": "train_v16-r112-disjoint_relaunch_1790201901.log",
   "measured_on": "2026-09-24"
  },
  {
   "id": "real-v17",
   "mode": "real",
   "rank": 112,
   "dataset_examples": 1189,
   "peak_mb": 6658,
   "source": "train_v17-r112-full_relaunch_1790269813.log",
   "measured_on": "2026-09-25"
  },
  {
   "id": "probe-0917-r96",
   "mode": "probe",
   "rank": 96,
   "dataset": "2026-09-15 corpus",
   "longest_example_tokens": 7037,
   "logits_to_keep": 319,
   "pre_step_mb": 3847,
   "peak_mb": 6977.6,
   "source": "probe_rank96.log",
   "measured_on": "2026-09-17"
  },
  {
   "id": "probe-0917-r112",
   "mode": "probe",
   "rank": 112,
   "dataset": "2026-09-15 corpus",
   "longest_example_tokens": 7037,
   "pre_step_mb": 3973,
   "peak_mb": 7216.0,
   "source": "probe_rank112.log",
   "measured_on": "2026-09-17"
  },
  {
   "id": "probe-0917-r128",
   "mode": "probe",
   "rank": 128,
   "dataset": "2026-09-15 corpus",
   "longest_example_tokens": 7037,
   "pre_step_mb": 4098,
   "result": "OOM (tried 70 MiB, 48 MiB free)",
   "source": "probe_rank128.log",
   "measured_on": "2026-09-17"
  },
  {
   "id": "probe-0918-r96",
   "mode": "probe",
   "rank": 96,
   "dataset": "2026-09-18 unfiltered",
   "longest_example_tokens": 7288,
   "peak_mb": 7058.9,
   "source": "probe_rank96_ds0918.log",
   "measured_on": "2026-09-18"
  },
  {
   "id": "probe-0918-r104",
   "mode": "probe",
   "rank": 104,
   "dataset": "2026-09-18 unfiltered",
   "longest_example_tokens": 7288,
   "peak_mb": 7178.1,
   "source": "probe_rank104_ds0918.log",
   "measured_on": "2026-09-18"
  },
  {
   "id": "probe-0918-r112",
   "mode": "probe",
   "rank": 112,
   "dataset": "2026-09-18 unfiltered",
   "longest_example_tokens": 7288,
   "result": "OOM (tried 72 MiB, 66 MiB free)",
   "source": "probe_rank112_ds0918.log",
   "measured_on": "2026-09-18"
  },
  {
   "id": "probe-0918f-r112",
   "mode": "probe",
   "rank": 112,
   "dataset": "2026-09-18 filtered",
   "longest_example_tokens": 6931,
   "logits_to_keep": 192,
   "peak_mb": 7054.8,
   "source": "probe_rank112_ds0918f.log",
   "measured_on": "2026-09-18"
  },
  {
   "id": "probe-dora-r112",
   "mode": "probe",
   "rank": 112,
   "dora": true,
   "longest_example_tokens": 7037,
   "pre_step_mb": 3985,
   "result": "OOM inside the DoRA weight-norm step (tried 100 MiB, 30 MiB free)",
   "source": "probe_dora_r112.log",
   "measured_on": "2026-09-18"
  },
  {
   "id": "probe-dora-r64",
   "mode": "probe",
   "rank": 64,
   "dora": true,
   "longest_example_tokens": 7037,
   "pre_step_mb": 3610,
   "result": "OOM inside the DoRA weight-norm step (tried 100 MiB, 76 MiB free)",
   "source": "probe_dora_r64.log",
   "measured_on": "2026-09-18"
  },
  {
   "id": "probe-0919f-r112",
   "mode": "probe",
   "rank": 112,
   "dataset": "2026-09-19 filtered",
   "longest_example_tokens": 7068,
   "logits_to_keep": 73,
   "peak_mb": 6980.0,
   "note": "the calibration anchor",
   "source": "probe_rank112_ds0919f.log",
   "measured_on": "2026-09-20"
  },
  {
   "id": "sweep-r112-drop",
   "mode": "probe",
   "rank": 112,
   "rslora": true,
   "alpha": 32,
   "dropout": 0.1,
   "dataset": "2026-09-21",
   "longest_example_tokens": 7177,
   "logits_to_keep": 237,
   "result": "OOM",
   "source": "probe_sweep.log; probe_sweep.sh",
   "measured_on": "2026-09-23"
  },
  {
   "id": "sweep-r104-drop",
   "mode": "probe",
   "rank": 104,
   "rslora": true,
   "dropout": 0.1,
   "longest_example_tokens": 7177,
   "result": "OOM",
   "source": "probe_sweep.log",
   "measured_on": "2026-09-23"
  },
  {
   "id": "sweep-r96-drop",
   "mode": "probe",
   "rank": 96,
   "rslora": true,
   "dropout": 0.1,
   "longest_example_tokens": 7177,
   "peak_mb": 7127.6,
   "source": "probe_sweep.log",
   "measured_on": "2026-09-23"
  },
  {
   "id": "sweep-r88-drop",
   "mode": "probe",
   "rank": 88,
   "rslora": true,
   "dropout": 0.1,
   "longest_example_tokens": 7177,
   "peak_mb": 7007.9,
   "source": "probe_sweep.log",
   "measured_on": "2026-09-23"
  },
  {
   "id": "sweep-r80-drop",
   "mode": "probe",
   "rank": 80,
   "rslora": true,
   "dropout": 0.1,
   "longest_example_tokens": 7177,
   "peak_mb": 6890.3,
   "source": "probe_sweep.log",
   "measured_on": "2026-09-23"
  },
  {
   "id": "sweep-r112-nodrop",
   "mode": "probe",
   "rank": 112,
   "rslora": true,
   "alpha": 32,
   "dropout": 0,
   "longest_example_tokens": 7177,
   "result": "OOM, although v13 trained this exact config at a 6653 MB real peak",
   "source": "probe_sweep.log; train_v13-r112-rslora-a32_relaunch_1790015912.log",
   "measured_on": "2026-09-23"
  }
 ],
 "rank_cost": {
  "real_peak_by_rank_mb": {
   "16": "4889-5117",
   "64": "5767-5796",
   "96 (+dropout)": 6629,
   "112": "6643-6658"
  },
  "probe_cost_per_rank_unit_mb": {
   "value": 15,
   "evidence": "dropout sweep: r80 6890.3, r88 7007.9, r96 7127.6 MB, i.e. ~118-120 MB per 8 ranks",
   "source": "probe_sweep.log; v15_r96_chain.sh:10",
   "measured_on": "2026-09-23"
  },
  "real_cost_r64_to_r112_mb": {
   "value": "about 850-880",
   "evidence": "v6 5796 vs v7 6647 (same corpus); v10 5767 vs v9 6643 (same corpus)",
   "source": "real-run logs above",
   "measured_on": "2026-09-20"
  },
  "source": "real-run logs above",
  "measured_on": "2026-09-25"
 },
 "dropout_memory": {
  "claim": "PEFT installs nn.Identity at lora_dropout=0 (allocates nothing) and nn.Dropout above 0, which saves a mask per call for backward across 7 target modules on 34 layers. Estimated cost about 350 MB of peak at rank 112, the whole remaining margin. The rate does not matter; the mask is allocated at any rate above 0.",
  "estimate_mb": 350,
  "inferred": true,
  "note": "350 MB is the program notes's estimate from comparing crashes against v13's 6653 MB peak, not a direct measurement. It corrects an earlier ledger entry that said dropout cost no extra VRAM.",
  "source": "LOCAL_LLM_PHASE2_ROADMAP.md:1263-1267 (peft/tuners/lora/layer.py:251)",
  "measured_on": "2026-09-23",
  "measured_update": "Measured on 2026-10-15 at the one-step probe: dropout 0.1 adds 167 to 175 MB at ranks 96 to 256 (see Cross-GPU probes and finding F30), about half this estimate."
 },
 "calibration": {
  "method": "Run the one-step probe on the worst-case example, then scale by the probe's measured over-estimate on a config that also has a real run.",
  "anchor": {
   "probe_mb": 6980.0,
   "probe": "the 2026-09-19-corpus probe at r112, no dropout",
   "real_mb": 6653,
   "real": "v11/v13 r112 runs (6648/6653)",
   "probe_overestimate_pct": 4.7
  },
  "prediction": {
   "config": "r96, rsLoRA alpha 30, dropout 0.1",
   "probe_mb": 7127.6,
   "predicted_mb": 6793,
   "actual_mb": 6629,
   "error_pct": 2.5
  },
  "derivation_inferred": true,
  "derivation_note": "The chain script states the 4.7% over-estimate and the 6,793 MB prediction; it does not name the anchor probe. 6980 x (1 - 0.047) = 6652 and 7127.6 x 0.953 = 6793 match, so the anchor is taken to be the 2026-09-19-corpus r112 probe.",
  "value": "replaced three crashes and about 11 GPU-hours that found the rank-112 dropout ceiling the hard way",
  "source": "v15_r96_chain.sh:5-10; LOCAL_LLM_PHASE2_ROADMAP.md:1295-1297; probe_sweep.log; train_v15-r96-drop10_relaunch_1790142410.log",
  "measured_on": "2026-09-23"
 },
 "probe_vs_real_gap": {
  "observed": "The probe over-estimates a real run's peak by roughly 4.7% (anchor) and up to >0.9 GB in the worst case: on the 21 Sep corpus the r112 no-dropout probe OOMs at ~7.6 GB in use, while v13 trained that exact config at 6653 MB.",
  "what_sources_say": "The chain script calls the probe 'a conservative upper bound, not a prediction'. No source explains the mechanism.",
  "probe_design": "one forward+backward on the single longest example in the corpus (worst-case activation memory), no optimizer step, model.train() set so gradient checkpointing is active, wrapped in save_on_cpu like the trainer",
  "length_sensitivity": "probe peaks rise with the longest example and its response span: r112 fits at 6931 tokens (7055 MB) and 7068 tokens (6980 MB, short response) but OOMs at 7177 and 7288 tokens",
  "inferred": true,
  "source": "v15_r96_chain.sh:5-9; probe_max_rank.py docstring and lines 77,116-121; probe logs above",
  "measured_on": "2026-09-23"
 },
 "inference_footprint": [
  {
   "model": "fine-tuned router, Q8_0",
   "gguf_size_gb": 4.14,
   "resident_gb_estimate": 4.4,
   "source": "GGUF file size; LOCAL_LLM_PHASE2_ROADMAP.md:1139",
   "measured_on": "2026-09-25"
  },
  {
   "model": "fine-tuned router, Q4_0",
   "gguf_size_gb": 2.37,
   "source": "GGUF file size",
   "measured_on": "2026-09-16"
  },
  {
   "note": "untuned model resident sizes are in baselines.json"
  }
 ],
 "host_ram": {
  "incident": "The first rank probe lacked model.train(), so HF gradient checkpointing was silently off and save_on_cpu spilled every activation to pinned host RAM. It thrashed the box and later hit a 32 GB cgroup memory cap. Probes now run under systemd-run --scope -p MemoryMax=12G.",
  "source": "LOCAL_LLM_PHASE2_ROADMAP.md:1003-1007; probe_max_rank.py:77; probe_sweep.sh",
  "measured_on": "2026-09-17"
 },
 "cross_gpu": {
  "about": "One-step probes of the training recipe on two GPU vendors. Each probe runs one forward and backward pass of unsloth/gemma-3-4b-it with LoRA on all 7 attention and MLP projections, on synthetic random tokens: seq_len tokens of input with the loss on the last response_len. Peak memory depends on shapes, not on what the tokens say, so the synthetic input stands in for the real worst-case example (checked on the RTX 3060 Ti: pre-step memory at rank 112 was 3,972.6 MB synthetic vs 3,972.55 MB real). No optimizer step, so a real training run's peak differs; see Calibration above. Memory fixes 'all' = chunked MLP, save_on_cpu activation offload, bf16 lm_head and logits_to_keep (see the recipe). Peak allocated is torch.cuda.max_memory_allocated; reserved adds the allocator's cache.",
  "gpus": {
   "rx_7900_xtx": {
    "model": "AMD Radeon RX 7900 XTX",
    "arch": "gfx1100",
    "total_mb": 24560,
    "os": "Windows 11 (build 26200)",
    "driver": "AMD Adrenalin 26.7.1 (32.0.31035.1003)",
    "stack": "ROCm 7.2.1 Windows SDK wheels, torch 2.9.1+rocm7.2.1, HIP 7.2.53211",
    "libraries": "transformers 5.19.0, peft 0.21.2, accelerate 1.15.0, bitsandbytes 0.50.2",
    "python": "3.12.10"
   },
   "rtx_3060_ti": {
    "model": "NVIDIA GeForce RTX 3060 Ti",
    "total_mb": 8192,
    "usable_gib_torch": 7.66,
    "os": "Ubuntu, Linux 7.0",
    "driver": "580.178.04",
    "note": "About 0.55 GB of the card was held by an Ollama process during the probes, so the rank 96 OOM is for about 7.1 GB free, not 7.66."
   }
  },
  "probes": [
   {
    "gpu": "RX 7900 XTX",
    "quant": "4bit",
    "memory_fixes": "all",
    "rank": 16,
    "dropout": 0.0,
    "dora": false,
    "seq_len": 7177,
    "response_len": 237,
    "status": "ok",
    "after_load_mb": 3079.8,
    "pre_step_mb": 3222.4,
    "peak_allocated_mb": 5721.3,
    "peak_reserved_mb": 6694.0,
    "step_s": 16.92,
    "measured_on": "2026-10-15"
   },
   {
    "gpu": "RX 7900 XTX",
    "quant": "4bit",
    "memory_fixes": "all",
    "rank": 64,
    "dropout": 0.0,
    "dora": false,
    "seq_len": 7177,
    "response_len": 237,
    "status": "ok",
    "after_load_mb": 3079.8,
    "pre_step_mb": 3597.7,
    "peak_allocated_mb": 6406.2,
    "peak_reserved_mb": 6752.0,
    "step_s": 14.13,
    "measured_on": "2026-10-15"
   },
   {
    "gpu": "RX 7900 XTX",
    "quant": "4bit",
    "memory_fixes": "all",
    "rank": 96,
    "dropout": 0.0,
    "dora": false,
    "seq_len": 7177,
    "response_len": 237,
    "status": "ok",
    "after_load_mb": 3079.8,
    "pre_step_mb": 3847.8,
    "peak_allocated_mb": 6884.8,
    "peak_reserved_mb": 7318.0,
    "step_s": 14.28,
    "measured_on": "2026-10-15"
   },
   {
    "gpu": "RX 7900 XTX",
    "quant": "4bit",
    "memory_fixes": "all",
    "rank": 112,
    "dropout": 0.0,
    "dora": false,
    "seq_len": 7177,
    "response_len": 237,
    "status": "ok",
    "after_load_mb": 3079.8,
    "pre_step_mb": 3974.5,
    "peak_allocated_mb": 7194.5,
    "peak_reserved_mb": 7578.0,
    "step_s": 14.27,
    "measured_on": "2026-10-15"
   },
   {
    "gpu": "RX 7900 XTX",
    "quant": "4bit",
    "memory_fixes": "all",
    "rank": 128,
    "dropout": 0.0,
    "dora": false,
    "seq_len": 7177,
    "response_len": 237,
    "status": "ok",
    "after_load_mb": 3079.8,
    "pre_step_mb": 4099.7,
    "peak_allocated_mb": 7395.9,
    "peak_reserved_mb": 7750.0,
    "step_s": 14.07,
    "measured_on": "2026-10-15"
   },
   {
    "gpu": "RX 7900 XTX",
    "quant": "4bit",
    "memory_fixes": "all",
    "rank": 192,
    "dropout": 0.0,
    "dora": false,
    "seq_len": 7177,
    "response_len": 237,
    "status": "ok",
    "after_load_mb": 3079.8,
    "pre_step_mb": 4611.9,
    "peak_allocated_mb": 8383.4,
    "peak_reserved_mb": 8842.0,
    "step_s": 14.8,
    "measured_on": "2026-10-15"
   },
   {
    "gpu": "RX 7900 XTX",
    "quant": "4bit",
    "memory_fixes": "all",
    "rank": 256,
    "dropout": 0.0,
    "dora": false,
    "seq_len": 7177,
    "response_len": 237,
    "status": "ok",
    "after_load_mb": 3079.8,
    "pre_step_mb": 5129.1,
    "peak_allocated_mb": 9338.3,
    "peak_reserved_mb": 9732.0,
    "step_s": 14.88,
    "measured_on": "2026-10-15"
   },
   {
    "gpu": "RX 7900 XTX",
    "quant": "4bit",
    "memory_fixes": "all",
    "rank": 96,
    "dropout": 0.1,
    "dora": false,
    "seq_len": 7177,
    "response_len": 237,
    "status": "ok",
    "after_load_mb": 3079.8,
    "pre_step_mb": 3847.8,
    "peak_allocated_mb": 7059.3,
    "peak_reserved_mb": 7520.0,
    "step_s": 14.64,
    "measured_on": "2026-10-15"
   },
   {
    "gpu": "RX 7900 XTX",
    "quant": "4bit",
    "memory_fixes": "all",
    "rank": 112,
    "dropout": 0.1,
    "dora": false,
    "seq_len": 7177,
    "response_len": 237,
    "status": "ok",
    "after_load_mb": 3079.8,
    "pre_step_mb": 3974.5,
    "peak_allocated_mb": 7368.2,
    "peak_reserved_mb": 7794.0,
    "step_s": 15.46,
    "measured_on": "2026-10-15"
   },
   {
    "gpu": "RX 7900 XTX",
    "quant": "4bit",
    "memory_fixes": "all",
    "rank": 128,
    "dropout": 0.1,
    "dora": false,
    "seq_len": 7177,
    "response_len": 237,
    "status": "ok",
    "after_load_mb": 3079.8,
    "pre_step_mb": 4099.7,
    "peak_allocated_mb": 7562.7,
    "peak_reserved_mb": 8038.0,
    "step_s": 14.21,
    "measured_on": "2026-10-15"
   },
   {
    "gpu": "RX 7900 XTX",
    "quant": "4bit",
    "memory_fixes": "all",
    "rank": 256,
    "dropout": 0.1,
    "dora": false,
    "seq_len": 7177,
    "response_len": 237,
    "status": "ok",
    "after_load_mb": 3079.8,
    "pre_step_mb": 5129.1,
    "peak_allocated_mb": 9506.9,
    "peak_reserved_mb": 9890.0,
    "step_s": 14.99,
    "measured_on": "2026-10-15"
   },
   {
    "gpu": "RX 7900 XTX",
    "quant": "4bit",
    "memory_fixes": "all",
    "rank": 64,
    "dropout": 0.0,
    "dora": true,
    "seq_len": 7177,
    "response_len": 237,
    "status": "ok",
    "after_load_mb": 3079.8,
    "pre_step_mb": 3633.9,
    "peak_allocated_mb": 8240.7,
    "peak_reserved_mb": 8564.0,
    "step_s": 19.53,
    "measured_on": "2026-10-15"
   },
   {
    "gpu": "RX 7900 XTX",
    "quant": "4bit",
    "memory_fixes": "all",
    "rank": 112,
    "dropout": 0.0,
    "dora": true,
    "seq_len": 7177,
    "response_len": 237,
    "status": "ok",
    "after_load_mb": 3079.8,
    "pre_step_mb": 4010.7,
    "peak_allocated_mb": 9018.8,
    "peak_reserved_mb": 9290.0,
    "step_s": 19.61,
    "measured_on": "2026-10-15"
   },
   {
    "gpu": "RX 7900 XTX",
    "quant": "bf16",
    "memory_fixes": "all",
    "rank": 16,
    "dropout": 0.0,
    "dora": false,
    "seq_len": 7177,
    "response_len": 237,
    "status": "ok",
    "after_load_mb": 8201.8,
    "pre_step_mb": 8327.1,
    "peak_allocated_mb": 10826.3,
    "peak_reserved_mb": 11818.0,
    "step_s": 14.7,
    "measured_on": "2026-10-15"
   },
   {
    "gpu": "RX 7900 XTX",
    "quant": "bf16",
    "memory_fixes": "all",
    "rank": 64,
    "dropout": 0.0,
    "dora": false,
    "seq_len": 7177,
    "response_len": 237,
    "status": "ok",
    "after_load_mb": 8201.8,
    "pre_step_mb": 8702.3,
    "peak_allocated_mb": 11509.5,
    "peak_reserved_mb": 12290.0,
    "step_s": 13.3,
    "measured_on": "2026-10-15"
   },
   {
    "gpu": "RX 7900 XTX",
    "quant": "bf16",
    "memory_fixes": "all",
    "rank": 112,
    "dropout": 0.0,
    "dora": false,
    "seq_len": 7177,
    "response_len": 237,
    "status": "ok",
    "after_load_mb": 8201.8,
    "pre_step_mb": 9089.1,
    "peak_allocated_mb": 12317.5,
    "peak_reserved_mb": 12658.0,
    "step_s": 13.43,
    "measured_on": "2026-10-15"
   },
   {
    "gpu": "RX 7900 XTX",
    "quant": "bf16",
    "memory_fixes": "all",
    "rank": 256,
    "dropout": 0.0,
    "dora": false,
    "seq_len": 7177,
    "response_len": 237,
    "status": "ok",
    "after_load_mb": 8201.8,
    "pre_step_mb": 10244.5,
    "peak_allocated_mb": 14443.2,
    "peak_reserved_mb": 14840.0,
    "step_s": 14.38,
    "measured_on": "2026-10-15"
   },
   {
    "gpu": "RX 7900 XTX",
    "quant": "4bit",
    "memory_fixes": "all",
    "rank": 112,
    "dropout": 0.0,
    "dora": false,
    "seq_len": 2048,
    "response_len": 237,
    "status": "ok",
    "after_load_mb": 3079.8,
    "pre_step_mb": 3974.4,
    "peak_allocated_mb": 5585.8,
    "peak_reserved_mb": 7288.0,
    "step_s": 4.46,
    "measured_on": "2026-10-15"
   },
   {
    "gpu": "RX 7900 XTX",
    "quant": "4bit",
    "memory_fixes": "all",
    "rank": 112,
    "dropout": 0.0,
    "dora": false,
    "seq_len": 4096,
    "response_len": 237,
    "status": "ok",
    "after_load_mb": 3079.8,
    "pre_step_mb": 3974.4,
    "peak_allocated_mb": 6207.9,
    "peak_reserved_mb": 7286.0,
    "step_s": 7.33,
    "measured_on": "2026-10-15"
   },
   {
    "gpu": "RX 7900 XTX",
    "quant": "4bit",
    "memory_fixes": "all",
    "rank": 112,
    "dropout": 0.0,
    "dora": false,
    "seq_len": 8192,
    "response_len": 237,
    "status": "ok",
    "after_load_mb": 3079.8,
    "pre_step_mb": 3974.5,
    "peak_allocated_mb": 7486.0,
    "peak_reserved_mb": 7852.0,
    "step_s": 15.91,
    "measured_on": "2026-10-15"
   },
   {
    "gpu": "RX 7900 XTX",
    "quant": "4bit",
    "memory_fixes": "all",
    "rank": 112,
    "dropout": 0.0,
    "dora": false,
    "seq_len": 12288,
    "response_len": 237,
    "status": "ok",
    "after_load_mb": 3079.8,
    "pre_step_mb": 3974.6,
    "peak_allocated_mb": 8917.2,
    "peak_reserved_mb": 9498.0,
    "step_s": 30.49,
    "measured_on": "2026-10-15"
   },
   {
    "gpu": "RX 7900 XTX",
    "quant": "4bit",
    "memory_fixes": "all",
    "rank": 112,
    "dropout": 0.0,
    "dora": false,
    "seq_len": 16384,
    "response_len": 237,
    "status": "ok",
    "after_load_mb": 3079.8,
    "pre_step_mb": 3974.7,
    "peak_allocated_mb": 10523.6,
    "peak_reserved_mb": 11162.0,
    "step_s": 53.5,
    "measured_on": "2026-10-15"
   },
   {
    "gpu": "RX 7900 XTX",
    "quant": "4bit",
    "memory_fixes": "none",
    "rank": 16,
    "dropout": 0.0,
    "dora": false,
    "seq_len": 7177,
    "response_len": 237,
    "status": "spilled",
    "after_load_mb": 3079.8,
    "pre_step_mb": 4502.8,
    "peak_allocated_mb": 35829.2,
    "peak_reserved_mb": 37502.0,
    "step_s": 68.68,
    "measured_on": "2026-10-15",
    "note": "Finished only because Windows spilled past the 24 GB card into shared system memory; about 4x slower. Would not fit on this card under Linux. See gotcha G31."
   },
   {
    "gpu": "RX 7900 XTX",
    "quant": "4bit",
    "memory_fixes": "none",
    "rank": 112,
    "dropout": 0.0,
    "dora": false,
    "seq_len": 7177,
    "response_len": 237,
    "status": "spilled",
    "after_load_mb": 3079.8,
    "pre_step_mb": 5254.9,
    "peak_allocated_mb": 36581.3,
    "peak_reserved_mb": 38334.0,
    "step_s": 57.79,
    "measured_on": "2026-10-15",
    "note": "Finished only because Windows spilled past the 24 GB card into shared system memory; about 4x slower. Would not fit on this card under Linux. See gotcha G31."
   },
   {
    "gpu": "RTX 3060 Ti",
    "quant": "4bit",
    "memory_fixes": "all",
    "rank": 16,
    "dropout": 0.0,
    "dora": false,
    "seq_len": 7177,
    "response_len": 237,
    "status": "ok",
    "after_load_mb": 3079.5,
    "pre_step_mb": 3222.1,
    "peak_allocated_mb": 5788.9,
    "peak_reserved_mb": 6076.0,
    "step_s": 17.28,
    "measured_on": "2026-10-15"
   },
   {
    "gpu": "RTX 3060 Ti",
    "quant": "4bit",
    "memory_fixes": "all",
    "rank": 64,
    "dropout": 0.0,
    "dora": false,
    "seq_len": 7177,
    "response_len": 237,
    "status": "ok",
    "after_load_mb": 3079.5,
    "pre_step_mb": 3597.3,
    "peak_allocated_mb": 6465.0,
    "peak_reserved_mb": 6826.0,
    "step_s": 17.26,
    "measured_on": "2026-10-15"
   },
   {
    "gpu": "RTX 3060 Ti",
    "quant": "4bit",
    "memory_fixes": "all",
    "rank": 96,
    "dropout": 0.0,
    "dora": false,
    "seq_len": 7177,
    "response_len": 237,
    "status": "oom",
    "after_load_mb": 3079.5,
    "pre_step_mb": 3847.5,
    "peak_allocated_mb": 6757.3,
    "measured_on": "2026-10-15",
    "note": "Ollama held about 0.55 GB of this 8 GB card during the probe"
   }
  ],
  "source": "probe_kit/probe_vram.py and run_sweep.py (this site's probe kit)",
  "measured_on": "2026-10-15"
 }
}
