Methodology · Model Memory Fit

How the Model Memory Fit engine decides what fits.

Method version 1.5.0 · Dataset 2026-09-07 · Last updated: September 2026

The engine answers one question: for a given model, quantisation, context length and concurrency, does it fit in this Jetson module's memory, and how much headroom is left? This page states every formula, every data table and every source the engine uses, and the rule it applies to label confidence. If a number on a result page cannot be traced back to something on this page, that is a bug.

Contents

  1. What it computes, and what it does not
  2. Inputs and defaults
  3. Weights
  4. KV cache
  5. VLM image tokens and vision tower
  6. Runtime overhead
  7. OS headroom and reserve
  8. Vision-pipeline mode
  9. Verdict thresholds and constraint statuses
  10. Capacity landmarks and requested position
  11. Evidence classes and the confidence rule
  12. Model registry
  13. Module memory
  14. Documents
  15. What invalidates a result
  16. Limitations and gaps
  17. Method changelog

1. What it computes, and what it does not

The engine builds a memory budget for one model on one Jetson module at one quantisation, context length, concurrency and runtime, and compares the total against the module's installed memory. Four modes share the same budget: llm (weights + KV cache + runtime overhead + OS + reserve), vlm (llm plus a vision tower and image tokens added to the context), asr (Whisper-style encoder–decoder, a small decoder KV cache), and vision (detector pipelines, whose model-side parts come from the shared V2 vision-memory module and are rebuilt on this same budget, so this engine and Model Match agree on what a detector weighs as well as on OS headroom and reserve).

It does not measure your actual runtime's memory use, predict tokens/s, model KV-cache eviction or paging strategies, or account for a container runtime's own overhead beyond the stated runtime constant. Where the registry has no data for a field the engine falls back to a stated formula (never a silent guess) and labels the result's evidence class accordingly.

2. Inputs and defaults

Every input has a stated default so a minimal request (platform + model) still returns a result.

InputDefaultNotes
platform—Required. A registry module id or a catalog/memory-estimator platform id.
model—Required (non-vision modes). A registry id, or custom with params_b, layers, kv_heads, head_dim.
modethe model's registry typellm · vlm · asr · vision
quantq4One of fp16, fp8, int8, q4, nvfp4.
context_tokens4096Includes VLM image tokens (added on top).
sequences1Concurrent sequences; multiplies the KV cache.
kv_quantfp16fp16 (2 bytes) or int8 (1 byte) per KV element.
runtimellama_cpp (tensorrt for vision)One of llama_cpp, mlc, tensorrt_llm, vllm, transformers.
images_per_prompt1VLM only.
osheadlessheadless or desktop.
reserve_pct100–50.
coexisting_mb0Memory reserved for co-located workloads.

Inputs (WP-01). A field that is not stated takes its documented default and is listed in provenance.defaulted; a field that is stated but invalid — a count of 0, a negative, a fraction or a non-number, true in place of a count, an unknown value of an enumerated input, or an empty string — is rejected with VALIDATION_ERROR naming the field, never replaced by a default.

Input keys (WP-02). The engine accepts one list of input keys — the inputs documented here and their declared backward-compatible aliases. Unknown input keys are rejected with VALIDATION_ERROR naming the key: an invented or misspelt key is never silently ignored, a __ test hook never reaches the engine, and an alias sent together with the key it stands for is rejected too (the engine would read only one of them). export_json.inputs echoes every input the engine honoured, so replaying it reproduces the result.

3. Weights

The engine prefers a measured artefact: if the registry has a published quantised file for this model and quant (a GGUF from bartowski, unsloth or ggml-org, or a safetensors shard set), its published size is the weight figure, class A. Otherwise weights are parameters × bytes-per-parameter.

weights_mb = measured_artefact_size_gb × 1e9 / 1048576 ← class A, when published = params_b × 1e9 × bytes_per_param(quant) / 1048576 ← otherwise VLM: params_b is the text backbone only (registry params_b minus the estimated vision-tower parameters); the vision tower is priced separately (§5).

