01 · THE CASE

Three good reasons, and the limits nobody mentions.

A local model is worse than a frontier hosted model at almost every task. It is also the only option when the data cannot leave the machine — and that trade is worth understanding precisely rather than emotionally.

What local genuinely gives you

  • The data does not leave. No terms of service, no retention policy, no question about training. For client material, medical notes, legal drafts or anything under an NDA, this is the whole argument.
  • It works with no connection. On a plane, in a lab, on a site with no signal, or during an outage.
  • No per-token cost and no rate limit. Bulk classification, batch summarisation and repeated experiments become free after the electricity.
  • It cannot be deprecated underneath you. The model you saved works the same in two years. Hosted models change behaviour without notice.

What it does not give you

  • Frontier reasoning. A model that fits in consumer VRAM is not competitive with the largest hosted models on hard reasoning, long-horizon coding or obscure knowledge. Expect a capable assistant, not a replacement.
  • Speed on long context. Processing a large document is where consumer hardware feels slowest, and it is exactly what people want local models for.
  • Fewer confident errors. Smaller models hallucinate more, not less. Local does not mean careful.
  • A free lunch on RAM. Whatever the model occupies is memory your other work does not get.

02 · THE BUDGET

Memory decides everything. Here is the arithmetic.

Model size in billions of parameters, multiplied by the bytes per parameter your quantisation uses, plus room for the context window. That is the entire calculation.

Model sizeAt 4-bitAt 8-bitRealistic on
3Babout 2 GBabout 3.5 GBAny modern GPU, or CPU only
7B to 8Babout 4.5 GBabout 8.5 GB8 GB VRAM comfortably; 16 GB RAM on CPU
13B to 14Babout 8 GBabout 15 GB12 GB VRAM; slow but usable on CPU
30B to 34Babout 19 GBabout 36 GB24 GB VRAM, or a unified-memory laptop
70Babout 40 GBabout 75 GBTwo large GPUs, or 64 GB of unified memory, slowly

Add headroom on top of every figure. The key-value cache for the context window grows with how much text you feed in, and a long context on a large model can consume several more gigabytes. A model that just fits with an empty context will fail halfway through a long document.

Quantisation, in one paragraph

Weights are stored at reduced precision so the model fits in less memory. Going from 16-bit to 8-bit is nearly free in quality. 8-bit to 4-bit is the sweet spot most people run: a small, usually acceptable quality loss for roughly half the memory. Below 4-bit, degradation becomes obvious — instruction-following slips first, then coherence on long outputs. A larger model at 4-bit generally beats a smaller model at 8-bit, which is the single most useful heuristic in this whole area.

GPU or CPU? A GPU is roughly an order of magnitude faster for generation. CPU inference is entirely usable for 3B to 8B models if you can accept reading speed rather than instant answers. Apple Silicon and other unified-memory designs are unusually good here, because the memory is shared and generous.

03 · THE TOOLS

Four ways to run the same model files.

ToolShapeBest forTrade-off
OllamaCommand line plus a local HTTP APIDevelopers. One command to pull and run, and an API other tools can target.Less granular control than raw llama.cpp
LM StudioDesktop applicationTrying models, comparing them, and non-technical use. Model browser and chat built in.Graphical workflow, heavier install
llama.cppThe underlying engineMaximum control over quantisation, offload and sampling. Runs anywhere.You assemble the workflow yourself
Jan / GPT4AllDesktop applicationsA private assistant for someone who does not want a terminalFewer knobs, slower to get new model formats

All four run the same quantised model files, so the choice is about workflow rather than capability. A common arrangement is Ollama as the engine with a separate chat interface pointed at its API, which keeps the model server and the interface independent.

04 · THE WALKTHROUGH

From nothing to a working model in about ten minutes.

SHELL · OLLAMA, FIRST RUN
# Pull a model sized to your hardware and start chatting
ollama run llama3.1:8b

# List what you have downloaded, and how much space it uses
ollama list

# Remove one you no longer want
ollama rm llama3.1:8b

# Serve the local API for other tools to use
ollama serve

The API listens on localhost, which is what editor plugins, note apps and scripts connect to. Nothing leaves the machine.

SHELL · CALL THE LOCAL API
curl http://localhost:11434/api/generate -d '{
  "model": "llama3.1:8b",
  "prompt": "Summarise this in three bullet points: ...",
  "stream": false
}'

Choosing a first model

  • General assistant, 8 GB VRAM — a current 7B to 8B instruction-tuned model at 4-bit. This is the default answer and it is a good one.
  • Code — a code-specialised model of the same size. Noticeably better at completion and refactoring than a general model of equal size.
  • Small and fast — a 3B model for classification, extraction, tagging and other structured work where you do not need conversation.
  • Best quality you can fit — go up in parameters before you go up in precision. Larger at 4-bit beats smaller at 8-bit.

