bedrock vs self-hosted gpu · the build-vs-buy decision · 2026

Amazon Bedrock vs self-hosted GPU — the build-vs-buy decision for LLM inference (2026).

Run your model through Amazon Bedrock and pay per token with zero infrastructure, or self-host an open model on your own AWS GPU (or Inferentia) and pay for the instances. This is the classic build-vs-buy call, and the honest answer turns on one number almost everyone gets wrong: utilization. This page works through total cost (per-token vs instance-hours plus idle), the operational burden, scaling and cold starts, control and customization, the break-even point where self-hosting starts to pay, and a clear decision table — when self-hosting actually wins, and when Bedrock does.

Bedrock
per token, $0 idle
self-hosted
per GPU-hour
what decides it
utilization
credits to fund it
up to $1M
TL;DR
  • Amazon Bedrock is buy: a fully managed, serverless API where you call a foundation model and pay per token, with no GPUs to provision and nothing billed when idle. Self-hosting is build: you run an open-weight model on your own AWS compute (EC2 GPU, or AWS Inferentia/SageMaker endpoints) and pay for the instance-hours whether or not requests are flowing. Same outcome — text out of a model — two completely different cost and operating models.
  • The decision is almost entirely about utilization, not headline per-token price. A self-hosted GPU only beats Bedrock once you keep it busy enough: below a break-even of very roughly 40–60% sustained utilization, paying per token on Bedrock is usually cheaper because you pay nothing for idle capacity. Above it — steady, high-volume, predictable traffic — a well-utilized GPU or Inferentia endpoint can be meaningfully cheaper per token, at the cost of real ops, scaling, and cold-start work.
  • Bedrock wins for spiky, low, or unpredictable traffic, fast time-to-market, model choice, and teams without ML-infra staff. Self-hosting wins for steady high volume, a specific open or fine-tuned model you must own, full control of the serving stack, or strict data/hardware requirements. Either way the bill is fundable: CloudRoute routes you to a vetted AWS partner and gets AWS credits — Activate up to $100K, Bedrock/GenAI PoC $10K–$50K, GenAI Accelerator up to $1M — that cover Bedrock tokens or GPU instance-hours. Customer pays $0; AWS funds it.
framing

IThe real question is not "which is cheaper" — it is "at what utilization"

People search "Bedrock vs self-hosted GPU" expecting one to be cheaper, full stop. It is not that simple. The two bill on different axes — per token versus per instance-hour — so which one costs less depends entirely on how busy you would keep the hardware. Utilization is the hinge the whole decision swings on.

Amazon Bedrock is the "buy" option. It is a fully managed, serverless API for calling foundation models — Claude, Llama, Mistral, Amazon Nova and Titan, Cohere, and more — through one interface. You do not provision a GPU, size a cluster, patch a driver, or operate an endpoint. You send a request, you get a completion, and you pay per 1,000 input and output tokens (or reserve capacity, or batch, or cache). The defining property for this decision: there is no idle cost. If no requests arrive, you pay nothing.

Self-hosting is the "build" option. You take an open-weight model (Llama, Mistral, Qwen, a fine-tune of one, or your own model) and run it on AWS compute you control — most commonly EC2 GPU instances (the P and G families), but also AWS Inferentia (inf2) for cheaper inference silicon, often behind SageMaker real-time endpoints or your own containers on EKS. You choose the instance, load the weights, stand up a serving stack (vLLM, TGI, or similar), and run it. The defining property: you pay for the instance by the hour whether or not it is doing work. A GPU sitting at 5% load costs exactly the same as one at 95% load.

That single asymmetry — Bedrock charges for work done, self-hosting charges for capacity reserved — is why "which is cheaper" has no fixed answer. At low or bursty traffic, paying only for the tokens you actually consume wins easily, because a self-hosted GPU spends most of its life idle and you are paying for that idleness. At steady high volume, a GPU you keep consistently busy spreads its hourly cost across so many tokens that the per-token cost drops below Bedrock's. The crossover between those two regimes is the utilization break-even, and finding roughly where your workload sits relative to it is the most important thing this page can help you do.