bytes_per_param is a fixed storage width for FP16/BF16 (2 bytes) and FP8 (1 byte) — class A, true by definition. For block quants (INT8/GGUF Q8_0, Q4_K_M, NVFP4) the nominal bit width understates the real size because each block also stores a scale, so the engine uses the median measured artefact-size ÷ parameters ratio across the registry's own rows for that quant — class D, a EdgeAIStack-derived figure, not a vendor one.

QuantNominal bits/weightBytes/param usedBasisClass
FP16 / BF16162fixed storage widthA
FP8 (E4M3)81fixed storage widthA
INT8 / GGUF Q8_08.51.064registry median (32 int8 weights + 1 fp16 scale per block)D
GGUF Q4_K_M / INT450.625registry median (K-quant mixed 4-/6-bit blocks + fp16 scales)D
NVFP44.50.56254-bit weights + 1 fp8 scale per 16-weight blockD

Source for the Q8_0 block layout: ggml-org (llama.cpp) · github:ggml-org/llama.cpp/ggml-common.h §block_q8_0 · verified 2026-09-07 — “QK8_0 32 … block_q8_0 { ggml_half d; int8_t qs[QK8_0]; }”.

4. KV cache

The KV cache formula is the standard transformer key-value cache size, applied per sequence and summed across concurrent sequences. ASR mode caps the token count at the decoder's text limit (448 tokens for Whisper), since the encoder side has no growing cache.

kv_cache_mb = 2 × layers × kv_heads × head_dim × context_tokens × kv_bytes × sequences / 1048576 kv_bytes: fp16 → 2 int8 → 1 context_tokens (VLM): request tokens + images_per_prompt × image_tokens_per_image context_tokens (ASR): min(request tokens, decoder_max_ctx)

Source: NVIDIA · nvidia-blog:mastering-llm-techniques-inference-optimization §Key-value caching · verified 2026-09-07 — “KV cache size per token = 2 × (num_layers) × (num_heads × dim_head) × precision_in_bytes”. Class A: the formula is the architecture-derived cache size; class D overall because layers/kv_heads/head_dim for a given model may themselves be class-A config.json fields or, when config.json omits head_dim, derived as hidden_size ÷ num_attention_heads (flagged per-model as head_dim_derived).

5. VLM image tokens and vision tower

A VLM adds two things beyond the text backbone: image tokens appended to the context (so the KV cache grows), and the vision tower's own weights.

image_tokens_added = images_per_prompt × image_tokens_per_image(model) ← class D, per-model basis stated vision_mb = mmproj_or_vision_file_size_gb × 1e9 / 1048576 ← class A, when published = 12 × vision_layers × vision_hidden² × 2 bytes / 1048576 ← class D, otherwise (fp16 ViT estimate)

image_tokens_per_image is model-specific and stated on each model's page: for example Qwen2.5-VL uses (H/28)×(W/28) tokens after a 2×2 spatial merge (1280 assumed for a ~1 MP image); Gemma 3 pools its SigLIP patches to a fixed 256 tokens per image. Vision-tower parameters, when not directly stated, are estimated with the standard ViT parameter count 12 × layers × hidden², kept in FP16 regardless of the text quantisation (vision towers are rarely quantised below FP16 in practice).

6. Runtime overhead

A fixed base plus a percentage of weights, per runtime — engineering heuristics (class E), not vendor-published figures. These cover the CUDA context, compute buffers and (for llama.cpp/MLC) the paged KV allocator's bookkeeping beyond the KV bytes already counted in §4.

RuntimeBase+% of weightsNote
llama.cpp / Ollama400 MB6%CUDA context + compute buffer for the prompt batch (n_batch 512)
MLC LLM400 MB6%TVM runtime + CUDA context; q4f16 KV in fp16
TensorRT-LLM600 MB10%engine activations + CUDA context; paged KV pool sized to max context
vLLM800 MB10%CUDA graphs + activations; vLLM pre-allocates gpu_memory_utilization × total, so this is the minimum
Hugging Face Transformers (PyTorch)900 MB25%PyTorch allocator + eager activations; no paged KV

