Nobody publishes tokens per second for your model on your RAM, and any page that gives you one has either measured a machine that is not yours or made it up. What can be established is a ceiling, from two numbers you can look up in five minutes.
Two phases with different bottlenecks
A request has a prefill phase, where the whole prompt goes through the model in one parallel pass, and a decode phase, where each output token requires its own pass. They are limited by different things, and conflating them is why CPU inference advice is so often useless.
Decode is the one people mean when they say a local model is slow. To produce one token, the CPU must read every active weight in the model out of RAM and into cache, do a small amount of arithmetic with each, and move on. At a batch size of one there is nothing to amortise that read against — one pass over all the weights buys exactly one token. So decode is bound by memory bandwidth, and the arithmetic units are mostly idle waiting for data.
The bandwidth ceiling, derived






