Azure OpenAI cost vs self-hosted vLLM

Azure OpenAI bills per token, per reserved capacity or per Batch job, while self-hosted vLLM shifts cost to GPUs, a gateway, monitoring and people. The break-even depends on your utilization.

On this page

Azure OpenAI cost vs self-hosted vLLM: where the break-even sits

vLLM has no license fee: it is Apache-2.0 licensed with no paid edition, so the comparison with an Azure OpenAI bill turns on GPU utilization and staff cost, not on a per-token price. The costs you would carry are the GPU or other accelerator capacity, the surrounding infrastructure (gateway, storage, networking, monitoring), the implementation work to stand it up, and the engineers who operate it. Each of those is paid to a different party: GPU capacity to your cloud or hardware vendor, implementation to a partner or your own team, and operations to your staff or an on-call rota.

On the Azure side, three commercial shapes suit different traffic. Pay-per-token Standard deployments carry no capacity commitment and fit spiky or low volume work. Reserved provisioned throughput units (PTUs) fit steady, predictable load where you pay for reserved capacity whether or not you use it. Batch processing is priced at 50% of the standard rate, which suits work that can wait for results, such as offline evaluation or document backfills. Ask Microsoft for current rates in your region and agreement, because they change and are not stated here.

Self-hosting pays off only when your own GPUs stay busy. Idle accelerators cost the same as busy ones, so the break-even depends on sustained, predictable token volume and on the share of the year those GPUs serve real requests. Before comparing quotes, measure your current peak and average tokens per minute, the batch share of your workload and the hours of on-call cover you would need. Then ask each vendor or your cloud provider for a written quote covering GPU hours, redundancy for a second node, and the people time to operate the stack.

Which cost components sit on each side and when they are paid

This table sets Azure OpenAI pay-per-token, reserved PTU capacity and Batch pricing against the hardware, gateway, monitoring and people that a self-hosted vLLM stack needs. Read each row as a cost line, then check whether it is one-time or recurring and what drives it up. The main takeaway is that the open-source software carries no license fee, so the comparison turns on utilization, hardware and the engineers who operate the stack.

Cost componentAzure OpenAI sideSelf-hosted vLLM sideOne-time or recurring
Model usage or capacityPay-per-token Standard deployments, reserved PTUs, or Batch at 50% for asynchronous work; confirm current rates in the Azure pricing pagesNo model fee; open-weight model weights are downloaded and stored on your infrastructurePTUs and per-token charges recur; weights are one-time transfer plus storage
GPU or accelerator hardwareIncluded in the service price; you do not buy or host GPUsGPU virtual machines or on-premises servers sized for the chosen model and concurrency; vLLM runs on NVIDIA CUDA, AMD ROCm and Intel XPUPurchase is one-time; cloud GPU rental and power or colocation recur
Gateway and virtual keysAzure API management and key handling are part of the Azure resource; extra gateway tooling is optionalLiteLLM open-source proxy (MIT) with PostgreSQL for virtual keys and Redis 7.0 or newer once more than one instance runs; SSO beyond 5 users and some controls need a LiteLLM Enterprise licenseSetup is one-time; database, cache and any Enterprise license recur
Monitoring and metricsAzure Monitor and diagnostic logs billed by the platform; confirm retention and volume chargesPrometheus scraping vLLM /metrics and Grafana dashboards, both self-hosted with storage and computeInitial dashboards are one-time; storage, retention and upkeep recur
Implementation and migrationApplication changes to Azure endpoints and deployment names, with internal or partner effortModel evaluation on your own prompts, vLLM and gateway deployment, network isolation and cutover, usually through a written, fixed scopeLargely one-time, but migrations are paid in full before the first production request
On-call and operationsAzure carries the service operations; your team handles incidents in the application layerYour engineers or an outsourced retainer cover GPU failures, node health, scaling, patching and on-call rotationsRecurring; usually the largest cost line when utilization is low
Upgrades and revalidationModel retirements and version changes arrive on the provider's schedule and require revalidation of your promptsvLLM ships new minor releases about every two weeks, so you choose when to upgrade and must retest; LiteLLM supports the four most recent stable minor versionsRecurring; each upgrade cycle needs regression testing
Internal skillsAzure administration and OpenAI API knowledge, usually already present in cloud teamsGPU operations, Kubernetes or Helm, PostgreSQL, Redis and inference tuning, which may need hiring or trainingHiring and training are one-time; retained expertise recurs

