Inference Physics & Roofline practice test
Bytes and FLOPs per token, why batch-1 decode reads every weight once per step, the ridge point and the batch size that crosses it, MBU versus MFU, and the millisecond latency floors you must produce before anyone draws a box. The pool for this topic holds 10 easy, 12 medium and 8 hard items. Each answer comes with its reasoning and a link to the question or concept page it was drawn from.
Sample items with answers
BF16 is 2 bytes per parameter: 70.554e9 x 2 B = 141.1 GB, which is 131.4 GiB. The 131 option is the same bytes quoted in GiB with the unit swapped, not a different count, and the embedding table is part of the 70.554B. The 70.6 GB figure is the FP8 size, the usual slip of counting one byte per parameter. Master copies belong to training. So BF16 70B needs at least two 80 GB parts before a single token of KV cache, which is why TP=2 is the smallest sensible BF16 deployment.
At batch 1 each BF16 weight (2 bytes) feeds one multiply-add (2 FLOPs) per step, so arithmetic intensity is about 1 FLOP per byte. The H100 SXM ridge is 989 TFLOP/s dense BF16 over 3.35 TB/s, about 295 FLOP/byte, so the tensor cores sit idle waiting on HBM. Tensor cores do run at batch 1 through padded tiles, they just have nothing to do. Attention FLOPs at batch 1 are small next to the weight GEMVs, and host sync is a latency overhead, not the reason the step is bound by bytes.
After the test
Picking an option is easier than deriving the answer at a whiteboard. These pages make you derive it: