AI Infra Interviews logo
Napkin Math, Cost & Capacity / 04
easyNewMetaAnthropic

How long does that 70B run take on 16,384 H100s at 40% MFU?

The fleet equation applied to 6.35e24 FLOPs: 11 days, and how the answer swings from 9 to 15 with the one parameter the interviewer wants you to state.

Updated Sep 2026 · Grounded in real AI infrastructure interview loops and written to a senior-engineer editorial bar, with every number worked and every diagram hand-built.

TL;DR: Time = FLOPs ÷ (GPUs × peak × MFU) = 6.35e24 ÷ (16,384 × 989e12 × 0.4) ≈ 9.8e5 s ≈ 11.3 days. At 30% MFU it is 15 days, at 50% it is 9; state the MFU with the answer, because it is the only input that is a guess.

How to approach it

Take the FLOPs figure from the previous step, or recompute it in one line, and ask whether the peak to use is dense bf16 (989 TFLOPS on the H100) or the sparsity-inflated marketing figure, and say you are using dense. Compute the fleet's effective FLOPs per second first, since it is the divisor everything else follows from, and write the units. Then divide, convert seconds to days, and give the range across the plausible MFU band before the interviewer asks.

A strong answer

A typical situation: a schedule is committed with a single number of days and no MFU stated, so nobody can tell later whether the run is behind or the estimate was. Naming the assumption out loud is most of the answer.

Time to train is the compute budget divided by the rate the fleet actually sustains, which is peak per GPU, times GPUs, times model FLOPs utilization. MFU is the fraction of peak that goes into the model's own matmuls after communication, data loading, stragglers, and non-matmul work; 35 to 45% is a good large-scale bf16 run.

inputs:  C     = 6.35e24 FLOPs        (6 × 70.6e9 × 15e12)
         GPUs  = 16,384
         peak  = 989 TFLOPS dense bf16 = 989e12 FLOP/s per H100
         MFU   = 0.40

effective rate = GPUs × peak × MFU
               = 16,384 × 989e12 × 0.40
               = 6.48e18 FLOP/s

time = C ÷ rate
     = 6.35e24 ÷ 6.48e18
     = 9.80e5 s
     = 9.80e5 ÷ 86,400 ≈ 11.3 days

sanity: 16,384 GPUs × 11.3 days × 24 h ≈ 4.4 million GPU-hours, which is the same 4.5M figure
        the 6ND ÷ per-GPU rate gives directly, so the two routes agree.

Now the sensitivity, which is the point of the question. Time scales as 1 ÷ MFU, so the range is:

MFUrate (FLOP/s)days
30%4.86e1815.1
40%6.48e1811.3
50%8.10e189.1

A ten-point drop in MFU adds four days to an eleven-day run, and on 16k GPUs that is 1.5 million GPU-hours, several million dollars of rental. That is why training teams report MFU as a first-class metric and why "what MFU did you assume" is the reply to any time-to-train claim.

Two things this estimate leaves out, both of which push the wall clock up. Restarts: a run at this scale loses time to hardware failures and to reloading the last checkpoint, and the recoverable-time fraction is usually 5 to 10% of the schedule. Warm-up and evaluation: learning-rate warm-up, periodic evaluation passes and any mid-run data changes take real time that 6ND does not model. A calendar answer is "eleven days of compute, plan for two to three weeks."

DAYS TO TRAIN A 70B ON 15T TOKENS, 16,384 H100s 25% 40% 55% 18 d 11.3 d 8.2 d assumed MFU 40%: 11.3 days One number, quoted without its assumption, spans 8 to 18 days. State the MFU before the answer. 4 days of difference on 16,384 H100s is roughly $4M of compute.

The reversal condition: precision. In fp8 the H100 peak doubles to 1,979 TFLOPS dense, and if the run holds the same MFU the time halves; in practice fp8 MFU is lower than bf16 MFU because more of the step is scaling and conversion, so the gain is closer to 1.3 to 1.6x than 2x, and the honest sentence is "fp8 would bring it to roughly a week if the numerics hold." The GPU-hours and time to train page carries the same fleet equation with the GPU-count form. GPU-Hours and Time to Train is the same equation in different units, and DCGM_FI_PROF_PIPE_TENSOR_ACTIVE is the field that tells you the assumed MFU on a running job. Training FLOPs: 6ND supplies the numerator this divides.