Check the licence before you build on it. Open-weight is not the same as open-source, and several popular families restrict commercial use or impose conditions on derived models. This matters the moment a hobby project becomes a product.

05 · TUNING

Four settings that decide whether it feels usable.

  • GPU layer offload. The most important setting on a machine where the model does not fully fit. Push as many layers onto the GPU as VRAM allows; the remainder runs on CPU. Going one layer too far causes an out-of-memory failure, so step down until it is stable.
  • Context window. Larger contexts cost memory and slow down generation. Set it to what you actually need — 4K for chat, more only when you are genuinely feeding in documents.
  • Batch size for prompt processing. Affects how quickly a long prompt is ingested, separately from how fast tokens come out. If pasting a large document feels slow but replies are fine, this is the setting.
  • Quantisation level. If it does not fit, drop from 5-bit to 4-bit before you drop to a smaller model. Below 4-bit, prefer a smaller model instead.

Speed expectations

Setup7B to 8B at 4-bitFeels like
Modern discrete GPU, fully offloadedFast, well above reading speedComparable to a hosted chat interface
Older or smaller GPU, partial offloadAround reading speedUsable for conversation, tedious for long output
CPU only, modern multi-coreBelow reading speedFine for background and batch work, not for chat
Unified memory laptopComfortably above reading speedThe best experience per watt available today

If generation is far slower than the table suggests, the model is almost certainly spilling out of VRAM into system memory. Check the layer offload before blaming the hardware — this one misconfiguration accounts for most disappointing first attempts.

06 · THE VERIFICATION

Prove the model runs without a network.

This is the step that separates a genuinely local setup from a local interface in front of a remote API. Do it once, deliberately.

STEP—01 Download everything first

Pull every model you intend to use while connected. Model files are the only thing that genuinely needs the network.

STEP—02 Disconnect properly

Turn off Wi-Fi and unplug the cable. Airplane mode is fine. Do not rely on a firewall rule for the test itself.

STEP—03 Run a real prompt

Not a one-word test. Ask for something long enough that a silent fallback to a remote service would fail visibly.

STEP—04 Watch the resource meters

GPU or CPU utilisation should climb while it generates. If nothing moves locally, something else is answering.

Keeping it offline afterwards

  • Block outbound network access for the runner in Windows Firewall once your models are downloaded. Update deliberately rather than automatically.
  • Turn off telemetry and update checks in whichever tool you chose. Most have a switch; a few need a configuration file.
  • Keep the model files backed up. They are large but not infinite, and a model that gets withdrawn or relicensed is unrecoverable if you did not keep a copy. The backup guide covers where they should live.
  • Be careful with chat interfaces. Many desktop front-ends support both local and hosted providers, and switching is one dropdown away. Check which provider is selected before pasting anything sensitive.

The privacy claim is only as good as the weakest component. A local model behind a front-end that syncs your conversation history to a cloud account is not a private setup. Verify each piece separately.

07 · QUICK ANSWERS

Local models, briefly.

What hardware do I need to run an LLM locally?

For a 7B to 8B model at 4-bit quantisation, about 4.5 GB of VRAM, so an 8 GB graphics card is comfortable. CPU-only inference works with around 16 GB of system RAM but generates below reading speed. Unified-memory machines such as Apple Silicon do unusually well because the memory is shared and generous.

Is a local LLM as good as a hosted one?

No, not at the sizes that fit on consumer hardware. Expect a capable assistant for summarising, drafting, extraction and routine code work, and expect it to fall behind the largest hosted models on hard reasoning, long-horizon coding and obscure knowledge. The reason to run locally is privacy, offline availability and cost, not raw capability.

What does quantisation cost in quality?

16-bit to 8-bit is nearly free. 8-bit to 4-bit costs a small, usually acceptable amount for roughly half the memory, which is why most people run 4-bit. Below 4-bit, degradation becomes obvious, starting with instruction-following. As a rule, a larger model at 4-bit beats a smaller model at 8-bit.

Which tool should I use to run models locally?

Ollama if you want a command line and a local API that other tools can call. LM Studio if you want a desktop application with a model browser and chat built in. llama.cpp directly if you want full control over quantisation and offload. All of them run the same model files, so the choice is about workflow.

How do I know my local model is really offline?

Download the models while connected, then disconnect the network entirely and run a substantial prompt. Watch GPU or CPU utilisation climb as it generates. Afterwards, block outbound network access for the runner in the firewall and check that your chat front-end is not configured to fall back to a hosted provider.