gpu-unlock and the local Nemotron E4B

October 26, 2026 · actual source checks, host compilation and local inference measurements.

No unlock speedup was measured. Both RTX 3090 GPUs have a supported device ID, but this pinned module fails to compile on the host's Linux 5.4 kernel. Its early-boot/reset mechanism cannot be tested safely as a per-process change beside the running demo. The benchmark below uses the existing, unchanged local LLM.

What completed

CheckActual resultScope
Source and device-ID inspectionRTX 3090 / GA102, 10de:2204Two devices; both bound to the NVIDIA driver
Upstream CPU/mock suite5 top-level tests passedIncludes 6 C component/mock programs; no physical GPU unlock or downloaded firmware
Compile against installed kernel headersFailed, exit 2Linux 5.4.0-208: missing pci_dev_lock/pci_dev_unlock; later aperture header also absent
Existing local 4B inference9 measured requests + 3 excluded warm-upsThree prompt sizes, real llama.cpp SSE, fixed 96-token output; shared GPU
Unlock / boot / driver interventionNot performedNo resets, service changes, power/clock changes or installation

Measured local-LLM baseline

Model: Nemotron-3.5-Bolt-E4B-Q4_K_M.gguf, Q4_K_M; concurrency 1, temperature 0, seed 20261026, prompt caching off. Medians of three repetitions per row, excluding a separate warm-up. All measured replies generated 96 tokens with zero cached prompt tokens. Outputs matched across repeats within each row.

InputPrompt tokensFirst content, msPrefill tokens/sDecode tokens/sTotal client time, ms
short_prompt42135.3323.838.32645.6
production_system1293619.92126.638.33109.7
long_prefill2331859.92727.135.13598.3

Shared-GPU qualification: independent training continued on both GPUs. During measured requests GPU 0 utilization ranged from 98% to 100% (sample median 100%). The ASR/browser regression suite had finished before these requests started, but this was not a dedicated idle GPU. Do not compare these numbers with an idle after-unlock run.

First content includes local HTTP/server scheduling. Prefill and decode use llama.cpp's own timers. A small prompt's tokens/s includes large fixed overhead, so compare the same row across A/B conditions. Column medians do not necessarily add up. The 96-token cap is for throughput measurement, not an acceptable answer-length policy.

Every measured request
CaseRepeatFirst content, msServer prefill, msDecode tokens/sOutput tokens
short_prompt0135.3129.731.796
short_prompt157.153.038.996
short_prompt2136.4132.238.396
production_system0347.4339.837.296
production_system1645.3634.839.096
production_system2619.9608.038.396
long_prefill0915.3909.635.196
long_prefill1747.6742.333.796
long_prefill2859.9854.838.496

Why the actual intervention remains untested

The upstream module changes Ampere instruction-rate selectors before the stock driver attaches and performs a PCIe function reset. It skips an already bound device. Its primary expected benefit is floating-point matrix/prompt processing, rather than an equivalent improvement to quantized serial token generation. See the pinned upstream explanation, device/driver checks and selector/reset code.

Inference for this application: benchmark Q4 prefill and decode separately. Dense-BF16 GEMM gains do not establish a Q4 assistant speedup. First obtain an uncontended baseline; after arranging maintenance, compare on the same compatible kernel, driver, exact model, clocks, thermal state and prompts with only the unlock condition changed. A kernel upgrade between conditions would confound the result.

Reproduce the unchanged baseline on another host

python benchmark_local_4b.py --url http://127.0.0.1:8799   --robby-source /path/to/Humaneness-Voice/robby   --llama-source /path/to/llama.cpp   --upstream-source /path/to/gpu-unlock   --model-file /path/to/Nemotron-3.5-Bolt-E4B-Q4_K_M.gguf   --label baseline-new-run --out baseline-new-run.json

The portable benchmark never installs gpu-unlock or starts/stops a server. It refuses to overwrite existing results. The exact executed script retains the original host defaults; the portable version adds path options and sanitizes process paths without changing requests or timing logic. Use the full A/B procedure for a future authorized maintenance window.

Version and evidence

GPU unlock: af28cbbfd3d922a659227ecfb7369adfd924cf03
llama.cpp: 5d9e5ac30e469d44c0a5a52556de0ead03aaa5b0
GGUF SHA256: c8af2b8aea10a690a1d9491db744a9446660173cb38fc489612b556615a69612
Driver: 550.54.15 · Linux: 5.4.0-208-generic

Inspection receipt · Compile failure · CPU/mock tests · Raw baseline with GPU samples.

No private microphone audio, speaker embeddings, API credentials or unrelated user logs are included. This study directory used only a few megabytes and downloaded no model weights or firmware. The actual unlock experiment remains outstanding; no numerical hardware speedup is claimed.