Skip to main content
emnode
Cost

Buy Azure OpenAI provisioned throughput reservations

One capability for AI spend: when a provisioned throughput deployment runs around the clock, swap the hourly pay-as-you-go rate for a one-month or one-year reservation and stop paying list price for capacity you were always going to use.

13 min·10 sections·AZURE

Last reviewed

Provisioned throughput reservations: the basics

What is Azure Advisor actually telling you to buy?

Azure OpenAI, now part of Microsoft Foundry, sells dedicated capacity in provisioned throughput units, or PTUs. A provisioned deployment reserves a fixed slice of model capacity for your workload so latency and throughput are predictable rather than shared. By default that capacity is billed by the hour at the pay-as-you-go rate, which is the right model while you are sizing a workload or running it intermittently. The moment a provisioned deployment becomes a steady production fixture, running 24x7, the hourly rate is the most expensive way to pay for it.

This is the gap Azure Advisor flags. Its reservation recommendation, 'Consider OpenAI Service Provisioned Throughput reservations to save over pay-as-you-go costs' (recommendation ID dadc1876-61e3-42fc-a70e-e863bbc460b6), looks at your recent provisioned throughput usage and tells you that a term commitment would cost less than continuing to pay the hourly rate. A reservation is purely a billing instrument: in exchange for committing to a one-month or one-year term, the PTUs you were already deploying are charged at a discounted effective rate instead of the hourly list price. The deployment itself, the model, the latency, the API, none of it changes.

The work is to confirm that the deployment really is steady-state, size the reservation to the PTUs you actually run rather than a hopeful peak, and buy it for the right deployment type and scope so the discount lands on the meter you are paying. Get those three right and the saving is automatic from the next billing hour. Get the sizing wrong and you have committed to capacity you may not fully use, so the discipline is in the measurement, not the purchase.

In this lesson you will learn how Azure OpenAI provisioned throughput is billed, why Azure Advisor recommends a reservation for steady-state deployments, and how to size and buy one for the correct deployment type and scope so the discount actually lands. You will see how to read your deployed PTUs, confirm the usage is steady before committing, and verify the reservation is applied afterwards.

Fun fact

The lease nobody signed

Provisioned throughput reservations are the direct descendant of the reserved instance, the discount Azure has offered on virtual machines for a decade in exchange for a one-year or three-year commitment. The idea is identical: dedicated capacity that runs continuously is far cheaper on a lease than on the hourly rate. What is new is the asset. As AI inference moved from experiment to production, the same economics arrived for model capacity, and Microsoft added a Foundry provisioned throughput SKU to the reservations catalogue alongside virtual machines, SQL and storage. The recommendation engine that has nudged teams to reserve idle-but-running VMs for years now does the same for the GPU capacity behind your chatbots.

Sizing a reservation from real deployed PTUs

Priya runs the platform team at a company whose support assistant has graduated from pilot to a permanent feature. The Azure OpenAI deployment behind it has run on provisioned throughput for months, and Advisor has started flagging the reservation recommendation on it.

Rather than accept the Advisor estimate blindly, Priya starts by reading exactly how many PTUs are deployed and on which deployment type, because the reservation has to match the meter it is meant to discount, and over-sizing a one-year commitment is the one expensive mistake here.

List the provisioned deployments on the Azure OpenAI account and read the deployed PTU count and SKU. This is the number a reservation has to match.

$ az cognitiveservices account deployment list -g rg-ai-prod -n support-assistant-oai --query "[].{name:name, sku:sku.name, ptus:sku.capacity}" -o table
Name Sku Ptus
--------------- ------------------------ ------
gpt-4o-chat GlobalProvisionedManaged 100
gpt-4o-eval GlobalStandard 0
# 100 Global PTUs running 24x7. Reserve THIS, not the Standard eval deployment.

Only the provisioned deployment (GlobalProvisionedManaged, 100 PTUs) is reservable. The Standard pay-per-token deployment has no PTUs to reserve. Match the reservation to the deployment type: a Global reservation only discounts Global deployments.

How a provisioned throughput reservation actually appliesdeep dive

A reservation is a financial discount applied to a billing meter, not a change to the deployment. After you buy one, Azure makes an hourly comparison between the PTUs you have reserved and the PTUs you have deployed within the reservation's scope and matching attributes. Deployed PTUs up to the reserved quantity are billed at the discounted reservation rate; any deployed beyond that are charged at the hourly pay-as-you-go rate. If you deploy fewer PTUs than you reserved in a given hour, the excess reserved capacity is simply unused for that hour and does not carry forward, which is exactly why over-sizing a reservation wastes money.

Three attributes have to line up or the discount misses. The deployment type matters: reservations for Global, Data Zone and Regional deployments are not interchangeable, so a Global reservation only discounts Global provisioned deployments. The region matters for Data Zone and Regional reservations, although a single Global reservation can cover Global deployments across multiple regions as long as the reserved quantity covers the total. And the scope matters: a reservation scoped to one subscription only covers deployments in that subscription, while a shared scope spreads the benefit across eligible subscriptions in the billing context.