This page is neutral. Both are legitimate, mature choices in 2026, and plenty of serious teams run both at once. The sections below work through the real dimensions — total cost, operational burden, scaling and cold starts, control and customization, and the break-even math — so you can map them to your own traffic and team rather than to a headline. Treat every specific number as representative of 2026 and confirm current rates on the AWS pricing pages; the structural logic is what lasts.

the one-line version

Bedrock bills for tokens you consume (nothing when idle); self-hosting bills for GPU-hours you reserve (idle or not). So the choice is not "which has the lower price" — it is "can you keep a GPU busy enough to beat per-token pricing?" If yes, self-hosting can win on unit cost. If no, Bedrock almost always wins on total cost.

the two paths in depth

IIWhat each path actually involves

Before comparing cost and ops, it helps to be precise about what you are signing up for on each side — because the gap between "call an API" and "operate a model-serving fleet" is the whole story.

The asymmetry in effort is as large as the asymmetry in billing. One path is a few lines of code against a managed endpoint; the other is a production system you design, deploy, scale, and keep alive. Both are reasonable — but you should choose with eyes open about which job you are taking on.

Buy — Amazon Bedrock managed inference

With Bedrock you pick a model and call it. The Converse API gives a consistent interface across providers, so you can A/B Claude against Llama against Nova without re-plumbing. Around the raw calls, Bedrock layers the managed pieces most GenAI apps need: Knowledge Bases (managed RAG), Agents (tool-using workflows), Guardrails (safety/PII filtering), Prompt Management, and model evaluation. AWS owns all the infrastructure — the GPUs or custom silicon serving the model are invisible to you, as is scaling, patching, and capacity planning.

Your responsibilities shrink to application logic and cost levers you control through usage: choosing the right model for the job (a small Nova or Llama costs a fraction of a frontier model per token), using prompt caching to cut repeated context, Batch for ~50% off non-urgent bulk jobs, and Provisioned Throughput if you reach steady high volume and want reserved capacity. There is no endpoint to keep warm and no cold-start engineering — the managed service absorbs all of it. The trade you are making is control for convenience: you use the models in the catalog, through the features AWS exposes, and you do not touch the serving stack.

Build — self-hosting on EC2 GPU (or Inferentia / SageMaker)

Self-hosting means you operate the model yourself. The typical stack: select an open-weight model, choose an accelerator instance — an EC2 GPU instance (P-family for the largest models, G-family for smaller/cost-sensitive serving) or an AWS Inferentia inf2 instance for cheaper inference silicon — load the weights, and run a high-throughput serving framework such as vLLM or Text Generation Inference (TGI). You can run this on raw EC2, on EKS for orchestration, or behind a SageMaker real-time endpoint that wraps the instance management for you while still billing per instance-hour.

The work does not end at "it serves a response." You own autoscaling (adding and removing instances as traffic moves), cold starts (a fresh GPU instance must boot and load multi-gigabyte weights into accelerator memory before it can answer — often minutes), utilization management (keeping instances busy enough to justify their hourly cost without dropping requests at peaks), GPU quota (the largest instances are capacity-constrained and may need a limit increase), observability, patching, and failover. If you go the Inferentia route for lower silicon cost, you also take on a one-time Neuron SDK port of the model. This is real ML-infrastructure engineering — the reason self-hosting can be cheaper per token is precisely that you are doing the work AWS would otherwise do for you.

the spectrum, not a binary

There is a middle ground worth naming: self-hosting an open model on a SageMaker endpoint (often via JumpStart) hands you instance management and a serving wrapper while you still own the model choice, the container, and the instance economics. And Bedrock Custom Model Import lets some custom/fine-tuned models be served on Bedrock's managed infrastructure — SageMaker-grade customization with Bedrock-grade ops. The real decision is less "Bedrock or a bare GPU" than "where on the managed-to-self-hosted spectrum does this specific workload belong."

the money

IIITotal cost — per token vs instance-hours plus idle

This is the heart of the decision. The two pricing models are not directly comparable on a sticker, because one charges for output and the other for capacity. To compare them you have to convert both to the same unit — cost per million tokens at your real traffic — and the conversion is where idle time quietly decides the winner.

