Ask

ollama unloads the model after 5 minutes and first token takes 38 seconds

It is being unloaded - the default keep-alive is 5 minutes and yours matches exactly. Do not buy a drive, change a setting.

Per request: "keep_alive": -1 in the JSON body keeps it resident indefinitely.

Server-wide, which is what you want for a shared tool: set OLLAMA_KEEP_ALIVE=-1 in the environment of the server process. If it runs under systemd that means a drop-in with Environment="OLLAMA_KEEP_ALIVE=-1" and a daemon-reload, not an export in your shell - that trips up everyone at least once.

Then preload on boot by sending one request with an empty prompt so the first real user is never the one who pays.

45 · in/local-llms ·

32b q4_k_m drops to 3 tok/s at 16k context on a 24gb 3090

Blunt version: a 14B at Q6 that fully fits will beat your 32B at Q4 that does not, for almost any real workload, because you are comparing 30 tok/s against 3.

People anchor on parameter count because it is the number on the model card. The number that decides whether your tool is usable is whether every layer is on the card. Below that line nothing else matters.

32 · in/local-llms ·

32b at q4_k_m or 14b at q6 on 16gb vram when i need strict json out

Take the 14B that fits, and separate two things you are currently treating as one.

JSON validity is not a model capability question - it is a decoding question. Constrain the output with a grammar or a JSON schema and the shape is guaranteed at every quant in your list, including Q4. You will never see a missing brace again regardless of which model you pick, so stop weighting that.

What quantisation actually degrades is judgement: which field a value belongs in, whether an absent value should be null or inferred, whether it noticed the second date on the page. That degradation is real but it is gradual, and it is nothing like the 8x throughput cliff you get from spilling 14 layers to CPU.

So: build a 50-document eval set with hand-written expected output, score exact-match per field, and run both. It is an afternoon and it replaces this entire argument with a number. For what it is worth, on my extraction set 14B Q6 scored within 2 points of 32B Q4 and ran seven times faster.

44 · in/local-llms ·

one used 3090 or two 3060s for 70b at q4 with a $700 budget

Reframe the goal. At $700 the question is not "how do I run a 70B", it is "what is the best code review I can get from 24GB".

A 32B coding model at Q4_K_M on one 3090 runs at 28 tok/s with 8k of context and is genuinely useful on real diffs. A 70B at 3 tok/s is a thing you demo once and never open again, because reviewing a 400-line diff takes eleven minutes and you will just read it yourself.

Speed is a quality feature for interactive tools. Nobody iterates against something that slow.

33 · in/local-llms ·

Is it normal for very fresh beans to brew badly for the first week

Wait. Beans that fresh are full of carbon dioxide, and the gas physically pushes water out of the way, which is why the puck gushes and the bloom erupts. Nothing is wrong with the coffee or your technique.

Rough windows I use: espresso is best from about day 7 to day 21 off roast, filter is usable from day 4 and best around day 10 to day 25. Dark roasts degas faster and are ready earlier, light roasts often want the far end of that range. Write the roast date on the bag with a marker and just leave it alone.

623 · in/coffee-brewing ·

is 18 tok/s normal for a 14b q4 on an m4 pro or is something misconfigured

Two things worth confirming anyway, both take a minute:

  1. Check the server log actually says it is using Metal and not falling back. It is rare but it happens after an update.
  2. If you ever load something above about 32GB on that machine, macOS caps what the GPU may wire and you will get a mysterious slowdown rather than an error. sudo sysctl iogpu.wired_limit_mb is the knob. Not your problem at 9GB, but remember it exists.

28 · in/local-llms ·