Sr Technical Content Strategist and Team Lead
If you run LLM inference in production, you have more hardware options than before. NVIDIA and AMD GPUs are still the default, but they are not the only choice. AWS sells Inferentia2. Google rents TPUs. Groq built a chip just for inference. Tenstorrent is working on another. Each specialized chip is better than a GPU at one specific thing.
Most articles treat this as a speed contest: who generates the most tokens per second. If you actually run a serving stack, that misses the point. The fastest chip on a benchmark can still be the wrong pick if your p99 latency swings wildly, you ship a new model every week, or your traffic does not match what the chip was designed for.
This article maps the landscape for teams choosing dedicated inference hardware. For each chip, it covers what it does well, what you give up to get that, and when a specialized chip actually beats a GPU. The short answer up front: for most teams, GPU serving wins because it is flexible. DigitalOcean runs inference on GPU Droplets with NVIDIA H100 and H200 and AMD MI300X and MI325X, so this view comes from running these workloads, not from reading spec sheets alone.
If you are new to inference hardware, you can refer to the below tables first. It defines the terms used in the article.
| Term | What it means |
|---|---|
| LLM inference | Running a trained language model to answer live user requests. Training updates the model; inference only uses it. Example: a chatbot replying to a customer message. |
| Dedicated inference | You rent or own private chips (GPUs or specialized accelerators) for your app alone. You pay for GPU time or hardware, not per token on a shared API. |
| Serving stack | Everything between a user prompt and the streamed answer: load balancer, model server (e.g. vLLM), GPU/chip, networking, and monitoring. |
| Token | A chunk of text the model reads or writes, often a word, part of a word, or punctuation. Billing and speed quotes (tokens/sec) are based on tokens. |
| Throughput | Total output produced per second. If your server generates 500 tokens/sec across all users, that is your throughput. Higher throughput means more answers per second at the same hardware cost. |
| Cost per token | Dollars spent ÷ tokens generated. A chip that costs less per token is cheaper at high volume, but only if your model and traffic match what that chip was built for. |
| Batch size | How many requests the server processes together in one GPU pass. Batch size 8 means eight prompts run through the chip at once. Larger batches use the chip more efficiently but can make individual users wait longer in queue. |
| Single-stream serving | Serving one request at a time with strict speed targets. Example: a voice assistant that must respond in under 300 ms, with no batching delay allowed. |
| Batch inference | Running many prompts offline with no real-time user waiting. Example: summarizing 100,000 support tickets overnight; you optimize for total cost, not per-request speed. |
| Term | What it means |
|---|---|
| Latency | Wall-clock time from sending a prompt to receiving the full (or first) answer. If a user waits 800 ms, that is the latency they feel. |
| p50 (median latency) | Sort all requests by speed; p50 is the middle value. If p50 = 200 ms, half of requests finished faster than 200 ms and half slower. It describes the typical request, not the worst one. |
| p99 latency | Sort all requests by speed; p99 is the time that only the slowest 1% exceed. If p99 = 2 seconds while p50 = 200 ms, most users are fine but 1 in 100 gets a noticeably slow response, that is what breaks chat UX and SLAs. |
| p999 latency | Same idea as p99, but for the slowest 0.1% (1 in 1,000). Used when even rare slow responses are unacceptable (e.g. trading or safety-critical systems). |
| Tail latency | The slow end of the distribution, the outlier requests, not the average. A GPU can have p50 = 150 ms and p99 = 1.5 s; the tail is that gap. |
| SLA (Service Level Agreement) | A contract or internal target on performance or uptime. Example: “p99 latency must stay under 500 ms” or “99.9% uptime.” Miss the SLA and you breach customer commitments or internal alerts fire. |
| Deterministic latency | Same input shape → nearly the same delay every time, because the chip’s schedule was fixed before runtime. Groq targets this: p50 and p99 sit close together. |
| Statistical latency | Delay varies request to request because the chip decides scheduling at runtime and shares resources across concurrent users. Typical on GPUs under mixed load: p50 looks fine, p99 can spike. |
| Term | What it means |
|---|---|
| GPU (Graphics Processing Unit) | A flexible accelerator that runs many model types and settings. You can change models, precision (FP16, INT8), and batching without recompiling. In this article: NVIDIA H100/H200 and AMD MI300X/MI325X. Think of it as a general-purpose kitchen, you can cook many dishes without rebuilding the stove. |
| General-purpose GPU | Same as GPU in this article, the baseline everything else is compared against. |
| Inferentia2 | AWS’s chip built only for inference. Best when one model runs unchanged at huge volume: low cost per token. You must compile the model with AWS Neuron before serving, and recompile when the model or input sizes change. |
| TPU (Tensor Processing Unit) | Google’s custom AI chip, rented on Google Cloud. TPU v5e in serving mode is similar to Inferentia2: compile once per model/shape, serve cheaply at scale, less flexible than a GPU. |
| Groq LPU (Language Processing Unit) | Groq’s inference-only chip. Weights sit in very fast on-chip memory; every operation is scheduled ahead of time. Result: very predictable latency, but tiny memory per chip so large models need many chips. |
| Tenstorrent | A vendor building dataflow-style AI chips. Covered lightly here because production serving specs and software are less mature than GPU, Inferentia2, TPU, or Groq. |
| Fixed-function accelerator | Hardware optimized for one narrow job, usually one compiled model at specific input sizes. Like a single-purpose appliance: very efficient for that one job, awkward when requirements change. Inferentia2 and TPU v5e are examples. |
| Dataflow chip | Data moves through a fixed chain of specialized units (not a general program like on a GPU). Tenstorrent uses this approach. |
| H100 / H200 | NVIDIA data-center GPUs common for LLM serving. H200 has the same compute as H100 but more and faster memory (141 GB vs 80 GB), which alone makes it faster at inference for large models. |
| MI300X / MI325X | AMD’s data-center GPUs, GPU alternative to NVIDIA in this comparison. MI325X adds more memory (256 GB HBM3E) than MI300X (192 GB). |
| Hopper | NVIDIA’s architecture generation for H100 and H200. “Hopper GPU” = H100/H200 class. |
| Blackwell | NVIDIA’s next architecture after Hopper (newer GPUs in MLPerf results cited later). |
| Tensor Streaming Processor (TSP) | Groq’s internal name for the chip design inside the LPU, the hardware described in Groq’s ISCA papers. |
| Term | What it means |
|---|---|
| Compile step / compilation | Translating your model (PyTorch/ONNX, etc.) into a program the chip can run natively. On Inferentia2 you use Neuron; on TPU you use XLA. Takes minutes to hours depending on model size. You repeat it when the model, precision, or input dimensions change, not a one-time setup. |
| Neuron / AWS Neuron SDK | AWS’s toolchain to compile and run models on Inferentia chips. If Neuron does not support an operation in your model, compilation fails or runs a slow fallback. |
| XLA | Google’s compiler that turns models into TPU-ready programs (part of the OpenXLA project). Same compile-once-per-shape constraint as Neuron. |
| Hot-swap | Load new model weights and start serving without recompiling. On a GPU: point the server at a new checkpoint and restart, or swap in seconds. On Inferentia2/TPU: usually requires a full recompile. |
| Continuous batching | As new requests arrive, the server adds them to the current GPU batch and removes finished ones, batch size changes every millisecond. Keeps the GPU busy under variable traffic. vLLM and similar servers do this on GPUs. |
| Static schedule | Groq’s compiler decides exactly when every operation runs, including traffic between chips, before any request arrives. Predictable timing, but the schedule cannot easily adapt when batch size swings from 1 to 64. |
| Operator | One step in the model graph, e.g. “multi-head attention,” “matrix multiply,” “SiLU activation.” The compiler must implement each operator your model uses at full speed. |
| Operator coverage | The list of operators a compiler/chip supports natively. Missing operator = compile failure or a slow CPU fallback that wipes out the chip’s speed advantage. Always check coverage against your model, not the vendor’s demo model. |
| Term | What it means |
|---|---|
| FLOPS / FLOPs | How many floating-point math operations the chip can do per second at peak (spec-sheet number). High FLOPS sounds impressive, but token generation often waits on memory reads instead of math, so FLOPS alone misleads. |
| Memory bandwidth | How fast the chip reads data from memory, in GB/s or TB/s. Example: H100 ~3.35 TB/s. Token generation re-reads the full model weights for every new token, so bandwidth often caps speed before FLOPS does. |
| Memory capacity | How much data fits on the chip at once (e.g. H100 80 GB, Groq 220 MiB per chip). If weights do not fit, you split the model across chips or quantize to smaller precision. |
| HBM (High Bandwidth Memory) | High-capacity memory stacked on the GPU package (H100: 80 GB; H200: 141 GB). Much larger than Groq’s on-chip SRAM, but still slower to access than SRAM. |
| SRAM | Small, extremely fast memory on the chip die itself. Groq stores weights in SRAM (220 MiB per chip), very fast reads, but a 70B model cannot fit on one chip. |
| KV cache | During generation, the model stores past attention keys and values so it does not recompute the whole prompt each token. Grows with conversation length. More context = more KV cache memory reads = slower and more expensive per token. |
| Prefill / prompt processing | Phase 1: the model reads the entire user prompt in one (or few) parallel passes. Math-heavy, the chip’s compute units stay busy. Happens once per request before any output token appears. |
| Decode / token generation | Phase 2: the model outputs one token at a time. Each step re-reads all model weights from memory. Memory-heavy, often why generation feels slower than “thinking about” the prompt. |
| Autoregressive generation | The model generates token 1, then uses token 1 to generate token 2, then 1+2 for token 3, and so on. You cannot skip ahead; each token depends on all previous tokens. |
| Arithmetic intensity | Ratio: math done ÷ bytes read from memory. Low (token decode): chip waits on memory → memory-bound. High (prefill): chip stays busy computing → compute-bound. Same chip, two phases, two bottlenecks. |
| Roofline model | A simple chart engineers use to ask: “Is this step limited by math speed or memory speed?” Explains why prefill and decode behave differently on identical hardware. |
| Memory-bound | The chip is idle waiting for data from memory. Token decode on LLMs is usually memory-bound, adding more FLOPS does not help until you add bandwidth or shrink the model. |
| Compute-bound | The chip’s math units are fully busy; memory keeps up. Prefill on long prompts is often compute-bound. |
| MiB / GB / TB/s | MiB/GB = how much fits (model size). TB/s = how fast data moves (serving speed). Example: 70B model at FP16 ≈ 140 GB weights; on 3.35 TB/s bandwidth, reading weights once takes ~42 ms, that is the theoretical floor per token. |
| Term | What it means |
|---|---|
| Parameter / 70B model | Each parameter is one learned number (a weight). 70B = 70 billion of those numbers. Larger parameter count = larger model = more memory needed and usually smarter answers, but slower and costlier to serve. |
| Weights | All the numbers the model learned during training, the “brain” you load into memory to serve. A 70B model’s weights must fit on your chip(s) or be split across many. |
| FP16 / BF16 | 16-bit number formats (~2 bytes per weight). Default for many LLM deployments. A 70B model ≈ 140 GB at FP16. |
| FP8 | 8-bit floating point (~1 byte per weight). Half the memory of FP16 with small accuracy tradeoff. Supported on H100/H200 and some accelerators. |
| INT8 / INT4 | Integer formats (1 byte or ~0.5 byte per weight). Used after quantization. A 70B model ≈ 70 GB at INT8 or ~35 GB at INT4, fits on smaller GPUs. |
| Quantization | Shrinking weights from FP16 to INT8/INT4 (or FP8) so the model uses less memory and runs faster. Tradeoff: possible quality loss on some tasks, always evaluate on your data. |
| GPTQ / AWQ | Two popular open-source methods to compress models to INT4 on GPUs. Lets you run a 70B model on an 80 GB GPU that could not hold it at FP16. |
| TruePoint (Groq) | Groq’s mixed-precision math format on the LPU, how Groq represents weights and activations on its chip. |
| cFP8 (Inferentia2) | AWS’s configurable FP8 format on Inferentia2, a middle ground between FP16 size and INT8 compression. |
| TOPS | Trillion integer operations per second, vendor spec for INT8 throughput (like FLOPS but for integer math). Useful for comparing accelerators on quantized models. |
| Input shape | The exact sequence length and batch size a compiled model expects, e.g. “batch 1, sequence 2048.” Send a 512-token prompt to a model compiled for 2048 and the compiler pads the rest with zeros. |
| Padding | Filling a short request up to the nearest compiled size. You pay compute for the padded tokens too, which shows up as wasted work and p99 latency spikes on Inferentia2/TPU. |
| Term | What it means |
|---|---|
| Tensor parallelism | Splitting one model’s layers across multiple GPUs so each chip holds a slice and they compute in parallel. Example: half the layers on GPU 0, half on GPU 1, both run simultaneously on the same request. |
| Sharding | Splitting model weights into pieces spread across many chips. Required when one chip cannot hold the full model, Groq needs hundreds of chips for a 70B model because each chip only has 220 MiB. |
| NVLink / NVSwitch | NVIDIA’s high-speed cables/chips connecting GPUs in a server (900 GB/s on H100). Lets tensor-parallel GPUs exchange data quickly without going through slow PCIe. |
| NeuronLink | AWS’s link between Inferentia2 chips in an Inf2 instance (192 GB/s). Used when a model spans multiple Inferentia chips. |
| 2D torus | A grid wiring pattern in TPU pods, each chip connects to neighbors in a mesh. Google uses this to scale TPUs to 256 chips per pod. |
| Interconnect | Any network linking chips together. Slow interconnect = GPUs wait on each other = you do not get linear speedup when adding chips. |
| Pod (TPU) | A large wired cluster of TPUs (up to 256 chips in v5e). You rent a slice (e.g. 8 chips) or the whole pod depending on model size. |
| Term | What it means |
|---|---|
| MLPerf Inference | An industry benchmark suite with fixed rules and third-party auditing. Vendors submit hardware configs and scores, useful for comparing GPUs/TPUs on the same benchmark, not across different benchmarks. |
| Artificial Analysis | An independent company that measures live LLM API speed and price across cloud providers. Used in this article for Groq throughput numbers on Llama models. |
| Speculative decoding | A small “draft” model guesses several tokens quickly; the large model verifies them in one pass. If guesses are correct, you output multiple tokens per large-model step, often 2-3× faster generation. |
| A/B testing | Running model version A for 50% of traffic and version B for 50% to compare quality or cost. Easy on GPUs (hot-swap weights); painful on compiled chips (recompile both versions). |
This article compares chip architectures using published vendor specs and public architecture papers. Every hardware number links to its source. These are not DigitalOcean benchmark results. When a claim is about how a design works, not something we measured in production, the text says so.
One recent event is worth noting. On December 24, 2025, NVIDIA licensed Groq’s inference technology (reported at about $20 billion), hired Groq’s founder and several senior staff, and kept the deal non-exclusive. Groq still runs GroqCloud on its own under new leadership. Source: Groq newsroom. The deal shows that predictable, on-chip-memory inference matters even to the largest GPU maker. It does not change the tradeoffs below.
Start with four chip categories. Each one optimizes for something different.
Four chip families, four different tradeoffs. The GPU is the flexible baseline everything else is measured against.
General-purpose GPU. NVIDIA H100 and H200, AMD MI300X and MI325X. Load a model and serve it with no compile step. Swap models, change precision, and adjust batching as traffic changes. This is the flexible baseline. Every other option trades some of that flexibility for a specific gain.
Fixed-function accelerator. AWS Inferentia2 and Google Cloud TPU v5e in serving mode. Built to run one fixed model cheaply at high volume. Both require a compile step that turns your model into chip-specific code. Inferentia2 uses the AWS Neuron SDK. TPU uses XLA. Performance depends heavily on the input shapes you compiled for.
Deterministic low-latency chip. The Groq LPU (Language Processing Unit). It stores model weights in fast on-chip memory and schedules every operation ahead of time, so each request takes the same number of clock cycles. You give up capacity and flexibility to get predictable speed. Groq documented the design in two peer-reviewed papers at ISCA: the original Tensor Streaming Processor in 2020, and multi-chip scaling in 2022. Source: Think Fast: A Tensor Streaming Processor for Accelerating Deep Learning Workloads, ISCA 2020.
Dataflow chip. Tenstorrent. Its serving software is less mature than the other three, and reliable production specs are harder to find. This article covers it at the category level only.
Pay close attention here. p99 latency is a day-to-day operations problem, and most articles skip the hardware reasons behind it.
For user-facing apps, median latency tells you little. What breaks an SLA is the slow tail, the p99 and p999. On a GPU, that tail comes from two design choices. First, the GPU decides what to run at runtime, so scheduling varies. Second, concurrent requests share the same memory channels. These are built into the architecture. They are not signs of a bad deployment.
On a GPU, slow requests sit far from the median. On a Groq LPU, latency stays tight by design.
Groq reduces that variation by deciding everything ahead of time. Its compiler maps the full model to the hardware, down to the clock cycle, including communication between chips. The same request with the same input shape takes the same number of cycles every time, so p50 and p99 sit close together. Groq’s ISCA 2020 paper describes this as a core design goal: remove reactive hardware like arbiters and caches so timing stays predictable. Source: Groq ISCA 2020 paper. That is Groq’s design claim from a peer-reviewed paper, not a production test DigitalOcean ran.
The tradeoff is rigidity. GPUs use continuous batching: the server groups a changing number of live requests into one pass. A fixed schedule cannot adapt as freely. Groq shines for single-stream, real-time serving. Its advantage shrinks when batch sizes swing widely.
Inferentia2 and TPU v5e behave differently because of compilation. Both compile for specific input shapes. A request that does not match gets padded to the nearest compiled shape. That padding shows up as p99 latency spikes even when typical requests look fine. Neuron and XLA let you choose which shapes to compile, so you can tune this, but it is a real tail-latency source that GPUs avoid.
GPUs win on operational flexibility. That is a real engineering advantage, not marketing.
Inferentia2 needs the model compiled to AWS Neuron format through the Neuron SDK. TPU v5e needs XLA compilation. Compilation is not a one-time step. You repeat it when the model changes, when precision changes, or when input size or batch size changes. If you ship a new model every week, or run several versions at once, that cost never goes away.
Same model change, two paths. A GPU hot-swaps weights. A fixed-function accelerator recompiles every time something changes.
We do not have verified compile times for representative model sizes, and we will not invent them. For the published version, pull current figures from the AWS Neuron documentation and Google’s XLA and TPU docs, run a compile on a real model, and report what you measure with the software version noted. Until then, the point stands: compilation is a recurring cost that grows with how often your setup changes.
The second constraint is operator coverage. On fixed-function hardware, you can only run what the compiler supports. If your model uses an attention variant or activation the compiler does not implement, it either fails to compile or runs on a slow fallback path, and you lose the speed you paid for. Check the AWS Neuron supported-operator list and the OpenXLA operation list against your model before you commit. This is the gap between a vendor’s “supported models” list and the models you actually serve at full speed.
The third constraint is precision. Precision options matter because quantization is how teams fit larger models into less memory.
| Precision | NVIDIA H100 / H200 | AWS Inferentia2 | Google TPU v5e | Groq LPU |
|---|---|---|---|---|
| FP16 | Yes | Yes | Via the BF16 path | High-precision math via TruePoint |
| BF16 | Yes | Yes | Yes, native | TruePoint accumulation |
| FP8 | Yes | Configurable FP8 (cFP8) | Not on v5e, added on later TPUs | TruePoint mixed precision |
| INT8 | Yes | Yes | Yes, 393 INT8 TOPS | Yes |
| INT4, GPTQ, AWQ | Yes, software-supported | Limited | Limited | Set by the compiler path |
Sources: AWS Inferentia for the cFP8, FP16, BF16, and INT8 list. SemiAnalysis for the TPU v5e BF16 and INT8 figures. Groq for TruePoint. Verify the INT4 and quantization rows against current SDK docs before publishing, because framework support changes between releases.
Choosing a GPU is a deliberate tradeoff. You give up Groq’s tight p99 latency and Inferentia2’s lowest cost per token on one fixed model at full utilization. In return, you swap models without recompiling, use whatever quantization your serving engine supports, and run continuous batching to keep hardware busy under changing load.
When an LLM generates tokens one at a time, speed is limited by how fast the chip reads model weights from memory, not by how fast it can do math. The chip reads the full model for every token. So memory bandwidth, not peak FLOPS, sets the serving ceiling. Each token also reads per-request state from memory (the KV cache), which adds more traffic. Google researchers formalized this in a peer-reviewed paper: generation is dominated by loading weights and cache from memory, while prompt processing is compute-heavy. The two phases hit different bottlenecks on the same chip. Source: Pope et al., Efficiently Scaling Transformer Inference, MLSys 2023.
Computer architects call the ratio of math to memory traffic arithmetic intensity. It comes from the roofline performance model:
Arithmetic intensity = Total FLOPs performed ÷ Total bytes moved from memory
Low arithmetic intensity means memory-bound: the chip waits on data. High arithmetic intensity means compute-bound: the math units stay busy. Prompt processing is compute-heavy. Token generation is memory-heavy. That is why the two phases feel so different on the same chip. Source: Williams, Waterman, and Patterson, Roofline: An Insightful Visual Performance Model for Multicore Architectures, Communications of the ACM, 2009.
Processing a prompt keeps the math units busy. Generating each new token mostly waits on memory. That is why memory bandwidth, not FLOPS, decides how fast a chip serves.
The H200 is the clearest proof. It uses the same compute die(dies per wafer) as the H100. The only change is more and faster memory, and that alone makes it much faster at inference. Source: NVIDIA H200.
Capacity decides the largest model that fits. Bandwidth decides how fast it serves. Groq’s tiny bar shows the SRAM tradeoff.
Two numbers in that chart get misquoted constantly.
Inferentia2 bandwidth. AWS lists 9.8 TB/s for its largest Inf2 server. That is the total across all 12 chips, not one chip. Per chip, it is about 820 GB/s. Quoting 9.8 TB/s as a single-chip number overstates bandwidth by more than ten times. Source: Amazon EC2 Inf2 instances.
Groq on-chip memory. Groq’s ISCA 2022 paper states that each chip contributes 220 MiB to a shared on-chip memory pool. Marketing rounds this to “about 230 MB,” but the paper is the precise source. There is no HBM on the chip. That single design choice explains most of how Groq behaves. Source: A Software-defined Tensor Streaming Multiprocessor for Large-scale Machine Learning, ISCA 2022.
The bandwidth claim is more useful as a number you can check against your workload:
Time per token, floor = Model weight size in bytes ÷ Memory bandwidth in bytes per second
This is a theoretical floor, not a measured result. It assumes the chip spends the whole step reading weights, with no contention, no KV cache reads, and no batching overlap, so real production latency runs higher. It still tells you the fastest a chip could possibly go. Use it as a sanity check on vendor latency claims.
Each bar divides a model’s weight size by that chip’s bandwidth. H200’s only change from H100 is memory, and the math shows the effect directly: about 41.8 ms per token on H100 versus about 29.2 ms on H200, for the same 70B model at FP16.
Worked out: a 70B model at FP16 needs 140 GB of weights. On an H100 at roughly 3.35 TB/s, that is 140 ÷ 3,350 ≈ 0.0418 seconds, about 41.8 ms per token at the floor. On an H200 at roughly 4.8 TB/s, the same 140 GB takes 140 ÷ 4,800 ≈ 0.0292 seconds, about 29.2 ms. The compute die is identical. Only memory changed, and that alone explains the gap. Run this formula for any chip and model size, as long as the model fits in that chip’s memory.
You can estimate the largest model a single chip can hold from its memory size. The method works for any chip:
Weight size in bytes = Parameter count × Bytes per parameter
So a 70B model needs about 140 GB at FP16, about 70 GB at INT8, and about 35 GB at INT4.
Apply that, weights only, before the working memory each request needs:
These are weights-only ceilings. Each request also needs working memory that grows with batch size and context length, so real limits sit lower. Treat these as upper bounds, not guarantees. No authoritative public source states exactly how many Groq chips a given model needs in production. Groq describes racks of chips working together without always giving a per-model count, treat any “N chips per model” figure elsewhere as an estimate.
You can estimate a lower bound yourself:
Chips needed, floor ≈ (Parameter count × Bytes per parameter) ÷ 220 MiB per chip
A 70B model at INT8 needs about 70 GB of weights. Divide by 220 MiB per chip and you get roughly 303 chips, just to hold the weights. At FP16 (about 140 GB), that rises to roughly 607 chips. Both numbers ignore KV cache, activation memory, and networking overhead, so treat them as a floor, not an order spec.
A GPU holds a large model on one or two chips. Groq’s small per-chip memory means the same model spreads across a rack of chips, each holding a thin slice. The chip count shown is a capacity-only floor, worked out from the formula, not a published deployment spec.
The Groq tradeoff in one line: on-chip memory is very fast, but there is very little of it, so large models need many chips and a lot of rack space.
When one chip cannot hold a model, you spread it across several. Then the links between chips become the bottleneck.
Each architecture connects chips differently. GPUs use a full-speed mesh. TPUs route through a torus. Groq schedules chip-to-chip traffic at compile time.
The key question: does throughput scale roughly linearly as you add chips, and how much does communication overhead cost? Use published interconnect bandwidth where vendors disclose it, and note where they do not.
Everything above comes from vendor spec sheets. Specs show theoretical limits, not what a chip does under real traffic. This section gathers independently measured numbers we could verify. One caveat: these numbers come from different tests on different models, so you cannot rank all four chips from this data alone. Treat them as separate data points, not a leaderboard.
Real, independently measured numbers exist for some of these chips, but they were measured on different models with different methods. Read this as several separate data points, not one chart.
Groq, on Meta’s open Llama models, tested by the independent benchmarking firm Artificial Analysis: 241 tokens per second on Llama 2 70B in February 2024, 284 tokens per second on Llama 3 70B a few months later, and 276 tokens per second on Llama 3.3 70B by December 2024, with a separate speculative-decoding endpoint reaching 1,665 tokens per second on the same model. Artificial Analysis’s live tracking page later showed Groq tied for the fastest output speed on Llama 3.3 70B among 17 providers at 296.7 tokens per second. Sources: Groq newsroom, citing Artificial Analysis and Artificial Analysis, Llama 3.3 70B provider comparison. These are real independent measurements, though Groq’s own newsroom is the source for the historical figures, so treat the trend as directionally reliable and verify the current number directly on Artificial Analysis before citing it.
NVIDIA GPUs, on the MLPerf Inference benchmark, which is run and audited by MLCommons, a nonprofit industry consortium: on the Llama 2 70B benchmark, H200 delivered up to 1.5 times the throughput of H100, and the newer Blackwell architecture delivered up to 4 times H100’s throughput, in NVIDIA’s own MLPerf Inference v4.1 submission. Source: NVIDIA Blackwell Platform Sets New LLM Inference Records in MLPerf Inference v4.1. In a later round, CoreWeave’s own H200 submission to MLPerf Inference v5.0 reported over 33,000 tokens per second on the Llama 2 70B benchmark, a system-level number that depends heavily on how many GPUs were in that configuration. Source: HPCwire coverage of MLPerf v5.0.
Google TPU v5e has one directly comparable, audited result: in its MLPerf Inference 3.1 submission, four TPU v5e chips ran the GPT-J 6B benchmark at 2.7 times the performance per dollar of TPU v4, Google’s prior generation. Source: Google Cloud, cost-efficient AI inference with Cloud TPU v5e. This is a small-model benchmark, not a 70B-class comparison, and I could not find a TPU v5e MLPerf submission on a large Llama model to compare directly against the GPU numbers above.
AWS Inferentia2 is the gap in this section. We searched for a public MLPerf Inference submission using Inferentia2 and did not find one. AWS publishes its own claims, such as 40 percent better price-performance than comparable EC2 instances, but we could not verify an independently audited LLM throughput number the way Artificial Analysis and MLPerf provide for the other three chips. Check the current MLCommons results page directly; submissions change every round.
Bookmark this section. It is a decision guide, not a sales pitch.
Start at the top. Most paths lead to a GPU, because most workloads change more often than they stay frozen.
| Your workload | Best fit | Why |
|---|---|---|
| One fixed model, high volume, cost matters most | Inferentia2 or TPU v5e | Compile cost pays off. Lowest cost per token at scale. |
| Strict p99 SLA, real-time, single stream | Groq LPU | Same latency every run, by design. |
| Models change often, or A/B testing | GPU | No recompile. Swap models freely. |
| Large or unusual models, uncommon operators | GPU | Avoids compiler support gaps. |
| Many models from one endpoint | GPU | No per-model compile step. |
In short: one frozen model at high volume with no strict latency SLA → Inferentia2 or TPU may cost less per token. Strict latency SLA → Groq may fit best. Models that change often, many models, or unusual architectures → GPU.
A GPU is the flexible default, but not always the right answer. Specialized chips win in these cases:
If any of these describe your workload, a specialized chip is the rational pick. If your setup changes often, GPU flexibility is worth more than peak efficiency on a narrow benchmark.
No. A GPU is the best default for teams that change models often, test quantization, or serve several models, because it needs no recompile. For one frozen model at high volume, Inferentia2 or TPU can cost less per token. For a strict real-time latency SLA, Groq can hold a tighter tail.
Token generation reads the entire set of model weights from memory for every token, then does relatively little math. So serving speed is limited by memory bandwidth, and the largest model you can hold is limited by memory capacity. The H200 proves the point. It shares the H100’s compute die and is faster only because it has more and faster memory.
Each Groq chip holds 220 MiB of on-chip SRAM, per Groq’s own peer-reviewed architecture paper, and no HBM. A large model does not fit on one chip, so it spreads across many chips, each holding a thin slice of the weights. That is the cost of the on-chip memory that makes Groq fast and predictable.
The cost is not the first compile. You repeat the compile every time the model, the precision, or the input shape changes. A team iterating weekly pays it again and again. A team running one frozen model pays it once.
Not as a full acquisition. In December 2025 NVIDIA took a non-exclusive license of Groq’s technology and hired its founder and several staff. Groq still operates GroqCloud independently. The deal signals that deterministic inference matters, but the architectural tradeoffs in this article still hold.
Specialized inference chips are real, and each one wins at something specific. Groq wins on predictable latency. Inferentia2 and TPU win on cost per token for one fixed model at scale. GPUs win for teams that need to change their setup, which is most teams.
GPU serving stays the default not because no one built a faster chip. It stays the default because specialized silicon comes with real operational costs: recompiling on every change, compiler gaps for unusual models, and rigid scheduling that does not adapt to shifting load. When those constraints do not apply, specialized chips win on a specific dimension, and this article maps which dimension and when.
If GPU serving fits your workload and you need to model cost next, check out our article on dedicated GPU inference economics. DigitalOcean’s resources on GPU Inference, What is AI Inference, choosing the right GPU Droplet, and LLM inference benchmarking go deeper on running inference at scale.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
Anish is a Sr Technical Content Strategist and Team Lead at DigitalOcean with 7+ years of experience as an DevOps SRE at Nutanix and Cloud consultant at AMEX, and technical writing at DOCN, and shipping deep infra and AI inference tutorials that help developers deploy production‑ready applications on DigitalOcean.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.
Full documentation for every DigitalOcean product.
The Wave has everything you need to know about building a business, from raising funding to marketing your product.
Scale up as you grow — whether you're running one virtual machine or ten thousand.

From GPU-powered inference and Kubernetes to managed databases and storage, get everything you need to build, scale, and deploy intelligent applications.