What moves the comparison most

Six drivers decide whether reserved Azure OpenAI capacity or self-hosted vLLM costs less for your workload. Most of them change the fixed cost of running GPUs, so the same token volume can favor different options in different organizations.

Sustained GPU utilization and peaks

Self-hosted GPUs are paid for whether or not they serve tokens, so the cost per token falls as sustained utilization rises. Spiky traffic leaves capacity idle between peaks, which favors pay-per-token Standard deployments or Batch for work that can wait. Measure hourly token throughput over several weeks, including the busiest hour, before sizing either option. vLLM's /metrics endpoint exposes token throughput and KV cache use, which give you the data to do this.

Token volume and model size

Larger models need more GPU memory and more accelerators per replica, so each token costs more to serve on self-hosted hardware even when throughput is high. Smaller open-weight models can serve the same task on fewer GPUs, which lowers the fixed cost. Input and output token counts are priced differently in Azure OpenAI, so separate them when you estimate. Test candidate models on your own prompts before deciding that a larger model is required.

Latency tolerance and commitment type

Reserved PTUs suit steady, latency-sensitive workloads that need predictable throughput. Work that tolerates delay, such as nightly summarization or bulk classification, can use Batch pricing or on-demand capacity instead. The more of your traffic that tolerates delay, the less reserved capacity you need to buy. Ask Microsoft for the current PTU terms and the Batch discount in writing for your region and model, since these change over time.

Availability and multi-node operation

A high-availability target usually means at least two replicas in separate failure domains, plus spare capacity for maintenance and upgrades. Each added replica is more GPU cost, and models too large for one node need multi-node serving. vLLM supports tensor parallelism within a node and pipeline parallelism across nodes, but its security docs say node-to-node traffic is insecure by default and must sit on an isolated network. Include that networking and the spare capacity in the comparison.

Applications and teams sharing the gateway

A gateway shared by many applications spreads fixed infrastructure and on-call cost across more consumers, which improves the self-hosted case. Each team also adds budgets, keys and model access rules to administer. LiteLLM virtual keys with per-team budgets and rate limits require PostgreSQL, and multiple proxy instances require Redis 7.0 or newer. Count the teams that will need separate spend tracking, since chargeback is often the reason shared gateways get built.

Existing platform engineering skills

Self-hosting moves operating work to your staff: GPU driver and CUDA upgrades, Kubernetes manifests, monitoring, certificate rotation and vLLM version upgrades. Teams that already run Kubernetes and GPU nodes add less cost than teams starting from scratch, who should budget for hiring or outside support. Ask whether your on-call rota can cover model serving outside business hours, and price that coverage explicitly, because it recurs for as long as you self-host.

How to build the comparison with your own numbers