runtime_mb = base_mb + workspace_pct × (weights_mb + vision_mb) / 100.

6a. ASR serving overhead from the published landmark

An ASR row whose publisher states a serving memory figure — OpenAI's Whisper README gives ~10 GB for large — is not sized from weights × width alone, because that figure is measured on a running transcription and this engine's modelled parts are not. The difference is real memory: encoder activations, audio and beam buffers and allocator slack. It is measured once, against a fixed reference configuration — the one the publisher measured, and nothing of what you asked for: FP16 weights, one sequence, an FP16 KV cache under the publisher's reference runtime, the decoder's 448-token limit, a headless OS, the default 10 % reserve and nothing co-located. It is then carried as one more part of the budget:

reference_mb = constructed_total_mb(fp16, 1 sequence, publisher reference runtime, headless OS, 10 % reserve, nothing co-located) asr_serving_overhead_mb = max(0, published_landmark_mb − reference_mb) total_mb = constructed_total_mb(your quant, sequences, runtime, OS, reserve, co-located memory) + asr_serving_overhead_mb

The reference is fixed because it describes a measurement someone else made. Rebuild it from your inputs instead and the overhead becomes a residual that shrinks as your request grows — raising the reserve to 50 % would then lower the total, and a workload that was TIGHT at the defaults would read FITS under strictly worse assumptions. Every deployment cost you add — reserve, OS, co-located memory, context, concurrency, a wider quantisation, a heavier runtime — is charged on your own budget, and this fixed term is added on top of it.

So at the published configuration the total is the published landmark (Whisper large-v3 FP16 at 448 tokens under the reference runtime: 10 GB, which does not fit an 8 GB module), while a narrower quantisation or a longer concurrency still moves the total by exactly what the weights and KV cache move. One consequence is worth stating plainly: the single published figure is carried across runtimes, because no publisher states an equivalent for MLC or llama.cpp, so a leaner runtime lowers the total by its own modelled workspace and not by this term. The overhead is class A by measurement and class E by attribution: the landmark is published, the split between "what we model" and "what we do not" is ours. Because it is part of the budget, every figure built from that budget — the verdict, the concurrency ladder, the largest-context sweep, the quantisation alternatives and the per-module table — carries it, and the alternatives table names published serving landmark as the basis for those rows.

7. OS headroom and reserve

Shared with Camera Stream Capacity so the two engines never disagree about what the OS costs.

os_mb = 900 (headless) | 2300 (desktop) ← class E reserve_mb = reserve_pct × (weights + kv + vision + runtime + os) / 100 ← class E, default 10% total_mb = weights + kv + vision + runtime + os + reserve

Jetson modules share one memory pool between CPU and GPU (class A: NVIDIA · nvidia-docs:cuda-for-tegra-appnote §Memory Management · verified 2026-09-07 — “the iGPU and the CPU share the same SoC DRAM”), so the OS, the runtime and the model all draw on the same total; there is no separate VRAM.

8. Vision-pipeline mode

With no precision named in vision mode, the precision is the planning default of the task the model registry files the model under (method 1.3.0) — FP16 for a YOLO11-seg or YOLO11-pose model, INT8 for every other model — and on a platform that runs only INT8 (Coral, Hailo) the FP16 default falls back to INT8, the platform’s supported precision. It is listed in defaulted, and a task-specific default is marked workload.precision_default (DERIVED) with an assumption; a named precision is used as named.

For detector pipelines (YOLO, ResNet and similar), the engine does not duplicate the weight/activation/workspace model — the model-side parts come from the one shared V2 vision-memory module that Model Match also reads: the registry weight size at the chosen precision, and the published TensorRT activation and workspace split where one exists (class C), or that same published curve interpolated on to a parameter count it was not measured at (class E, and labelled as one). The workload-side parts — per-stream decode buffers (resolution mapped to the same buckets as Camera Stream Capacity: 720p 8 · 1080p 16 · 4K 64 MB), preprocess buffers (32 MB per stream), tracker memory and deployment overhead — are added here, and the total is rebuilt on this engine's shared budget function, so OS headroom and reserve are computed identically to every other mode. This keeps the two engines from silently disagreeing on a workload that could be scored by either.