What interviewers probe next

  • "What MFU should I assume for a run like this?" 35 to 45% in bf16 on H100s for a dense model with good overlap; below 30% is a sign of a communication or data bottleneck worth diagnosing.
  • "Why dense and not the 1,979 TFLOPS on the datasheet?" 1,979 is the fp8 dense figure; the bf16 headline "with sparsity" is 1,979 too but assumes 2:1 structured sparsity that training does not use. GEMMs reach the dense number.
  • "How would you measure MFU on the running job?" Tokens per second × 6N gives model FLOPs per second; divide by GPUs × peak. If a step on 16k GPUs processes 16M tokens in 1.0 s, that is 6 × 70.6e9 × 16e6 = 6.8e18 ÷ 1.62e19 = 42%.
  • "What if I have 8,192 GPUs instead?" Time doubles to 22.6 days at the same MFU, and MFU is usually slightly higher with fewer ranks, so a little under.

Common mistakes

  • Forgetting to convert TFLOPS to FLOP/s and getting an answer in the wrong unit by 1e12.
  • Using peak with no MFU and reporting 4.5 days, a number no run has achieved.
  • Giving a single day count with no MFU stated, which the interviewer cannot check.
  • Treating the compute time as the calendar time, with no allowance for restarts and evaluation.

Key takeaways

  • Time = C ÷ (GPUs × peak × MFU); 6.35e24 on 16,384 H100s at 40% is 11.3 days.
  • Time scales as 1 ÷ MFU: 30% gives 15 days, 50% gives 9. Say the MFU.
  • Use dense peak (989 TFLOPS bf16 on H100), never the sparsity figure.
  • Add 5 to 10% for restarts and evaluation before promising a date.
That one was free — and so are 10 answers per topic without an account. Signing in doubles that to 20, opens the Plus lessons in the courses, and remembers which topics you keep getting wrong.no card · Google sign-in · nothing to cancel
HOW DID IT GO?
0
READING SIGNED OUT

Signing in doubles your free answers, from 10 to 20 per topic, and the site starts remembering you: mastery per topic, bookmarks, and a next-focus recommendation. Free, no card.

Sign in free

The concepts behind this question

Ranked by how closely each one overlaps this question's topic, so the first card is the thing to read if the answer above moved too fast.

Core
🧮 Napkin Math & CapacitySign in
GPU-Hours and Time to TrainThe fleet equation turns a training run's FLOPs into a schedule: time = 6ND divided by (GPUs times peak FLOPS times MFU). Every term is a stated assumption, and the interviewer grades the assumptions rather than the digits: which peak, which MFU, and what happens to the answer when MFU falls from 40% to 30%. This page works three runs end to end (an 8B, a 70B and a 405B), inverts the equation for the GPU count a deadline needs, and shows the sensitivity that separates a considered estimate from a lucky one.
Foundational
🧮 Open Weights & Serving Engines
Capacity Planning for Open-Weights FleetsPlanning a fleet for a sparse open-weights model works differently from planning one for a dense model, because memory follows total parameters and throughput follows active parameters, and those now differ by more than twenty times. The sizing goes in one direction only: from a traffic forecast to tokens per second, to replicas at a measured operating point, to GPUs, to racks and kilowatts. Doing it in the other direction, from an available GPU count, produces a fleet that fits the hardware rather than the demand.
Core
🕸️ Distributed TrainingSign in
MFU and HFUModel FLOPs utilization is the fraction of a GPU's peak that goes into the model's own forward and backward math, computed from 6ND and the step time; hardware FLOPs utilization also counts recomputation. Production LLM training lands at 35 to 45% MFU, and knowing where the other 55% goes is the job.
Advanced
🩺 Fleet Reliability & Observability🔒 Premium
Incident Response for GPU FleetsAn incident on a GPU fleet is a training run that stopped, a serving endpoint burning its error budget, or a fleet-wide symptom nobody has explained yet. The response has a shape: detect, stabilize, diagnose, repair, return through the gate, write it up. The stabilizing move (drain the node, restart from checkpoint, or shift traffic) comes before the diagnosis, because a frontier run loses more per minute than any investigation is worth. This page gives the triage order, the 3am decision tree, the spare-capacity arithmetic behind drain-and-replace, and what a fleet postmortem has to contain.
UP NEXT ON YOUR JOURNEY
FEDITOR'S NOTE

The interviewer wants the candidate to convert TFLOPS to FLOPs per second, apply MFU, and then say how much the answer moves with MFU. A single number with no sensitivity is a half answer.

DISCUSSION · 0

No comments yet — be the first to share your approach.