n4nAI

Cold start latency across model sizes: 7B vs 70B vs 405B

Cold start latency by model size compared: 7B vs 70B vs 405B across load time, cost, throughput, and ergonomics to guide model selection.

n4n Team5 min read1,049 words

Audio narration

Coming soon — every post will get a voice note here.

Cold start latency by model size is the gap between sending a request and receiving the first token when the model weights aren’t already resident on a GPU. The curve from 7B to 70B to 405B parameters isn’t linear—each step up multiplies memory footprint, load time, and infrastructure complexity by far more than 10x. If you’re building latency-sensitive systems, understanding where the cold start tax hits is the difference between a snappy UX and a timeout.

What “cold start” actually measures

Cold start time is the wall-clock duration from the moment your HTTP request hits the inference server to the moment the first output token is generated, assuming no warm worker exists. It bundles several stages:

  • Weights fetched from blob storage or local disk
  • Deserialization and optional dequantization
  • CUDA context init and kernel compilation
  • KV cache allocator warmup
  • Actual forward pass for the prompt

Warm start skips the first three stages entirely. The gap is dominated by I/O and memory bandwidth, not compute. That’s why cold start latency by model size tracks parameter count almost directly: more bytes to move, more devices to coordinate.

Head-to-head dimensions

Capabilities

A 7B model (Llama 3.1 8B, Qwen2.5 7B, Mistral 7B) handles classification, extraction, routing, and shallow chat competently. It will hallucinate on multi-step reasoning and lacks deep code synthesis.

A 70B model (Llama 3.1 70B, Qwen2.5 72B) clears most agentic loops, complex JSON schema adherence, and intermediate coding tasks. It’s the workhorse for production assistants that need reliability without frontier cost.

A 405B model (Llama 3.1 405B, Mixtral-large class sparse variants) approaches closed-model quality on reasoning, long-context synthesis, and nuanced instruction following. It’s overkill for templated work.

Price and cost model

Token pricing from providers scales superlinearly with size, but the bigger hidden cost is idle GPU allocation. A 405B deployment needs 8×80GB GPUs minimum for fp16; even when cold, those machines are expensive whether serving or loading.

7B runs on a single 24GB consumer card or a cheap cloud instance. 70B fits on 2×80GB A100s or 4×40GB with aggressive quantization. 405B demands multi-node orchestration. Cold starts waste money only if they happen often—if you scale to zero, you pay the load tax on every idle period.

Latency and throughput

This is where cold start latency by model size bites hardest.

  • 7B: Weights ~14GB fp16. From local NVMe, load completes in 2–8s on a single GPU. Warm time-to-first-token (TTFT) is typically <100ms for short prompts.
  • 70B: ~140GB fp16. Even with parallel loads across two devices, cold start lands in the 20–60s range. Warm TTFT 200–500ms.
  • 405B: ~810GB fp16. Multi-GPU tensor parallel groups must all sync before first token. Cold start is 1–5 minutes in practice. Warm TTFT 500ms–2s depending on context.

Throughput (tokens/s) also diverges: 7B sustains hundreds of tokens/s per GPU; 405B drops to tens of tokens/s per user under tensor parallelism overhead.

Ergonomics

Serving 7B is trivial: llama.cpp, Ollama, or vLLM on a laptop. Quantized GGUF files make it embeddable.

70B requires real serving stacks—vLLM, TensorRT-LLM, or TGI—with careful TP size selection. You’ll touch CUDA_VISIBLE_DEVICES and pipeline parallelism.

405B is an ops project. You need orchestration (Ray, KServe), model sharding configs, and health checks that account for multi-minute boots. Rolling updates become dangerous without warm standby.

Ecosystem

7B has the richest fine-tune and distill community. 70B has solid instruct and function-calling variants. 405B has fewer derivatives but is often used as a teacher for the smaller sizes. All three are available behind OpenAI-compatible APIs on most gateways.

Limits

Context length is roughly comparable (32k–128k) across the family for modern generations, but effective context degradation is worse on smaller models. Hardware ceilings: 7B fits anywhere; 70B hits memory walls on single-GPU clouds; 405B simply cannot run on most available single instances without tensor parallelism.

Comparison table

Dimension 7B 70B 405B
fp16 weight size ~14 GB ~140 GB ~810 GB
Cold start (typical) 2–8 s 20–60 s 1–5 min
Warm TTFT (short prompt) <100 ms 200–500 ms 500 ms–2 s
Min GPUs (fp16) 1×24 GB 2×80 GB 8×80 GB
Self-host effort Trivial Moderate Heavy
Best-fit task Routing, extraction Agentic prod Frontier QA

Measuring it yourself

Don’t trust vendor claims—benchmark your own route. Below is a minimal Python snippet using the OpenAI client to capture first-token latency. Point it at any OpenAI-compatible endpoint (including n4n.ai’s single endpoint covering 240+ models) and watch the delta between a fresh worker and a warm one.

import time, openai

client = openai.OpenAI(base_url="https://your-endpoint/v1", api_key="sk-...")

def ttft(model: str, prompt: str) -> float:
    start = time.perf_counter()
    stream = client.chat.completions.create(
        model=model,
        messages=[{"role": "user", "content": prompt}],
        stream=True,
    )
    for chunk in stream:
        if chunk.choices[0].delta.content:
            return time.perf_counter() - start
    return -1

# Call twice: first hit likely cold, second warm
print("cold:", ttft("llama-3.1-8b", "ping"))
print("warm:", ttft("llama-3.1-8b", "ping"))

Run this against 7B, 70B, and 405B variants on the same infrastructure to see cold start latency by model size in your own environment. The ratio will mirror the weight-size gap.

Mitigation strategies

  • Keep a warm pool for 70B/405B if traffic is steady. Scale-to-zero only makes sense for 7B.
  • Quantize: 4-bit AWQ on 70B cuts footprint to ~35GB, trimming cold start proportionally.
  • Preload on idle: speculative warmup requests keep KV allocators hot.
  • Route by task: use 7B for pre-filtering, escalate to 70B/405B only when needed. A gateway that honors client routing directives and forwards cache-control hints lets you encode this in headers.
  • Fallback: if a 405B cold start breaches SLA, automatically degrade to 70B. When you route through a single OpenAI-compatible endpoint like n4n.ai that fronts 240+ models and provides automatic fallback on provider degradation, you still pay the underlying cold start tax but avoid stacked outages.

Which to choose

Latency-critical edge / high-QPS microservice Use 7B. Cold start is sub-10s and often avoided entirely by keeping one replica warm on cheap hardware. Anything larger blows your p99.

Balanced production assistant (most SaaS) Use 70B. Cold start of 30s is tolerable if you maintain a small warm fleet. Capabilities cover 90% of user intents at a fraction of 405B cost.

Frontier quality, low-QPS, batch or human-in-the-loop Use 405B. If requests are sparse, pre-warm on a schedule. Don’t put it directly in a latency-sensitive path without a standby replica.

Prototype / local dev Start with 7B locally via GGUF. Promote to 70B in staging to validate reasoning. Reserve 405B for final eval suites.

Cold start latency by model size is a physics problem, not a configuration bug. Size your workload to the smallest model that meets the accuracy bar, and treat every larger step as a deliberate infrastructure investment.

Tagscold-startmodel-sizelatency-benchmarkinference-latency

Written by

n4n Team

The team building n4n — a single OpenAI-compatible API in front of 240+ models, with automatic fallback, load balancing and pay-per-token metering.

More from n4n Team →

All cold start vs warm start latency posts →