9. Verdict thresholds and constraint statuses

utilization = total_mb / capacity_mb verdict = FITS if utilization < 0.85 = TIGHT if 0.85 ≤ utilization ≤ 1.00 = DOES_NOT_FIT if utilization > 1.00 = UNKNOWN if capacity_mb is unknown

The memory figure is also reported as a constraint object on the shared V2 framework (status PASS below 80%, NEAR_LIMIT from 80% through 100%, FAIL above 100%) — a slightly stricter early-warning line than the FITS/TIGHT/DOES_NOT_FIT verdict, which is tuned for the headline sentence. Two additional constraint types can appear: a software constraint (class A, HIGH confidence) fails when the requested context exceeds the model's max_position_embeddings, and a software constraint reports UNSUPPORTED when runtime is llama_cpp and the registry notes that no GGUF has been published for the model (VILA 1.5 3B and 8B, as of the current dataset). The headline verdict applies the kernel rollup across every material constraint; memory_verdict keeps the memory-only band above so a context or artefact failure cannot read FITS while memory alone would fit.

A memory total over the capacity is a FAIL only when the evidence can prove it (elimination authority). The weights, the KV cache and anything you co-locate are exact arithmetic on published architecture facts; the runtime overhead, activations, workspace, OS footprint and reserve are estimates. So the memory constraint FAILs — and the headline reads DOES_NOT_FIT — when the floor alone exceeds the memory: the weights at the format's storage width (the published artefact when there is one, else every parameter at the format's integer width), plus the KV cache for the text context, plus co-located memory. When only the estimated overheads take the total over, the constraint is REQUIRES VALIDATION with the modelled shortfall stated, memory_verdict still reads DOES_NOT_FIT and the headline reads UNKNOWN — not a pass, not an elimination.

10. Capacity landmarks and requested position

Headroom uses the same landmark vocabulary as Camera Stream Capacity: comfortable, near_limit, modeled_ceiling, and fails_at. For LLM workloads the ladder steps concurrent sequences; for vision-pipeline mode it steps camera streams. Each landmark records the count and the memory utilisation at that step. near_limit is the highest count whose utilisation sits in the memory tight band (85 % through 100 % inclusive). A genuinely empty comfortable rung is { sequences: 0, reason: "no configuration below the comfortable threshold" } rather than null; fails_at always carries the utilisation that placed that rung. requested_position states whether the caller's request sits below comfortable, between comfortable and near limit, at the modeled ceiling, or above what fits; the utilisation in that statement is always the requested configuration's own figure.

Alternative quantisations list weights_basis as either published_file_size (class A artefact on disk) or parameter_count (registry parameters × bytes per parameter).

11. Evidence classes and the confidence rule

Every figure carries one of five evidence classes.

ClassMeaningUsed here for
AVendor specificationModule memory capacity; config.json / safetensors-index architecture fields; published quantised artefact sizes; fixed-width bytes-per-parameter (FP16, FP8)
BEdgeAIStack measurementNot used by this engine (no EdgeAIStack-run tokens/s benchmarks yet)
CExternal measured benchmarkJetson AI Lab archived tokens/s measurements
DEdgeAIStack modelRegistry-median bytes-per-parameter for block quants; KV-cache and vision-tower parameter formulas; image-tokens-per-image bases; derived head_dim
EEngineering heuristicRuntime overhead constants; OS headroom; reserve percentage

Confidence: a result is MEDIUM when the weight figure came from a published artefact (class A) and module capacity is known; otherwise LOW. This is deliberately conservative — every result mixes at least one class D/E part (KV cache, runtime, OS, reserve), so nothing from this engine is ever labelled HIGH. The software constraint for a context beyond max_position_embeddings is HIGH confidence on its own (it is a direct comparison against a class-A config field), but does not raise the overall result above MEDIUM.