Bedrock's cost is linear in usage. You pay per 1,000 input and output tokens at a per-model rate. Send a million tokens, pay for a million tokens; send none, pay nothing. The cost line starts at zero and rises in a straight, predictable slope. There is no fixed floor, no minimum, and no penalty for traffic that comes and goes — which is exactly why variable workloads love it. The lever you pull to lower it is model choice and the caching/batch/provisioned options, not infrastructure.

Self-hosting's cost is a fixed staircase. You pay per instance-hour regardless of load. A single large GPU instance has a real hourly rate that runs into the low-to-mid double digits of dollars per hour for the biggest accelerators (representative as of 2026 — confirm on the EC2 pricing page), which is on the order of thousands of dollars a month for one always-on instance. That cost is the same at 5% utilization and at 95%. So your effective cost per token is the instance bill divided by the tokens you actually push through it — and that denominator is everything. Few tokens over an always-on GPU is ruinously expensive per token; a flood of tokens over the same GPU is very cheap per token.

The trap, stated plainly: people compare Bedrock's per-token price to a self-hosted GPU's per-token price at 100% utilization and conclude self-hosting is far cheaper. Real endpoints do not run at 100%. They run at whatever your traffic fills, minus the headroom you keep for spikes, minus nights and weekends if your traffic is business-hours, minus the warm spare capacity you hold so users do not hit a cold start. A GPU provisioned for peak but averaging 25% utilization is paying four times its "100% utilization" per-token cost — and at that point Bedrock, which charged you nothing for the three-quarters of the time the GPU was idle, is frequently cheaper overall despite a higher headline per-token number.

There are also costs beyond the instance line that belong in an honest total: engineering time to build and maintain the serving stack (often the largest hidden cost for a small team), data transfer and storage, over-provisioning headroom you must hold to absorb spikes, the one-time Neuron port if you choose Inferentia, and the opportunity cost of ML engineers running infrastructure instead of building product. Bedrock folds essentially all of this into the per-token price. Self-hosting externalizes it onto your team and your bill. When you tally total cost of ownership rather than just the GPU sticker, the break-even shifts further in Bedrock's favour than a pure instance-vs-token comparison suggests.

cost-model shape · Bedrock vs self-hosted GPU · representative 2026
Cost dimensionAmazon Bedrock (buy)Self-hosted GPU / Inferentia (build)
Billing basisPer 1K input/output tokensPer instance-hour (GPU/inf), idle or busy
Cost when idleNone — pay only for tokens consumedFull — the instance bills 24/7 while running
Effective cost per tokenFixed per-model rateInstance bill ÷ tokens actually served (utilization-driven)
Fixed floor / minimumNoneHigh — one always-on large GPU is ~$1000s/month
Main cost-down leverModel choice, prompt caching, Batch (~50%), Provisioned ThroughputUtilization, right-sizing, Spot, Inferentia, smaller/quantized models
Hidden costsMinimal (folded into per-token price)Eng time, over-provisioning headroom, data transfer, Neuron port
Cheapest atLow / spiky / unpredictable volumeSteady, high, predictable volume at high utilization
Exact per-token and per-instance rates vary by model, instance type, and region and change over time — confirm on the Amazon Bedrock and Amazon EC2 pricing pages. The durable point is structural: linear per-token (no idle cost) vs fixed per-instance (idle costs the same as busy).
the hinge

IVThe utilization break-even — where self-hosting starts to pay

Everything above points at one threshold: the utilization level at which a self-hosted GPU's per-token cost drops below Bedrock's. Below it, Bedrock is cheaper; above it, self-hosting is. Estimating roughly where you sit relative to that line is the single most decisive step in the decision.

The mechanism is simple arithmetic. A self-hosted instance costs a fixed amount per hour. The more tokens you serve in that hour, the lower the cost spread across each token. At some throughput, that per-token figure crosses below Bedrock's flat per-token price — that crossing is your break-even. Serve fewer tokens than that and you are paying for idle capacity Bedrock would not have charged you for; serve more and you are beating the managed price.

As a representative rule of thumb for 2026 — not a guarantee, because it depends heavily on the model, the instance, the sequence lengths, and the Bedrock model you are comparing against — self-hosting a mainstream open model on a well-chosen GPU tends to break even somewhere in the region of 40–60% sustained utilization. Comfortably below that band, Bedrock is usually cheaper on total cost. Comfortably above it, with steady traffic that keeps the instance genuinely busy, self-hosting starts to win and the margin widens as utilization climbs toward saturation. Using cheaper inference silicon (Inferentia/inf2) or smaller/quantized models lowers the instance cost and therefore pulls the break-even down, making self-hosting viable at lower utilization than raw GPU would allow.