This sequence turns the cost components into a comparison built on your own traffic, hardware quotes and staffing, so you can see at what utilization reserved capacity or self-hosting starts to pay off. Each step produces a figure you can check against your invoices and quotes.

  1. Export token volumes from Azure usage data

    The cloud or finance team exports usage for the last full billing period from the Azure portal or cost management exports, then records input and output tokens for each Azure OpenAI deployment and each model. Use the deployment name and model version as keys so that traffic can be matched to the applications that generate it. The step is done when you have a table of tokens per deployment per model per day or per hour, with the peak hour identified. If your usage data does not show tokens at this level, ask Microsoft account support or your Azure administrator which metrics and exports are available before you estimate anything.

  2. Separate pay-per-token, PTU and Batch traffic

    Split the exported volumes into three groups: Standard pay-per-token calls, calls served by provisioned throughput (PTU) deployments, and asynchronous calls submitted through the Batch API. Batch traffic is billed at a different rate from Standard, so it must be priced on its own line rather than mixed into per-token totals. Ask your Azure account team to confirm current rates for each group in writing, because these figures change and should come from the quote, not from this page. The step is done when each group has its own token total and its own unit price in your sheet.

  3. Size GPU capacity with a benchmark on your prompts

    Deploy an open-weight candidate model with vLLM on a test GPU host and run a load test that replays a representative sample of your real prompts, including long inputs and the output lengths you see in production. Measure throughput and latency at your target concurrency, using the Prometheus metrics that vLLM exposes at its metrics endpoint. Repeat the test for average and peak load to get the GPU count for each. The output is a table showing how many accelerators you need for each traffic level, with the model, context length and quantization recorded. Treat the result as specific to that model and workload, and retest when either changes.

  4. Price GPU hours from written cloud or hardware quotes

    Request written quotes for the GPU instances you would run, either from your cloud provider for on-demand and reserved commitments or from your hardware vendor for owned servers, including power, rack space, support and replacement terms. Note what is one-time (hardware purchase, implementation, initial hardening) and what recurs (instance hours or amortization, support, power, facility). Ask for the commitment length and what happens to unused reserved hours. The step is done when every GPU option has an hourly or monthly cost, a commitment term and a list of exclusions, all in writing.

  5. Add gateway, monitoring, storage and staffing lines

    Add the cost of the components that surround the model servers: the LiteLLM gateway and its PostgreSQL and Redis dependencies, the monitoring and logging stack, object storage for logs or weights, load balancers, and the engineers who run the platform. Staffing is usually the largest recurring line that teams underestimate, so include the on-call rota, upgrade effort for vLLM and LiteLLM releases, and security patching. Record which of these lines are internal salary time, which are vendor or consultant fees, and which are cloud charges. The step is done when each surrounding component has an owner and a monthly figure, or an explicit note that it is excluded.

  6. Model utilization at several levels

    Build a sheet that compares the total Azure cost, including reserved PTU capacity where it applies, with the self-hosted total at several utilization levels, such as low, average and peak use. Show the cost of paying for reserved capacity that sits idle when traffic falls, and the cost of on-demand GPUs when traffic is steady. The break-even point is the utilization at which the self-hosted total equals the Azure total for the same work. Mark where your current traffic falls on the curve. The step is done when you can point to the utilization level at which each option becomes cheaper, and state the assumptions behind that level.

  7. Validate the model with a written review

    Have the platform owner, the finance approver and the security or compliance lead review the sheet, the benchmark results and the quotes together. The review checks that every number traces to an export, a test log or a written quote, and that the staffing assumptions match the team you actually have. Record any figure that is still an estimate and the date it must be confirmed. The step is done when the sheet has a signed-off version, a list of open items and a named owner for each open item.

How a self-hosted vLLM stack is put together

The cost of a self-hosted vLLM stack sits in five components, and the GPUs are only one of them. vLLM serves the open-weight model on GPU capacity and exposes OpenAI-compatible endpoints such as /v1/chat/completions and /v1/embeddings, so applications written for the OpenAI API can point at it. vLLM has no paid edition, so its license cost is zero, but the accelerator hardware, the node operating system, the network and the people who run them are all yours to fund. vLLM also publishes Prometheus-format metrics at /metrics, covering request counts, token throughput, latency histograms and KV cache use. Those metrics feed the monitoring stack you already run, and that stack is a line item to confirm, not a free add-on.

The gateway is where most of the operating effort lands. LiteLLM sits in front of vLLM and issues virtual keys with per-key, per-user and per-team budgets, TPM and RPM limits, and model restrictions. Those controls need a PostgreSQL database. Once more than one proxy instance runs, LiteLLM's production guide requires Redis 7.0 or newer for shared rate limits, router state and cache, so plan for managed or self-run PostgreSQL and Redis with backups, patching and failover. Ask your team which of these they can operate in-house and what a managed equivalent would cost in your environment.

vLLM's own --api-key option does not protect every endpoint. According to the vLLM security docs, it covers /v1, /v2, /inference and /cohere, but not /invocations, /pause, /resume, /abort_requests, /metrics or /health, and the docs advise against relying on it alone. Their recommended pattern is a reverse proxy that allowlists only the endpoints meant for users. Budget for that proxy, its TLS certificates and its configuration review as a recurring part of the stack, and confirm during design that the metrics and control endpoints are reachable only from your monitoring network.

Costs teams forget on each side

Most comparisons stop at the per-token price or the GPU hourly rate. The cards below list the recurring costs that sit outside those numbers on each side, so the comparison covers the whole operating picture rather than only the line items on the invoice.

Egress from applications

Every prompt and completion crosses a network boundary, and the charges for that traffic depend on where your applications, gateway and model deployment sit. Check whether your applications run in the same region as the Azure OpenAI resource, and whether traffic leaves your cloud account through NAT gateways or a private link. On the self-hosted side the same question applies to the GPU cluster's network path and any data transfer between your VPC and clients. Ask your cloud team to model egress for your actual call pattern before comparing totals.