12. Model registry

22 rows: 10 LLM, 9 VLM, 3 ASR. Every field is copied from the publisher's config.json, safetensors index or GGUF repository listing; gated repos (meta-llama, google) are read from a byte-identical community mirror (unsloth, NousResearch) and the mirror is named in the source. Full detail per model, including quantised artefact sizes and Jetson tokens/s measurements: /model-fit/.

ModelTypeParamsLayersKV headsHead dimMax ctxMeasured quantsSource
Llama 3.2 1B InstructLLM1.24 B16864131,072Q4, INT8Hugging Face (mirror: unsloth/Llama-3.2-1B-Instruct, identical weights to meta-llama repo) · hf:unsloth/Llama-3.2-1B-Instruct · verified 2026-09-07
Llama 3.2 3B InstructLLM3.213 B288128131,072Q4, INT8Hugging Face (mirror: unsloth/Llama-3.2-3B-Instruct) · hf:unsloth/Llama-3.2-3B-Instruct · verified 2026-09-07
Llama 3.1 8B InstructLLM8.03 B328128131,072Q4, INT8Hugging Face (mirror: NousResearch/Meta-Llama-3.1-8B-Instruct) · hf:NousResearch/Meta-Llama-3.1-8B-Instruct · verified 2026-09-07
Qwen2.5 1.5B InstructLLM1.54 B28212832,768Q4Qwen (Alibaba) · hf:Qwen/Qwen2.5-1.5B-Instruct · verified 2026-09-07
Qwen2.5 3B InstructLLM3.09 B36212832,768Q4Qwen (Alibaba) · hf:Qwen/Qwen2.5-3B-Instruct · verified 2026-09-07
Qwen2.5 7B InstructLLM7.61 B28412832,768Q4Qwen (Alibaba) · hf:Qwen/Qwen2.5-7B-Instruct · verified 2026-09-07
Qwen2.5-VL 3B InstructVLM3.755 B362128128,000Q4Hugging Face · hf:Qwen/Qwen2.5-VL-3B-Instruct · verified 2026-09-07
Qwen2.5-VL 7B InstructVLM8.292 B284128128,000Q4Hugging Face · hf:Qwen/Qwen2.5-VL-7B-Instruct · verified 2026-09-07
Phi-3.5-mini InstructLLM3.8 B323296131,072Q4Microsoft · hf:microsoft/Phi-3.5-mini-instruct · verified 2026-09-07
Phi-4-mini InstructLLM3.8 B328128131,072Q4Microsoft · hf:microsoft/Phi-4-mini-instruct · verified 2026-09-07
Gemma 2 2B ITLLM2.614 B2642568,192Q4Hugging Face (mirror: unsloth/gemma-2-2b-it, identical weights to google/gemma-2-2b-it) · hf:unsloth/gemma-2-2b-it · verified 2026-09-07
Gemma 3 4B ITVLM4.3 B344256131,072Q4Hugging Face (mirror: unsloth/gemma-3-4b-it, identical weights to google/gemma-3-4b-it) · hf:unsloth/gemma-3-4b-it · verified 2026-09-07
SmolVLM 256M InstructVLM0.2565 B303648,192INT8Hugging Face · hf:HuggingFaceTB/SmolVLM-256M-Instruct · verified 2026-09-07
SmolVLM 500M InstructVLM0.5075 B325648,192INT8Hugging Face · hf:HuggingFaceTB/SmolVLM-500M-Instruct · verified 2026-09-07
SmolVLM 2.2B InstructVLM2.246 B24326416,384Q4Hugging Face · hf:HuggingFaceTB/SmolVLM-Instruct · verified 2026-09-07
LLaVA 1.5 7BVLM7.063 B32321284,096Q4Hugging Face · hf:llava-hf/llava-1.5-7b-hf · verified 2026-09-07
VILA 1.5 3BVLM3.148 B32201284,096none publishedHugging Face · hf:Efficient-Large-Model/VILA1.5-3b · verified 2026-09-07
VILA 1.5 8B (Llama-3)VLM8.494 B3281288,192none publishedHugging Face · hf:Efficient-Large-Model/Llama-3-VILA1.5-8B · verified 2026-09-07
Whisper smallASR0.244 B121264448none publishedOpenAI · github:openai/whisper/README.md · verified 2026-09-07
Whisper mediumASR0.769 B241664448none publishedOpenAI · github:openai/whisper/README.md · verified 2026-09-07
Whisper large-v3ASR1.55 B322064448none publishedOpenAI · github:openai/whisper/README.md · verified 2026-09-07
Mistral 7B Instruct v0.3LLM7.248 B32812832,768Q4Hugging Face · hf:mistralai/Mistral-7B-Instruct-v0.3 · verified 2026-09-07

