Back to all posts

cat posts/revolut-self-hosts-glm-5-3-0-30-your-azure-cost-math.md --category "Azure & Cloud" --views 9

Revolut self-hosts GLM-5.3 at $0.30: your Azure cost math

Revolut serves GLM-5.3 to about 2,000 engineers from 56 B200 GPUs at $0.30 per million tokens, a tenth of its previous Anthropic and OpenAI bill. On Azure the same model is available three ways: Claude in Foundry, GLM-5.3 per token via Fireworks, or the open weights on an H200 or MI300X node in Sweden Central, and only the last keeps prompts in Sweden, so the per-token and per-node break-even math below carries DORA and residency consequences as well as a price.

  • --author By Falak Mahmood
  • --date November 5, 2026
  • --read 13 min read
  • --views 9 views

Revolut now serves its default coding model to about 2,000 engineers from 56 Nvidia B200 GPUs at a blended $0.30 per million tokens, roughly a tenth of what it paid Anthropic and OpenAI before. David Abitbol, the bank's operations and infrastructure lead, gave the numbers at AI Engineer in New York on 13 October, and The Register wrote them up on 3 November. The model is Z.ai's open-weight GLM-5.3. Claude Code and Codex stay available, but as the exception rather than the default. For a Swedish enterprise running its AI estate on Azure, the story poses a sharper question than "should we self-host": GLM-5.3 is already in the Microsoft Foundry catalog, per token, so there are three routes to compare, and only one of them keeps prompts inside Sweden Central.

What Revolut actually built

The talk, titled "Shipping like a startup, regulated like a bank", is twelve minutes of operational detail. Revolut started self-hosting in April 2026 on GLM 5.1 and has since moved to GLM 5.3, a 753-billion-parameter mixture-of-experts model that needs about 380 GB of GPU memory for weights in FP4, plus 6 to 26 GB per active user for context. The serving stack is tensor-parallel across eight GPUs per replica, with FP4 quantisation on Blackwell cutting the memory footprint by 40% against FP8.

Two tuning decisions carried most of the result. Context is capped at 256K tokens even though the model accepts 1M; Abitbol's phrase was "long context is a scam", and the practical point is that KV cache per user is what limits concurrency. Sticky sessions push the prompt cache hit rate above 90%, and cache hits are free on your own hardware. Together with request batching, tuning rather than new GPUs delivered a 76% increase in requests per second between April and August, and time to first token fell from 14.26 seconds to 1.68 seconds. The service targets under three seconds to first token and about 200 tokens per second per stream, which Abitbol says is adequate for interactive coding; engineers start complaining above five seconds.

GLM-5.3 is text-only, so a local router sends anything with an image to a vision model (Gemini or GPT Luna). Frontier models remain for tasks where they are clearly better. The productivity claims, 60% better coding time and 70% better lead time, are Revolut's own internal figures, and Abitbol attributes them less to model quality than to engineers no longer rationing tokens against a per-seat bill that had reached $1,000 to $10,000 a month for some individuals.

The regulatory framing matters for anyone reading this from a Swedish bank or insurer. Revolut classifies coding agents as human-supervised productivity tools rather than autonomous systems, runs them in sandboxed execution, keeps data processing inside the required jurisdiction, and logs everything through OpenTelemetry. None of that is exotic. It is the set of controls a risk function expects before it signs off a new ICT service.

Three routes on Azure

A Swedish organisation on Azure does not have to choose between "Claude in Foundry" and "buy 56 GPUs". The same model Revolut runs is available two more ways, and the data residency outcome differs sharply between them.

Route A: Claude in Foundry, per token

Claude Sonnet 5.5 lists at $2 per million input tokens and $10 per million output tokens in Foundry, Opus 5.5 at $4 and $20, and Haiku 5.5 at $0.10 and $0.50. Billing runs through Claude Consumption Units on your Azure invoice and counts against a MACC. The "Hosted on Azure" version keeps prompts and outputs inside Azure end to end, but the deployment types are Global Standard and Data Zone Standard (US) only. There is no EU data zone for Claude, which is the same gap we covered when the EU Data Zone premium for Azure OpenAI doubled. Anthropic is the data processor under its own DPA on both hosting options.

Route B: GLM-5.3 in Foundry via Fireworks, per token

FW-GLM-5.3 is generally available in the Foundry catalog as a pay-per-token model on Global Standard and Data Zone Standard. The Azure retail prices API lists the Global meters at $1.75 per million input tokens, $0.325 per million cached input tokens and $5.50 per million output tokens; the Data Zone meters carry a 20% premium at $2.10, $0.39 and $6.60. FW-GLM-5.3-Flash, the smaller multimodal sibling, is $0.188 input, $0.038 cached and $0.625 output on Global only. Provisioned throughput exists too: Global Provisioned starts at 5 PTUs at $1 per PTU-hour, so a $5-an-hour floor, while Data Zone Provisioned requires a 320-PTU minimum.

Read the privacy FAQ before you get excited about the price. Fireworks runs inference on its own GPUs, so "customer data travels outside Microsoft facilities". Fireworks is a Microsoft subprocessor and Microsoft's Product Terms and DPA apply, but with a stated exception: the service "does not comply with SOC 1 Type 2 and has not obtained PCI, HITRUST, or FedRAMP certifications". The Data Zone option is pinned to US regions, full stop; the Sweden Central meter in the price list is a billing artefact, not an EU processing commitment. Pay-per-token Fireworks models also get only 15 days' notice before retirement, against 12 months for the PTU offering. The model provider, Z.ai, has no access to your data on this route.

Route C: the weights on your own Azure GPUs in Sweden Central

GLM-5.3 ships as open weights under Z.ai's own licence, in BF16 and FP8 on Hugging Face. The 380 GB FP4 footprint Revolut quotes fits in one eight-GPU node with room to spare for KV cache. In Sweden Central, the Azure retail price list on 5 November shows two candidate nodes on pay-as-you-go:

  • Standard_ND96isr_H200_v5: eight H200 GPUs, 1,128 GB of HBM, $110.27 per hour, about $80,500 per 730-hour month.
  • Standard_ND96isr_MI300X_v5: eight MI300X GPUs, 1,536 GB of HBM, $67.20 per hour, about $49,100 per month.

Blackwell is not an option in Sweden yet. The only GB200 size, Standard_ND128isr_NDR_GB200_v6 with four 192 GB GPUs per VM, is priced in Germany West Central at $140.60 per hour and in East US 2 at $108.16, and has no Sweden Central, West Europe or North Europe meter at all. A Swedish buyer who insists on Blackwell is choosing Frankfurt.

There is a lighter variant of this route. Foundry managed compute lets you deploy a Hugging Face model into your own subscription on Azure GPUs, and Hugging Face published a worked deployment of GLM-5.3-Flash on MI300X in Foundry on 14 October. The Sweden Central managed-compute meter for MI300X is $7.91 per GPU-hour, so a four-GPU Flash pilot costs $31.64 an hour and an eight-GPU node $63.28. Inference stays inside your tenant and the endpoint appears in your Foundry project like any other deployment.

The per-token comparison

List prices in USD per million tokens, Global Standard, as of 5 November 2026:

Model in Foundry Input Cached input Output Prompts processed by
Claude Opus 5.5$4.00see note$20.00Anthropic, on Azure or Anthropic infra
Claude Sonnet 5.5$2.00see note$10.00Anthropic, on Azure or Anthropic infra
FW-GLM-5.3 (Global)$1.75$0.325$5.50Fireworks GPUs, outside Microsoft facilities
FW-GLM-5.3 (Data Zone US)$2.10$0.39$6.60Fireworks GPUs, US regions
FW-GLM-5.3-Flash (Global)$0.188$0.038$0.625Fireworks GPUs, outside Microsoft facilities
Claude Haiku 5.5$0.10see note$0.50Anthropic, on Azure or Anthropic infra

Claude cache-read rates are published in Anthropic's CCU price list rather than in the Azure retail API, so they are omitted here; our earlier Sonnet 5.5 cost math and Opus 5.5 migration post cover them.

Assume a coding-agent mix of 90% input and 10% output tokens. Sonnet 5.5 then blends to $2.80 per million, GLM-5.3 Global to $2.13, a saving of 24%. That is a real discount, but it is nowhere near Revolut's tenfold. The 10x comes from two things per-token pricing cannot give you: cache hits that cost nothing, and a fixed monthly bill that does not grow when engineers stop rationing. Flash at $0.23 blended is cheap, but Haiku 5.5 at $0.14 blended is cheaper still and keeps prompts inside Azure, so Flash on Fireworks is hard to justify for a Swedish buyer on price alone.

The per-node break-even

Self-hosting on Azure pay-as-you-go inverts the cost model: the node costs the same whether 10 engineers or 200 use it. The useful question is how many engineers, at their current per-token spend, it takes to pay for one node. Divide the monthly node cost by the monthly per-engineer Foundry bill:

Monthly per-token spend per engineer H200 node ($80,500/month) MI300X node ($49,100/month)
$300268 engineers164 engineers
$1,00081 engineers49 engineers
$3,00027 engineers16 engineers

Those are list prices with no reservation or savings plan applied, and they say nothing about whether one node can actually serve that many people. Revolut's ratio is the only public reference point: 2,000 engineers on 56 B200s is about 286 engineers per eight-GPU node, on faster silicon than H200 and after months of tuning. Treat that as a ceiling, not a plan. A realistic Swedish pilot is one node, 50 to 100 engineers, and a measured cache hit rate before anyone talks about fleet sizing.

The table also explains why most Swedish mid-size teams should stay on per-token billing. At 40 engineers spending $300 a month each, the Foundry bill is $12,000 and the cheapest node is four times that. Self-hosting starts to pay when per-engineer spend is high, which in practice means agentic workflows that run for hours, or when the headcount on one platform passes about 100. Revolut had both. Our Spotify token-reduction post is the cheaper first move if your bill is driven by waste rather than volume.