Quota and capacity planning

Azure OpenAI limits throughput through quota per region, model and deployment type, and raising quota is a request that depends on Azure's approval and availability. Teams often hold spare quota or buy reserved capacity to avoid throttling during peaks, which is a cost even when traffic is low. Confirm current quota for each model in the regions you need with your Microsoft account team, and record the peak tokens per minute your workloads actually reach.

Revalidation when models retire

Each model change on the Azure side means re-running prompts, evaluations and downstream checks, and the cost is engineering and product time rather than tokens. The retirement schedule is set by the provider, so the work recurs on a timetable you do not choose. Estimate how many applications depend on each model version and how long your evaluation suite takes to run, then compare that recurring effort with the cost of pinning an open-weight version you control.

Provisioned-to-on-demand migrations

Moving a workload between provisioned capacity and pay-per-token deployments changes the cost profile and often the API behavior, rate limits and latency your applications see. Teams that buy reserved capacity and later shift traffic to on-demand, or the reverse, pay for a migration project plus a period of parallel running. Ask whether your reservation term allows you to exit early and what happens to unused capacity if traffic falls.

Idle GPU time

A GPU instance is billed whether or not it serves requests, so the utilization of your cluster determines the effective cost per token. Low-traffic periods, nights, weekends and development environments can leave expensive accelerators idle. Measure request volume and KV cache use over a representative period using the vLLM metrics, then decide whether to scale down, share hardware across models or keep the capacity for a single critical workload.

Failover and redundant capacity

A single self-hosted deployment has no fallback when a node fails or a GPU is replaced. Production designs usually keep a second replica or a second region, which doubles the accelerator line item unless the standby capacity serves other work. LiteLLM routing and fallbacks can send traffic to an Azure OpenAI endpoint during an outage, which is a hybrid option to price against a full standby cluster. Write down the availability target your business requires before sizing either side.

Weight storage and transfer

Open-weight models must be downloaded, verified, stored and copied to each cluster, and the storage and transfer charges recur with each new version. Large weight files also consume time during upgrades and disaster recovery restores. Ask your platform team where weights are stored, how checksums are verified, and whether the object store sits in the same region as the GPUs to limit transfer charges.

Security reviews of the stack

Self-hosting adds a gateway, a serving engine, a database, a cache and a metrics pipeline, and each needs access control, patching and a review before it handles regulated data. The vLLM security guidance recommends a reverse proxy that allowlists user-facing endpoints, because the API key option does not cover every route. Budget for the internal or external assessment and the evidence you keep, since these are people costs that continue after launch.

Upgrade cadence

vLLM publishes new minor releases about every two weeks in 2026, and LiteLLM supports the four most recent stable minor versions. Each upgrade needs regression testing against your models, prompts and GPU driver combination, so the cadence is a recurring engineering commitment. Decide in advance how often you will upgrade, which versions you will skip and who signs off each change.

Questions buyers ask before comparing costs

Is vLLM free to run in our environment?

vLLM is open-source software under the Apache-2.0 license and has no paid edition, so the license itself costs nothing. The money goes to the GPU or other accelerator capacity it runs on, the surrounding infrastructure such as storage, networking and the gateway, and the people who install, secure, upgrade and operate it. Those are the lines to price. Confirm with your own cloud or data center team what GPU capacity, reservation terms and support contracts apply in your region, because those vary by provider and are not part of the software license.

What does self-hosting cost in staff time and ongoing effort?

Staff cost is usually the largest recurring line after hardware, and it covers more than initial setup. The work includes standing up the inference servers, placing a reverse proxy in front of them, wiring metrics into your monitoring stack, patching, and handling on-call for GPU failures and capacity spikes. vLLM ships new minor releases about every two weeks, so the upgrade cycle is continuous rather than occasional. Ask any vendor or implementation partner to break its quote into one-time build work and recurring operations, with the number of engineers covered and the on-call model stated.

When do reserved PTUs beat pay-per-token pricing?

Reserved capacity tends to win when your traffic is steady and high enough to keep provisioned throughput busy for most hours. Pay-per-token pricing wins when usage is spiky, unpredictable or low. Compare the reserved hourly commitment against your measured tokens per hour at peak and average load, including how much headroom you need for growth. Check the current Azure OpenAI pricing page for PTU rates, Standard token rates and the 50% Batch discount terms, since these change and this page does not state them. Also ask whether the reservation is one-time or recurring, and whether it can be scaled down.