13. Module memory

Installed memory per Jetson module, from NVIDIA's technical specifications table (class A). jetson_orin_nano_super is an alias of jetson_orin_nano (same silicon, same memory) and is not listed separately.

ModuleMemorySource
Jetson Orin Nano 8GB8 GBNVIDIA · nvidia.com:jetson-modules-spec-table · verified 2026-09-07
Jetson Orin NX 8GB8 GBNVIDIA · nvidia.com:jetson-modules-spec-table · verified 2026-09-07
Jetson Orin NX 16GB16 GBNVIDIA · nvidia.com:jetson-modules-spec-table · verified 2026-09-07
Jetson AGX Orin 32GB32 GBNVIDIA · nvidia.com:jetson-modules-spec-table · verified 2026-09-07
Jetson AGX Orin 64GB64 GBNVIDIA · nvidia.com:jetson-modules-spec-table · verified 2026-09-07
Jetson Thor T5000128 GBNVIDIA · nvidia.com:jetson-modules-spec-table · verified 2026-09-07
Jetson T400064 GBNVIDIA · nvidia.com:jetson-modules-spec-table · verified 2026-09-07

14. Documents

DocumentSource lineCovers
Mastering LLM Techniques: Inference OptimizationNVIDIA Technical Blog · verified 2026-09-07KV cache size formula (§4).
ggml quantization block formatsggml-org (llama.cpp) · github:ggml-org/llama.cpp/ggml-common.h §block_q8_0 · verified 2026-09-07Q8_0 block layout, the basis for the registry-median bytes-per-parameter derivation (§3).
CUDA for Tegra — Memory ManagementNVIDIA · nvidia-docs:cuda-for-tegra-appnote §Memory Management · verified 2026-09-07Unified CPU/GPU memory statement (§7).
Jetson Orin technical specificationsNVIDIA · nvidia.com:jetson-modules-spec-table · verified 2026-09-07Orin family module memory (§12).
Jetson Thor technical specificationsNVIDIA · nvidia.com:jetson-modules-spec-table · verified 2026-09-07Thor T5000/T4000 module memory (§12).
Small Language Models tutorial (archive)NVIDIA Jetson AI Lab · class C · verified 2026-09-07Jetson Orin Nano / AGX Orin tokens/s for Llama 3.2 1B/3B (MLC).
Jetson benchmarks (archive)NVIDIA Jetson AI Lab · class C · verified 2026-09-07Jetson Orin Nano Super tokens/s across several models.
Hugging Face config.json, model.safetensors.index.json, and the model-repository blob API (?blobs=true)per publisher · class A · verified 2026-09-07Architecture fields, parameter counts and quantised-artefact file sizes for every registry row (§11).