The Swedish and EU angle

Residency decides the route before price does. Of the three options, only Route C keeps prompts, outputs and model weights inside a Swedish region under your own network controls. Route A keeps data on Azure but offers no EU data zone. Route B sends it to Fireworks' GPUs, and the only data zone on offer is the US one. If your DPIA or your information classification says source code and internal documentation must be processed in the EU, the Fireworks route is out regardless of what it costs, and the Claude route needs the same transfer analysis you already did for Azure OpenAI Global Standard.

DORA changes the third-party register, not the obligation. Financial entities under DORA remain "fully responsible for compliance" under Article 28(1)(a) whatever they outsource, and Article 28(3) requires a register of information covering every ICT third-party arrangement. Route A puts Anthropic and Microsoft in that register; Route B adds Fireworks as a subprocessor with the certification gaps noted above; Route C leaves Microsoft as an IaaS provider and makes the model a piece of software you operate. Revolut's choice to classify coding agents as human-supervised tools, with sandboxing and OpenTelemetry logs, is the kind of documented control Finansinspektionen will expect to see in that register entry.

The Chinese-origin question does not disappear with self-hosting, but it changes shape. When Regeringskansliet blocked ChatGPT and Claude, the concern was where prompts go. With open weights in your own tenant, no prompt reaches Z.ai or any API in China. What remains is a supply-chain question about training provenance and model behaviour, which your AI governance board should answer the same way it would for any third-party component: evaluate on your own tasks, log outputs, and keep a router that can swap the model out. The licence itself is permissive for enterprise use; its one notable restriction is a security-review requirement for model-as-a-service businesses above $10 billion in annual revenue, which excludes embedded use and will not apply to a Swedish enterprise serving its own engineers.

Sovereignty policy is moving the same direction. Sweden's public-sector digital self-determination work, covered in our cloud policy decoder, rewards architectures where a model can be moved between a hyperscaler region and domestic capacity without rewriting the application. Open weights behind an OpenAI-compatible endpoint, which is exactly what Revolut runs, is that architecture.

A decision guide

  • Stay on Claude in Foundry (Route A) if you have fewer than about 80 engineers on the platform, need vision in the main model, or your per-engineer spend is under $1,000 a month. Fix waste first with prompt caching and session hygiene.
  • Use GLM-5.3 per token via Fireworks (Route B) only if your data classification permits processing outside Microsoft facilities with US-only data zone, and you want to evaluate the model before committing GPU budget. Expect roughly a quarter off Sonnet 5.5 at the same token volume, not a tenth.
  • Self-host in Sweden Central (Route C) if residency is mandatory, you have 100 or more heavy users, and you can staff the serving stack. Start with Foundry managed compute on MI300X for the Flash model, then move to a full node once you have a measured cache hit rate above 80%.
  • Keep a router either way. Revolut's pattern of a cheap default plus frontier models as the exception is the part worth copying first. It also gives you the exit from any single vendor, which is what DORA's exit-strategy clauses ask for.

Pilot checklist

  • 1. Measure before you model. Pull 90 days of per-model, per-user token usage from Azure Cost Management and the Foundry Monitor tab. The break-even table is useless without your own per-engineer number.
  • 2. Request ND quota in Sweden Central. ND96isr_H200_v5 and ND96isr_MI300X_v5 both need a quota increase on a fresh subscription, and approval takes days, not minutes.
  • 3. Pilot Flash on managed compute. Deploy GLM-5.3-Flash from the Hugging Face collection to four MI300X GPUs at $31.64 an hour, point a small team at it through the same OpenAI-compatible endpoint shape, and collect first-token latency and cache hit rate for two weeks.
  • 4. Cap context at 256K and enable sticky sessions. Both are configuration on vLLM or SGLang, and both are the difference between Revolut's numbers and a disappointing pilot.
  • 5. Route vision and hard tasks to Claude. Keep a Claude Sonnet 5.5 deployment in Foundry behind the router for image input and for the cases where engineers ask for it, and log which model served each request through OpenTelemetry into Azure Monitor.
  • 6. Update the DORA register and the DPIA. Record which route you chose, where inference runs, and who the subprocessors are. Do it in the pilot, not after go-live.

Conclusion

Revolut's tenfold saving is real but it is a property of owned, saturated hardware and a 90% cache hit rate, not of GLM-5.3 itself. The same model costs 24% less than Sonnet 5.5 per token in Foundry, and that route fails Swedish residency requirements because Fireworks processes the data on its own GPUs with a US-only data zone. Self-hosting on an H200 node in Sweden Central runs about $80,500 a month at list and starts to beat per-token billing somewhere between 30 and 100 engineers depending on how hard they use agents. Measure your per-engineer spend first, pilot Flash on managed compute second, and keep the router whichever way the numbers fall.

subscribe # the AI news that matters, minus the noise

Book a Call

Sources

Tags

Related posts