How much utilization justifies owning GPUs for vLLM?

Self-hosting pays off only when GPUs stay busy enough that their fixed cost is spread across many useful tokens. The break-even point depends on the model size, the GPU type, the throughput you achieve under your real prompt lengths, and how many hours you must keep hardware on standby for failover. Measure this before deciding: vLLM exposes Prometheus-format metrics at /metrics covering request counts, token throughput and KV cache use, which gives you the observed numbers to model. Build the comparison from those measurements, not from vendor benchmarks run on different prompts.

Can our platform team run vLLM without outside help?

A capable platform team can run vLLM, but the tasks that trip teams up are the ones outside the model server itself. vLLM's security documentation states that node-to-node communication in multi-node deployments is insecure by default, so nodes must sit on an isolated network. Its --api-key option does not protect every endpoint, so a reverse proxy that allowlists only user-facing routes is needed. Teams also need GPU drivers, Kubernetes expertise if they use it, and a gateway such as LiteLLM with PostgreSQL and Redis. Assess these skills honestly against your staff, then decide which parts to keep in-house.

What should a DeployOpen quote include?

DeployOpen does not publish a price list. Engagements are fixed-scope, so a quote follows from a written scope with agreed deliverables and timelines before work starts. Ask that the quote separate planning, implementation, integration with your applications and gateway, hardening, backup, documentation and any compliance evidence preparation. Ask for ongoing support, upgrades and testing to be priced as a retainer apart from the build. State which infrastructure costs are yours to pay directly, such as GPU capacity in your own accounts, so the total is comparable with your current Azure OpenAI spend.

How often do upgrades recur, and what do they involve?

Upgrades recur continuously. vLLM publishes new minor releases roughly every two weeks, and LiteLLM maintains support for the four most recent stable minor versions in its open-source and Enterprise deployments. Each upgrade means testing the new version against your prompts, checking API compatibility, rolling it out and confirming metrics still flow. Ask any provider to describe the upgrade cadence it commits to, the test evidence it produces for each change, and whether upgrades are included in a retainer or billed per event.

Does LiteLLM require a paid license for production use?

The core LiteLLM gateway is MIT licensed, and everything outside its enterprise directory uses that license, so the open-source proxy can run without a license fee. A paid license applies to content under the enterprise directory. LiteLLM's documentation states that SSO is free for up to 5 users from v1.76.0, and an Enterprise license is needed beyond that. Enterprise also adds SCIM, JWT authentication, audit logs, organization and team RBAC, and secret manager integrations. Check the LiteLLM license terms and your user count before you decide whether those features are required.

How DeployOpen scopes a fixed-price vLLM implementation

DeployOpen plans and implements self-hosted open-source platforms inside your own cloud accounts, data centers or air-gapped networks. For Azure OpenAI cost vs self-hosted vLLM, we start from your current token volumes, PTU or Batch commitments and operating costs, then agree a written scope before any build work starts.

How we scope

  • We inventory current Azure OpenAI deployments, token volumes and reserved PTU commitments before modeling any alternative.
  • The written scope names which models, gateway features, GPU capacity and monitoring components are in and out of the engagement.
  • Engagements are fixed-scope, with deliverables and timelines agreed in writing before work starts; a quote follows from that scope.

How we build

  • We deploy vLLM behind a gateway in your environment, with the OpenAI-compatible endpoints tested against your existing application calls.
  • We restrict exposed vLLM endpoints with a reverse proxy allowlist, because the API key option alone does not cover every route.
  • We benchmark throughput and utilization on your own prompts so the capacity sizing reflects your workload rather than generic assumptions.

How we hand over

  • You receive documentation of the architecture, GPU sizing assumptions, cost model inputs and the utilization thresholds we measured.
  • Runbooks cover scaling, model upgrades, key rotation, backups of gateway database state and monitoring alerts.
  • Handover includes a review session where your engineers operate the stack and confirm each deliverable against the written scope.

How we support

  • Ongoing support, upgrades and continuous testing are available as retainers after handover.
  • We can track vLLM and gateway release changes and plan upgrade windows that your team approves.
  • Ask any provider to confirm in writing which costs stay with your team, including GPU capacity, cloud accounts and on-call staffing.

Sources and further reading

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.