15. What invalidates a result

  • A new model release or GGUF re-quantisation. Every result URL carries mv (method version) and dv (dataset version); when either differs from the current values the result page says the data has changed since the link was made.
  • A different runtime than assumed. The runtime-overhead table is an engineering heuristic (§6); a real llama.cpp build with a larger n_batch, or vLLM's pre-allocated gpu_memory_utilization, can use meaningfully more or less than the stated base + percentage.
  • Container and driver overhead. The OS headroom figure (§7) is a bare-JetPack baseline; a Docker/L4T container runtime, X11/Wayland desktop session or other resident services add to it. The coexisting_mb input exists for exactly this.
  • Context beyond max_position_embeddings. The engine still computes a KV cache for it and flags a class-A software constraint, but tokens/s and quality beyond the trained context are not modelled at all.
  • No GGUF for llama.cpp. VILA 1.5 3B and 8B have no published GGUF as of this dataset; the engine reports UNSUPPORTED for that runtime rather than a number.
  • Vision-tower and image-token estimates. Any model whose vision tower has no published mmproj/file size uses the class-D 12×L×H² estimate (§5), which can be off by 20–30% against the model's real parameter count.

16. Limitations and gaps

  • No Jetson-measured memory rows yet. The registry's jetson_measurements carry tokens/s (mostly class C, from Jetson AI Lab archives), not measured RAM footprints; every memory total on this site is computed from the formulas above, not read off a running board. Validate with sudo tegrastats.
  • Gated repositories. meta-llama and google repos on Hugging Face return 401 for unauthenticated reads; the registry uses byte-identical community mirrors (unsloth, NousResearch) instead and names the mirror in the source.
  • VLM parameter counts include the vision tower. A model card's headline size (e.g. “Qwen2.5-VL 3B”) usually names the text backbone only; the registry's params_b is the full safetensors total, so it reads higher than the marketing name. The engine separates text and vision parameters internally (§3, §5) so weight pricing is not double-counted.
  • Non-Jetson platforms. The engine falls back to the shared memory-hardware table for module capacity (class D) when a platform is not in the Model Memory Fit module registry; that path is LOW confidence.
  • No accuracy or quality modelling. A quantisation that fits says nothing about output quality at that quant; that tradeoff is out of scope for this engine.

17. Method changelog