The reason real workloads so often land below break-even is that traffic is rarely flat. Most products have peaks and troughs — busy business hours and quiet nights, weekday load and weekend lulls, launch spikes and steady-state baselines. You must provision for the peak (or accept dropped requests and cold starts at the peak), which means the instance is underused during every trough. A workload that looks like it averages 50% utilization across a day may be 90% at midday and 10% overnight — and you paid full price for those overnight hours. Bedrock charges only for the midday tokens and nothing for the 3 a.m. silence, which is precisely why bursty traffic favours it even when peak utilization looks high.

The practical method beats any rule of thumb: model your actual traffic shape, then benchmark both at that shape. Take a realistic week of request volume (or projected volume), compute the Bedrock cost by multiplying tokens by the per-token rate, and compute the self-hosted cost as the number of instance-hours you would have to run (including the headroom to cover peaks without cold-start pain) times the hourly rate. Divide each by total tokens to get cost per million tokens, and the cheaper number is your answer — for that traffic shape, with that model, today. Do this before committing; it is an afternoon of work that can save or waste thousands of dollars a month.

why "100% utilization" math lies

A self-hosted GPU only hits its advertised low cost-per-token at near-full, sustained load. Provision for peak and you idle through every trough; keep warm spare capacity to avoid cold starts and you idle further; run business-hours traffic and you idle nights and weekends. Average utilization, not peak, sets your real per-token cost — and average is almost always far below the 100% figure used to make self-hosting look cheap. Compute the average for your traffic before you trust the comparison.

the operational reality

VOps burden, scaling, and cold starts

Cost is only half the build-vs-buy ledger. The other half is everything you have to operate. Bedrock pushes essentially all of it onto AWS; self-hosting keeps it on your team. For many organizations this side of the ledger decides the question before cost even enters.

Operational burden. On Bedrock there is no infrastructure to run — no instances to size, patch, monitor, or recover, no driver and framework versions to manage, no on-call rotation for a GPU fleet. Self-hosting makes all of that yours: provisioning, container and serving-stack maintenance (vLLM/TGI upgrades, model updates), observability, security patching, failover, and the engineering team to keep it healthy. For a team without dedicated ML-infrastructure staff, this is often the deciding factor — the salary cost and attention of the engineers running the fleet frequently dwarfs the GPU bill itself, and it is the cost most easily overlooked when only the instance sticker is compared.

Scaling. Bedrock scales for you — concurrency rises and the managed service absorbs it within your account limits, no action required (and Provisioned Throughput is there if you want reserved capacity for predictable peaks). Self-hosting means you build and tune the scaling: autoscaling policies that add instances as load climbs and remove them as it falls, the metrics that drive those policies, and the headroom to cover a spike before new capacity comes online. Scaling a GPU fleet is materially harder than scaling stateless web servers because the units are large, expensive, capacity-constrained, and slow to start — which leads directly to the cold-start problem.

Cold starts. This is the sharpest operational edge of self-hosting and a real product concern. When traffic rises and autoscaling launches a fresh GPU instance, that instance must boot, pull a container, and load multi-gigabyte model weights into accelerator memory before it can serve a single request — frequently several minutes. During that window the new capacity is useless, so a sudden spike either hits existing instances harder (raising latency, risking dropped requests) or waits for the cold instance to warm. Teams mitigate with warm pools, pre-provisioned spare capacity, and faster weight-loading — but warm spares mean paying for idle GPUs, which pushes utilization down and the break-even up. Bedrock has no cold-start problem visible to you: the managed service holds the capacity, so a spike is absorbed without you holding (and paying for) warm GPUs. For spiky traffic, this is one of Bedrock's strongest practical advantages, and it compounds with the cost argument rather than standing apart from it.