Two properties of reservations are easy to miss and both matter. First, a reservation does not guarantee capacity, so Microsoft's recommended practice is to create the deployment first and confirm capacity is available, then buy the reservation against PTUs you have actually deployed. Second, the reservation is not tied to the deployment: if you delete the deployment, the reservation keeps billing until you cancel or exchange it. The discount is automatic once the attributes match, but the responsibility for keeping the reservation aligned to live deployments stays with you.

What is the impact of leaving steady deployments on hourly billing?

The direct impact is overpayment. A provisioned deployment that runs 24x7 on the hourly rate pays the on-demand price for every hour, when Microsoft documents that a term reservation re-prices that same capacity at a materially lower effective rate, deeper for a one-year commitment than a one-month one. The reservation discount applies to the usage emitted by the provisioned throughput meters, so the saving is exactly the difference between the hourly rate and the reserved rate, multiplied by every hour the deployment runs. On a deployment running continuously, that gap compounds quickly.

The second-order impact is a distorted view of AI economics. When a steady production workload is billed at the on-demand rate, its cost looks higher than the business case assumed, which can stall expansion of a feature that would actually be affordable at the committed rate. Pricing steady capacity correctly is what lets you compare the true cost of an AI feature against the value it delivers rather than against an inflated on-demand bill.

There is a real trade-off to respect, which is what makes this a judgement rather than a pure no-brainer. A reservation is a term commitment for capacity that does not guarantee that capacity, so reserving a workload that turns out to be temporary, or over-sizing one that scales down, locks in spend you cannot fully use. The impact of getting it wrong is bounded by the documented exchange and refund options, but the discipline is to reserve only what is genuinely steady and to size to deployed PTUs rather than to an optimistic peak.

How do you buy the reservation safely?

Work this as a measure-then-commit loop, not a one-click accept of the Advisor estimate. The order matters: confirm the workload is steady and size to real deployed PTUs before you commit to a term, because over-sizing a one-year reservation is the one mistake that costs money here.

1. Confirm the deployment is genuinely steady-state

A reservation only saves money on capacity you keep running. Before committing, check that the provisioned deployment has run continuously for long enough to be confident in, and that it is provisioned (a ProvisionedManaged or GlobalProvisionedManaged SKU) rather than a pay-per-token Standard deployment, which has no PTUs to reserve.

2. Size to deployed PTUs, by deployment type

Read the deployed PTU count and deployment type from the account. Reserve that quantity, not a hopeful peak: any reserved PTUs above what you deploy in an hour are wasted because they do not carry forward. Reservations are bought in one-PTU increments and are separate per deployment type, so a Global deployment needs a Global reservation.

3. Choose the scope and term deliberately

Scope the reservation to where the deployment lives: a single subscription, a resource group, a management group, or shared across the billing context. Choose the term by confidence: a one-month term for near-risk-free capture of a steady workload, a one-year term for the deeper discount on a settled production fixture.

4. Verify the discount lands, then review on a cadence

After purchase, confirm the reservation appears and check Cost Management utilisation to see the discount applying to the right meter. Because the reservation is not tied to the deployment, set a recurring review so coverage stays matched to live deployments as models, regions and traffic change.

# 1. Read the Advisor reservation recommendation for this estate.
az advisor recommendation list \
  --category Cost \
  --query "[?contains(shortDescription.solution, 'Provisioned Throughput')].{problem:shortDescription.problem, resource:impactedValue}" \
  -o table

# 2. Read the deployed PTUs and deployment type to size the reservation.
#    Reserve THIS quantity, for THIS deployment type, not an optimistic peak.
az cognitiveservices account deployment list \
  --resource-group rg-ai-prod \
  --name support-assistant-oai \
  --query "[?sku.name=='GlobalProvisionedManaged'].{name:name, sku:sku.name, ptus:sku.capacity}" \
  -o table

# 3. Buy the reservation in the portal: All services > Reservations >
#    Microsoft Foundry Provisioned Throughput. Choose the subscription that
#    pays, the scope (single subscription / resource group / shared /
#    management group), the region, and the product matching your deployment
#    type (Global, Data Zone, or Regional). Set the quantity to the deployed
#    PTUs from step 2 and the term to one month or one year. (Buy the Foundry
#    PTU SKU through the Reservations portal: the CLI here only reads the
#    recommendation, the deployed PTUs and the resulting reservation.)

# 4. After purchase, confirm the reservation exists and is applied.
az reservations list \
  --query "[?contains(properties.displayName, 'Provisioned')].{name:properties.displayName, state:properties.provisioningState, qty:properties.quantity}" \
  -o table

Quick quiz

Question 1 of 5

Azure Advisor recommends an OpenAI provisioned throughput reservation on a deployment. What does buying it actually change?

You can now treat an Azure Advisor provisioned throughput reservation recommendation as a measure-then-commit loop rather than a one-click accept: confirm the deployment is genuinely steady, read the deployed PTUs and deployment type, buy a right-sized reservation for the matching type and scope in the Reservations portal, verify the discount lands, and review the portfolio on a cadence. The saving is automatic from the next billing hour and the workload is untouched.

Back to the library