MethodDatasetDateChange
1.02026-09-072026-09-07First release. 22-model registry (10 LLM, 9 VLM, 3 ASR) with published architecture and quantised-artefact sources; 7-module Jetson memory table; weights, KV cache, vision tower, runtime overhead, OS headroom and reserve on the budget shared with Camera Stream Capacity; FITS/TIGHT/DOES_NOT_FIT verdict; headroom ladder over context and concurrency.
1.02026-09-142026-09-14Vision mode: decode buffers resolve 1080p (and other shorthand resolutions) to the same per-stream buckets as Camera Stream Capacity; preprocess buffers (32 MB per stream) included in the shared budget so node-level totals match Camera Stream Capacity.
1.12026-09-072026-09-17Landmarks aligned with Camera Stream Capacity (comfortable, near_limit, modeled_ceiling, fails_at) plus requested_position; KV cache on budget.parts; alternative quants expose weights_basis instead of a measured flag.
1.22026-09-072026-09-18Headline verdict follows rollupFromLegacy so a software FAIL/UNSUPPORTED cannot read FITS; memory boundary frozen at under 85 % FITS, 85–100 % inclusive TIGHT, above 100 % DOES NOT FIT.
1.2.12026-09-072026-09-18near_limit is the highest count in the memory tight band; empty comfortable is {sequences:0, reason:…} rather than null; fails_at.utilization is always numeric when the rung exists.
1.2.22026-09-072026-09-20ASR serving budget prefers the publisher VRAM landmark (OpenAI Whisper large ~10 GB) over llama.cpp weights×width; 8 GB Nano FP16 large is DOES NOT FIT.
1.2.32026-09-072026-09-20The published ASR landmark became a part of the budget (§6a) instead of a patch on the total: the serving overhead it implies is measured once at the publisher’s configuration (FP16 weights, one sequence) and carried on every quantisation, headroom step, alternative and module row. Whisper large-v3 FP16 on an 8 GB Nano no longer publishes a 6.1 GB FITS alternative or 27 concurrent sequences beside a 10 GB DOES NOT FIT, and subtotal + reserve = total holds for ASR again. A configuration above capacity reports requested_position.state = exceeds, never near_limit. The overhead is calibrated against a fixed publisher reference, not against your own inputs, so every deployment cost you add — reserve, OS, co-located memory, concurrency, a heavier runtime — raises the total instead of eating into the term.
1.2.42026-09-072026-09-28Present-invalid inputs are rejected; absent inputs default and are recorded (WP-01): a value that is stated but malformed — mode: vision with a named language or speech model (it used to answer for YOLOv8n), a vision model_family or variant that is not on record (it used to FIT at 0 MB of weights; give custom_params_m to size an unregistered detector), a vision precision outside fp32 / fp16 / int8 — returns VALIDATION_ERROR naming the field instead of being replaced by a default; a field that is not stated takes its documented default and is listed in provenance.defaulted. A catalogued detector with no parameter count or weight size on record now answers UNKNOWN (the memory constraint is UNKNOWN with no required figure) instead of FITS at 0 MB of weights.
1.2.52026-09-072026-09-28Input rules (WP-01 remainder, WP-02): mode, quant, kv_quant, runtime, os (an unknown value used to become headless), context_tokens, sequences, images_per_prompt, reserve_pct and coexisting_mb (no longer clamped), the custom-architecture numbers and the vision streams, batch_size, tracker_algorithm and deployment_mode (an unknown value used to add 0 MB) are checked. Unknown input keys are rejected. No formula changed.
1.4.02026-09-072026-09-29elimination authority (#263, owner ruling 2026-09-29). The memory constraint FAILs, and the headline reads DOES_NOT_FIT, only when the exact floor — the weights at the format's storage width, the KV cache for the text context and co-located memory — exceeds the module; when only the estimated overheads take the total over it is REQUIRES VALIDATION, memory_verdict still reads DOES_NOT_FIT and the headline UNKNOWN (was DOES_NOT_FIT). Every row publishes elimination_authority.
1.3.02026-09-072026-09-29Vision mode reads the one task-precision resolver (owner ruling of 2026-09-29; lead decision the same day). With no precision named, a YOLO11-seg or YOLO11-pose model is sized at FP16 — INT8 on an INT8-only accelerator, with the reason — and every other model at INT8, as before. Was the literal INT8 for every vision model. Listed in defaulted; a task-specific default is marked workload.precision_default (DERIVED) with an assumption.
1.5.02026-09-072026-09-29The Edge TPU's on-chip SRAM is a parameter cache, not a memory-fit ceiling (#282; Google, Edge TPU Compiler — coral.ai/docs/edgetpu/compiler, “The Edge TPU has roughly 8 MB of SRAM that can cache the model’s parameter data,” and “If some of the model data cannot fit into the Edge TPU RAM, then it must instead be fetched from the external memory at run time”). A Coral model's memory check now PASSes whatever its compiled size: at or under the cache it is fully cached on chip; over it, the remainder streams from host memory at a documented speed cost, reported as a material risk (presentation_verdict FIT_WITH_RISKS) rather than a fit failure — how much slower is Compute Fit's question. No row built on this figure carries eliminating authority. Was: weights over ~8 MB read DOES_NOT_FIT, with a warning that conflated this with the separate, unrelated mechanism by which an unsupported operation runs on the host CPU (compiler graph partitioning) — the two are no longer conflated. With memory no longer failing a large Coral model, a stated vision precision is now judged on its own (a language quant is not judged here): against the same sourced precision-support registry Compute Fit reads, a vendor-documented exclusion (class A — Coral FP32/FP16, Hailo-8/8L FP32/FP16) is UNSUPPORTED and NO FIT; one no vendor document settles (class E) is REQUIRES VALIDATION, never eliminating; a supported value, or one never stated, adds no row and is never refused.

Method changes bump the method version; registry updates (new models, new measurements, corrected sources) bump the dataset version. Both appear in the citation block under every result and in the provenance object of every API response.

Run it on your model.

Every result carries its constraints, source lines and a permanent link. Browse the precomputed tree at /model-fit/, the raw registry at model-memory.json, or open the live engine below.

OPEN MODEL MEMORY FIT →