operational dimensions · Bedrock vs self-hosted GPU · 2026
DimensionAmazon Bedrock (buy)Self-hosted GPU (build)
Infrastructure to runNone — fully managedYou own instances, serving stack, OS/drivers
ScalingAutomatic (managed); reserve via Provisioned ThroughputYou build/tune autoscaling + headroom
Cold startsNone visible to youMinutes to boot + load weights; needs warm pools
Team neededApplication developersML-infra / DevOps engineers (often on-call)
Time to productionMinutes (API call)Days–weeks (build + tune + harden)
Failure handlingAWS-managedYour responsibility (failover, recovery)
Hidden ongoing costMinimalEng time to keep the fleet healthy
For teams without dedicated ML-infrastructure staff, the operational column frequently decides the question before cost does — the engineering time to run a healthy GPU fleet is a recurring cost that the GPU sticker price hides.
the case for build

VIControl and customization — what self-hosting buys you

If Bedrock were cheaper and easier in every case, no one would self-host. They self-host because control and customization are sometimes worth the cost and the work. Here is the honest case for build — the things only self-hosting gives you.

Self-hosting hands you the knobs the managed surface intentionally hides. The question to ask is whether your workload actually needs any of them — because if it does, the cost-and-ops calculus is no longer the whole story, and if it does not, you are paying for control you will never use.

  • A specific model the catalog does not offer — If you depend on a particular open-weight model, a niche fine-tune, a quantized variant, or your own trained model that is not available on Bedrock, self-hosting is the way to run exactly that artifact. (Bedrock Custom Model Import covers some custom models on managed infrastructure — check whether yours qualifies before assuming you must self-host.)
  • Full control of the serving stack — You choose the inference engine (vLLM, TGI), the batching and quantization strategy, speculative decoding, the exact runtime, and the hardware — control you can use to squeeze latency or cost in ways a managed API does not expose.
  • Hardware-level cost and latency optimization — Pick the instance (GPU vs Inferentia), tune utilization, apply Spot for fault-tolerant batch work, and optimize cost-per-token at the metal — the lever that makes self-hosting cheaper than Bedrock at high, steady volume.
  • Deep customization beyond managed fine-tuning — Custom architectures, continuous fine-tuning loops, LoRA/adapter swapping at serve time, or research models that change weekly — workflows that want the full lifecycle, not a managed customization surface.
  • Strict data residency / isolation on your own infrastructure — When requirements demand the model run on infrastructure you operate inside your own VPC and account (beyond Bedrock's already-strong in-account, not-trained-on-your-data posture), self-hosting puts every byte on hardware you control.
  • No dependence on a model provider's catalog or roadmap — Owning the weights and the stack means a model is not deprecated out from under you and your behavior does not shift when a provider updates a model — valuable when reproducibility or long-term stability matters.
the honest test

Ask: do I need any of these, or do I just like the idea of owning it? If a standard catalog model behind a good product meets the need, the control self-hosting offers is cost and ops you are paying for and not using — Bedrock is the rational call. If you genuinely require a specific model, serving-stack control, or hardware-level optimization at high volume, the control is worth the build. Self-host for a requirement, not for the feeling of control.

the verdict, in words

VIIWhen self-hosting actually pays off — and when Bedrock wins

Pulling the threads together: cost (utilization), ops, scaling, cold starts, and control all point the same way for any given workload once you are honest about your traffic and team. Here are the situations that settle it in each direction.

A pattern worth internalizing: the two are not mutually exclusive, and the most cost-effective mature stacks often use both. Bedrock for spiky, standard-model, and time-to-market workloads; self-hosted GPU or Inferentia for the steady, high-volume, custom-model traffic where unit cost dominates. You route each workload to the option whose economics fit its traffic shape, rather than forcing one model onto everything. A very common arc is to start on Bedrock (fast, cheap at low volume, no ops) and graduate the specific high-volume workloads to self-hosting once they cross the break-even and justify the engineering — keeping everything else on Bedrock.

Self-hosting on GPU/Inferentia actually pays off when…

  • You have steady, high, predictable volume that keeps an endpoint above the utilization break-even — the regime where the GPU's fixed cost spreads thin and per-token cost drops below Bedrock.
  • You must run a specific open, fine-tuned, or custom model that is not in (or cannot be imported to) the Bedrock catalog.
  • You need serving-stack or hardware-level control — custom inference engine, quantization, instance choice, latency tuning — to hit cost or performance targets a managed API cannot reach.
  • You have the ML-infrastructure team to build autoscaling, handle cold starts, and keep a GPU fleet healthy — and the engineering cost is justified by the volume.
  • You can lower the break-even with Inferentia (inf2) or smaller/quantized models, making self-hosting win at a utilization you can realistically sustain.

Bedrock wins when…

  • Your traffic is spiky, low, or unpredictable — pay-per-token charges nothing for idle, which beats a GPU you cannot keep full and sidesteps cold starts entirely.
  • You want speed-to-market — a production feature in minutes-to-days against a top model, with no infrastructure to build or harden.
  • You have no dedicated ML-infrastructure team, and the engineering cost of running a fleet would dwarf any per-token saving.
  • You want model choice and easy swapping behind one API, plus managed features (Knowledge Bases, Agents, Guardrails) without building them.
  • A standard catalog model meets your need, so the control of self-hosting would be cost and ops you pay for but never use.
  • You are early or validating — ship on Bedrock now, and revisit self-hosting only if and when steady volume pushes you past break-even.
funding either path

VIIIHow CloudRoute funds whichever path you choose — to $0

The build-vs-buy decision is yours to make on the merits. Whichever way it lands, the bill is fundable: AWS credits cover Bedrock tokens and self-hosted GPU instance-hours alike, and a vetted partner can do the architecture, the build, and the FinOps. That is where CloudRoute fits — it is path-neutral.

Inference is a recurring bill on both sides — per-token spend on Bedrock or 24/7 instance-hours when self-hosting — and that is exactly the spend AWS credits are designed to absorb. Bedrock tokens are standard Bedrock usage and GPU/inf instance-hours are standard EC2 compute; both are covered by the same credit pools: AWS Activate (up to $100K), Bedrock / GenAI PoC funding ($10K–$50K to prove out a model or product), and the Generative AI Accelerator (up to $1M for selected AI-first companies). Credits can cover a Bedrock workload or a self-hosted serving stack for a long runway, which means the build-vs-buy decision can be made on architecture and economics rather than on which one you can currently afford.

The harder part is making the right call and executing it well, and that is where a partner earns its place. CloudRoute (cloudroutehq.com) routes you to a vetted AWS partner who brings both the GenAI and ML-infrastructure expertise: they run the break-even analysis on your real traffic, recommend Bedrock or self-hosting (or the mix) honestly, and then build whichever path you choose — standing up Bedrock with Knowledge Bases/Agents, or self-hosting an open model on GPU/Inferentia with utilization-aware autoscaling and cold-start mitigation. The same partner files the credit applications through the ACE program so the bill is funded from day one. Critically, a good partner is path-neutral: the recommendation follows your traffic and team, not a preference for the more billable build.

The economics for you: the customer pays $0. AWS funds the credit pool because it wants the inference workload — managed or self-hosted — running on AWS long-term; the partner is paid by AWS through engagement-funding programs; CloudRoute is paid by the partner as a routing commission. You never see an invoice from CloudRoute. You get an honest build-vs-buy recommendation, a partner who builds the path you pick and tunes the FinOps, and credits that cover the Bedrock tokens or the GPU hours — an inference stack that is funded and optimized rather than billed and second-guessed. For the broader credit picture, see AWS credits for generative-AI startups and how AWS PoC / Bedrock POC funding works.

side by side

Amazon Bedrock vs self-hosted GPU — the build-vs-buy decision table

One scannable view of the dimensions that actually drive the choice. The short version: Bedrock buys you zero ops and zero idle cost; self-hosting buys you control and a lower unit cost — but only above the utilization break-even. Find the rows that match your workload.

DimensionAmazon Bedrock (buy)Self-hosted GPU / Inferentia (build)
What it isManaged, serverless foundation-model APIOpen/custom model on your own AWS compute
BillingPer token — nothing when idlePer instance-hour — idle costs the same as busy
Effective unit costFixed per-model rateInstance bill ÷ tokens served (utilization-driven)
Cheapest atLow / spiky / unpredictable volumeSteady high volume above ~40–60% utilization
Ops burdenNone — AWS runs itHigh — you run the fleet + serving stack
ScalingAutomatic (managed)You build/tune autoscaling + headroom
Cold startsNone visible to youMinutes (boot + load weights); needs warm pools
Control / customizationCatalog models + managed featuresFull — any model, serving stack, hardware
Model choiceCatalog (Claude, Llama, Nova, Mistral…)Any open/custom/fine-tuned model you can host
Time to productionMinutes (API call)Days–weeks (build + harden)
Team neededApplication developersML-infra / DevOps engineers
Best forSpeed, variable traffic, no ML-infra teamSteady high volume, specific model, full control
Cash cost with CloudRoute$0 — credits cover Bedrock tokens$0 — credits cover GPU/inf instance-hours
Every figure is representative as of 2026; per-token and per-instance pricing move and the break-even depends on your model, instance, region, and traffic shape. Confirm current Bedrock and EC2 rates on the AWS pricing pages, and benchmark cost-per-million-tokens at your real traffic before committing either way.
deciding build vs buy?
Get a partner to run your break-even — then build the path you pick and fund it
Get matched in 24h →
a recent match

A build-vs-buy call decided on the numbers — anonymized

inquiry · Series-A AI SaaS, LLM feature with two very different traffic profiles
Series-A AI SaaS, ~35 people, running an LLM-powered feature — a steady, high-volume in-product workload during business hours plus a spiky, unpredictable public-facing one

Situation: The team was mid-argument internally. One camp wanted to self-host an open model on GPU to "stop paying per token"; the other worried about ops, cold starts, and a GPU bill that ran whether or not anyone used the feature. They had no break-even analysis, served a fine-tuned open-weight model on the high-volume path (so a managed catalog model would not drop in wholesale), had never run vLLM in production, and were watching an early GPU-experiment bill climb with no credits cushioning it.

What CloudRoute did: CloudRoute routed them within a day to an AWS Advanced partner with both GenAI and ML-infrastructure experience. The partner modeled both traffic profiles and benchmarked cost-per-million-tokens for each across Bedrock, EC2 GPU, and Inferentia at the real traffic shapes. The honest answer was a split: the steady business-hours workload sat comfortably above break-even, so they self-hosted the fine-tuned model on utilization-tuned inf2 endpoints with cold-start-aware warm pools; the spiky public workload sat far below break-even, so they put it on Bedrock and paid nothing for its idle hours. The partner then filed Activate plus a GenAI PoC credit request through ACE to cover both the inf instance-hours and the Bedrock tokens.

Outcome: Per-token cost on the steady workload dropped well below the prior all-Bedrock approach once it was self-hosted at high utilization, while the spiky workload got cheaper and simpler on Bedrock than a GPU it could never have kept busy — and credits covered both bills, so cash cost for the credit runway went to roughly zero. The internal build-vs-buy argument ended because the decision was made per workload, on benchmarked numbers, rather than by preference. CloudRoute was paid by the partner from AWS engagement funding — the company paid $0 for the routing.

decision: split (self-host steady · Bedrock spiky) · basis: benchmarked break-even · credits: Activate + GenAI PoC · cost to customer: $0

faq

Common questions

Is Amazon Bedrock cheaper than self-hosting an LLM on a GPU?
It depends almost entirely on utilization, because the two bill differently. Bedrock charges per token with no idle cost, so it is usually cheaper for low, spiky, or unpredictable traffic — you pay only for what you use. Self-hosting charges per GPU instance-hour whether the instance is busy or idle, so it is cheaper only once you keep the instance busy enough — very roughly above 40–60% sustained utilization (representative for 2026, model- and instance-dependent). Below that break-even Bedrock typically wins on total cost; above it, a well-utilized GPU or Inferentia endpoint can be meaningfully cheaper per token. Benchmark cost-per-million-tokens on your real traffic shape before deciding.
What is the utilization break-even between Bedrock and a self-hosted GPU?
It is the point where a self-hosted instance's per-token cost (its hourly bill divided by the tokens it serves) drops below Bedrock's flat per-token price. As a representative rule of thumb for 2026 it sits somewhere around 40–60% sustained utilization for a mainstream open model on a well-chosen GPU, but it varies with the model, the instance, sequence lengths, and which Bedrock model you compare against. Cheaper silicon (Inferentia/inf2) or smaller/quantized models lower the instance cost and pull the break-even down. The reliable method is to model your real traffic and benchmark both at that shape rather than trusting any single number.
Why does idle time matter so much in this decision?
Because a self-hosted GPU costs the same per hour whether it serves a million tokens or zero, idle time is pure waste you pay for. Real traffic is rarely flat — business-hours peaks, overnight troughs, weekend lulls, launch spikes — so you provision for the peak and the instance sits underused the rest of the time. A GPU that averages 25% utilization is effectively paying four times its full-load per-token cost. Bedrock charges nothing for the idle hours, which is why bursty or part-time traffic favors it even when peak utilization looks high. Average utilization, not peak, sets your real per-token cost.
What are cold starts and why do they favor Bedrock?
A cold start is the delay when autoscaling launches a fresh GPU instance to handle rising traffic: it must boot, pull a container, and load multi-gigabyte model weights into accelerator memory before it can answer — often several minutes. During that window the new capacity is useless, so a spike either overloads existing instances or waits. Teams mitigate with warm pools and pre-provisioned spare capacity, but warm spares are idle GPUs you pay for, which lowers utilization and raises the break-even. Bedrock has no cold-start problem visible to you — the managed service holds the capacity — so for spiky traffic it is both simpler and often cheaper.
When does self-hosting on GPU or Inferentia actually pay off?
When you have steady, high, predictable volume that keeps an endpoint above the utilization break-even; when you must run a specific open, fine-tuned, or custom model not available on Bedrock; when you need serving-stack or hardware-level control to hit cost or latency targets; and when you have the ML-infrastructure team to build autoscaling and handle cold starts. Using Inferentia (inf2) or smaller/quantized models lowers the break-even and makes self-hosting viable at a utilization you can realistically sustain. If none of these hold — especially if traffic is spiky or you have no ML-infra team — Bedrock is usually the better call.
Can I use Bedrock and self-hosting together?
Yes, and the most cost-effective mature stacks often do. Route each workload to the option whose economics fit its traffic: Bedrock for spiky, standard-model, or time-to-market workloads (nothing paid when idle, no cold starts), and self-hosted GPU or Inferentia for steady, high-volume, custom-model traffic where unit cost dominates. A very common arc is to start everything on Bedrock for speed and low-volume economics, then graduate the specific high-volume workloads to self-hosting once they cross the break-even and justify the engineering — while keeping everything else managed.
What hidden costs does self-hosting add beyond the GPU instance price?
Several, and they often exceed the instance sticker for a small team: engineering time to build and maintain the serving stack (vLLM/TGI, autoscaling, observability, on-call) and the salary of the people doing it; over-provisioning headroom and warm pools you must hold to absorb spikes and avoid cold starts (idle GPUs you pay for); data transfer and storage; a one-time Neuron SDK port if you choose Inferentia; and the opportunity cost of ML engineers running infrastructure instead of building product. Bedrock folds essentially all of this into its per-token price, which is why a true total-cost-of-ownership comparison shifts further toward Bedrock than a bare instance-vs-token comparison suggests.
How does CloudRoute help with the build-vs-buy decision and the bill?
CloudRoute routes you to a vetted AWS partner who is path-neutral: they run the break-even analysis on your real traffic, recommend Bedrock or self-hosting (or a mix) honestly, then build whichever you pick — standing up Bedrock with Knowledge Bases/Agents, or self-hosting an open model on GPU/Inferentia with utilization-aware autoscaling and cold-start mitigation. The same partner files the AWS credit applications through ACE — Activate (up to $100K), Bedrock/GenAI PoC ($10K–$50K), and the GenAI Accelerator (up to $1M) — which cover Bedrock tokens or GPU/inf instance-hours alike. The customer pays $0: AWS funds the credits, the partner is paid by AWS, and CloudRoute is paid by the partner.

Build or buy? Decide on the numbers — then fund it to $0

Whether the answer is Bedrock, self-hosted GPU/Inferentia, or both, CloudRoute routes you to a vetted AWS partner who runs the break-even, builds the path you pick, and files the AWS credits that cover the bill. Customer pays $0 — AWS funds it.

matched within< 24h
credit ceilingup to $1M
cost to you$0
Bedrock vs Self-Hosted GPU — the build-vs-buy call (2026) · CloudRoute