Running local models day to day
Serving, securing, benchmarking and living with a local model — the operational questions that come after it loads.
Getting a model to load is the easy half, and it is the half every guide covers. The questions that follow are the ones that decide whether you keep using it: which of nine files in the repository you should have downloaded, why the same model that felt instant in a demo takes four seconds a paragraph on your machine, how much of the disk you have quietly given to three copies of the same weights, and what to do when the runtime refuses to load something it loaded yesterday.
These pages answer those. Where a number would help, it is either taken from a primary source and named in the sentence, or derived here from inputs you can check — a published memory bandwidth, a file size in a repository listing, a parameter count. Nothing on these pages is a benchmark somebody ran on hardware you do not have; where the honest answer is “measure it”, you get the command.
GGUF Filename Conventions on Hugging Face, Decoded
How to read architecture, size, fine-tune, quantization and shard index straight off a GGUF filename, and which parts of the name are convention rather than specification.
8 min read
Choosing Between Q4_K_M and Q4_K_S
What the M and S actually change inside a Q4_K model, derived from llama.cpp's per-tensor type assignment, and what the resulting size and quality gap is worth.
8 min read
What to Expect From Pure CPU-Only Local Inference
An upper bound on CPU generation speed derived from memory bandwidth and model file size alone, with the arithmetic shown and the command to measure the real figure.
9 min read
Why Your Local Model Feels Slower Than ChatGPT on Good Hardware
The gap is not hardware quality — it is that you are running a batch of one against a fleet that batches hundreds, and the arithmetic of that is decisive.
8 min read
Budgeting Disk Space for Keeping Several Local Models Around
A worked disk budget for a five-model library built from published file sizes, plus the duplicate copies three common tools create without telling you.
9 min read
Choosing a Quantization Level by Use Case
Why code and structured output degrade faster under quantization than open-ended chat, argued from what quantization does to the token distribution.
9 min read
Running Two Local Models Side by Side as a Fallback Pair
How to keep a fast primary and a stronger fallback resident at once, with the VRAM budget derived from weights plus KV cache for both.
9 min read
Verifying a Downloaded GGUF File's Checksum
Get the SHA256 that Hugging Face already publishes for a GGUF file, compute your own, and compare the two before the file is ever loaded.
8 min read
What Happens When You Quantize an Already-Quantized Model
Why llama-quantize refuses a quantized input by default, what --allow-requantize actually does to the weights, and what to do instead.
8 min read
Running a Local Model From a Portable USB Drive
A llamafile-based setup that runs entirely off a USB stick on an unmodified host, including the 4 GB executable ceiling and the filesystem choice that decides everything.
8 min read
Benchmarking Your Own Local Model's Tokens per Second
Produce a tokens-per-second figure for your own machine that you can defend, using the runtime's own timing fields rather than a stopwatch.
9 min read
Context Length or Quantization: Which Wins the Same VRAM Budget
Works out how many extra context tokens one quantization tier actually buys, from published parameter counts and attention geometry.
10 min read
Why the First Token Takes Longer Right After a Model Loads
Separates the four one-time costs paid on a first request: disk read, PCIe transfer, driver context creation and buffer allocation, and sizes each from published rates.
10 min read
GPU Power Draw While a Local Model Sits Idle but Loaded
Why a card with weights resident cannot drop to its lowest power state, what that costs per year, and how to measure your own figure.
9 min read
Thermal Throttling Running a Local Model on a Gaming Laptop
Reads the throttle reason flags nvidia-smi reports during a long generation and separates a thermal cap from a power cap, which have different fixes.
10 min read
Serving Concurrent Requests From One llama.cpp Server
How --parallel divides one KV cache into slots, the per-slot context arithmetic that decides how many fit, and what happens to the request that finds them all busy.
11 min read
Merging a LoRA or Keeping It Separate: Choosing for Local Deployment
The disk, memory and swap-flexibility consequences of baking an adapter into the weights versus loading it at runtime.
10 min read
The Difference Between Loading and Warming Up a Local Model
Why weight loading and the first forward pass are separate phases, what each one actually does, and why memory mapping moves work between them.
9 min read
What Running a Local LLM Actually Costs in Electricity
A per-hour and per-million-token electricity cost derived from stated wattage and a stated, dated tariff, with every input labelled.
10 min read
When a Local Model Silently Truncates Context You Thought It Kept
The log lines and response fields that reveal a context ceiling lower than you configured, and the four places the ceiling actually comes from.
10 min read
Why Two Quantization Tools Produce Different File Sizes for the Same Model
A quant name is a recipe rather than a byte layout, and the tensors most often given a different recipe are the two largest ones outside the layers.
10 min read
Accessing a Local Model Server From Another Device on Your Network
Binding a local model server to the network, with the authentication it does not have by default put in before the bind rather than after.
11 min read
Securing a Local Model Server Exposed to Your LAN
What changes the moment a local model server stops listening on loopback, and the three controls that put it back under your authority.
9 min read
A Local LLM Setup for Under $500: What the Budget Actually Buys
The arithmetic from a VRAM budget to a model size, and an honest method for pricing the hardware today rather than a number that was true last quarter.
10 min read
Why “Free” Local Inference Still Has a Real Cost
The zero-marginal-cost claim is a statement about variable cost only, and the fixed and idle costs it omits are usually the larger half.
9 min read
GPU Memory Not Freed After a Local Model Crashes
Why nvidia-smi can report gigabytes in use with no processes listed, and the order in which to reclaim it without rebooting.
9 min read
Running a Local Model as a systemd Service That Survives Reboot
A unit file that restarts a model server after a crash and comes back after a reboot, including the two defaults that quietly stop it doing either.
10 min read
When a GPU Supports Both INT8 and FP8, Which One Wins
Which tensor-core generation accelerates which 8-bit format natively, why their published peak rates are identical where both exist, and why that barely matters for single-stream decoding.
9 min read
A Local Model Won’t Stop Generating
Why a local server generates forever by default, how to tell an unrecognised stop token from a missing length cap, and the fix for each.
9 min read
Why a Local Model’s Output Isn’t Identical Run to Run at Temperature Zero
Greedy decoding is deterministic given identical logits; the logits are not identical, because the kernels choose their reduction order from the batch shape.
10 min read
Sampling Settings for a Local Coding Assistant
Why code generation wants a narrow distribution, derived from the cost of a single wrong token, and what each sampler parameter does to that distribution.
9 min read
What GPU Utilization Percent Actually Means During Local Inference
The metric is a duty cycle over kernel execution time, not a measure of how much of the GPU is working, which is why decode pins it at 100% while using a fraction of the hardware.
9 min read
Running a Local Model Behind a Reverse Proxy for Remote Access
A Caddy and an nginx configuration that front a local model server with TLS, including the buffering and timeout settings that silently break streaming.
10 min read
Other topics
- LLM fundamentals & architecture
- Tokens, tokenization & context windows
- Prompt engineering
- Reasoning models & test-time compute
- Multimodal AI: vision, audio, video
- RAG & retrieval
- Embeddings & vector search
- AI agents & tool use
- Structured output & function calling
- Fine-tuning & post-training
- Local inference errors, string by string
- Testing code that calls an LLM
- Snapshot and property testing for model output
- Regression suites for prompts
- Eval gates in CI
- Flaky tests against a model
- Determinism and the cost of testing
- Contract and streaming tests
- Testing tool calls and retrieval
- Inference, serving & latency
- Rolling out a prompt change
- Testing AI systems in practice
- Forecasting a time series
- Machine learning on tabular data
- Geospatial data and models
- Understanding audio that is not speech
- Understanding video
- Core computer vision tasks
- Machine learning on graphs
- Point clouds and 3D
- Evaluation, benchmarks & LLM-as-judge
- Sensor and IoT data
- Logs and event streams
- Models over biological sequences
- Machine learning on molecules
- Embedding and searching code
- Extracting invoices and purchase orders
- Receipts, statements and tax forms
- Insurance policies and contracts
- Deeds, court filings and patents
- Extracting from medical records
- Observability & LLMOps
- CVs, certificates and identity documents
- Shipping, customs and technical documents
- Meetings, email, chat and filled-in forms
- Building an extraction pipeline
- Business, property and inspection documents
- Contract clauses and insurance claims
- Regulated and compliance documents
- Consumer, travel and closing documents
- Mapping one chat API onto another
- SDK and framework migrations
- Hallucination & failure modes
- Re-embedding and model deprecation
- Cutting over between providers
- Parity gaps, shims and legacy endpoints
- Moving between model versions
- Migrating vector stores and caches
- Mapping capabilities and parameters
- Migrating pipelines and agents
- Contracts, runbooks and rollback
- Auditing a codebase before a cutover
- Compliance and fine-tune migration
- LLM cost engineering
- Routing, cost tracking and multi-tenancy
- What a migration does to your prompts
- AI security & prompt injection
- Privacy, compliance & data residency
- AI governance, policy & society
- Building reliable AI applications
- AI hardware, GPUs & compute
- Open-weight models & local inference
- AI for developers & coding agents
- AI in industry: vertical playbooks
- AGI, superintelligence, alignment & the long future
- Machine learning foundations
- NLP fundamentals & classical tasks
- Data engineering for AI
- Synthetic data & dataset curation
- AI product design & UX
- Search, ranking & recommendation
- Enterprise adoption & change management
- AI careers, skills & teams
- Reading AI research
- AI in science & discovery
- Robotics & embodied AI
- AI economics, markets & business models
- AI myths, hype & media literacy
- Context engineering
- Shipping AI features: patterns & anti-patterns
- Build it: end-to-end AI tutorials
- Python for AI: hands-on recipes
- TypeScript, React and the web
- Frameworks and SDKs
- Errors and troubleshooting
- AI facts, numbers and statistics
- The history of AI
- The maths behind AI
- Architectures beyond the transformer
- Reinforcement learning
- Diffusion and generative media
- Speech, audio and voice engineering
- Benchmarks, one at a time
- AI search visibility
- Infrastructure and operations
- Databases and storage for AI
- Knowledge graphs and structured knowledge
- Classical ML in production
- Regulation, jurisdiction by jurisdiction
- Prompt recipes and pattern library
- AI for people who do not write code
- Writing, media and creative work
- Edge and on-device AI
- Interpretability and model internals
- Field notes
- OpenAI model behaviour
- Claude model behaviour
- Gemini model behaviour
- Llama model behaviour
- Mistral model behaviour
- Qwen model behaviour
- DeepSeek model behaviour
- Cohere model behaviour
- Grok model behaviour
- Small model behaviour
- Hybrid model architectures
- Token cost by language and script
- Transliteration, romanization and script handling
- Locale-correct output
- Multilingual generation quality
- Multilingual pipelines
- The EU AI Act, article by article
- AI under the GDPR and EU data law
- US AI regulation, state and sector
- International AI governance and standards
- AI litigation and enforcement
- Running AI workloads on AWS
- Running AI workloads on Google Cloud
- Running AI workloads on Azure
- AI at the edge: Workers, Vercel and Netlify
- Serving models on Kubernetes
- Operating AI infrastructure
- Quantization formats and what they cost
- llama.cpp, flag by flag
- Ollama and the desktop local-model runtimes
- Local models on Apple Silicon
- Hardware for local inference
- Running speech and embedding models locally
- Model files, adapters and conversion
- VRAM arithmetic for local models