← All talks

AI Engineer NYC 2026 Main stage · 12 min

Shipping like a startup, regulated like a bank

David AbitbolRevolut

David Abitbol describes Revolut’s move toward self-hosted coding models, the inference tuning that made them practical, and the operational controls used around a regulated engineering organization.

The engineering bottleneck was bigger than coding time

6:03:31 ↗

An engineer can write code faster and still spend days moving a feature toward deployment. David Abitbol opens Revolut’s AI story with two measures from a sample of about 2,000 engineers: coding time, measured in hours, and lead time from picking up a feature to having it merged and ready to deploy, measured in days.

Early use of Gemini helped with looking up information and reading documentation. Abitbol reports improvements in both measures. The initial rollout of Claude Code was less compelling economically: some engineers consumed substantial token budgets without a similarly clear return, so the company imposed limits.

That created a second problem. When tokens feel scarce, engineers save them for a difficult coding task instead of using them across the surrounding work. Abitbol describes self-hosting GLM models as a way to give engineers much more freedom to use AI without unpredictable bills.

He reports that the move to GLM 5.1 coincided with roughly 60% better coding time and 70% better lead time on Revolut’s chart. The internal comparison does not isolate the model change from other causes. His interpretation is that engineering delays include the inbox, Jira, Confluence, and other work around the code. Cheaper access broadens which tasks people are willing to delegate.

Tune the same GPUs before buying more

6:07:24 ↗

Open models became Revolut’s default for this workload, with frontier services kept available for exceptions. Abitbol reports using 56 B200 GPUs to serve GLM 5.3 to roughly 2,000 engineers. His target is a time to first token below three seconds; once it exceeds five, users start complaining. Around 200 tokens per second is adequate for the interactive workload he describes, especially as engineers increasingly launch tasks in parallel and return when they finish.

The economics he reports are a blended cost near $0.30 per million tokens and spending around a tenth of the prior Anthropic/OpenAI invoice. Those figures describe Revolut’s deployment and utilization, not a portable price for any self-hosted model.

Simply loading weights onto GPUs did not deliver the desired performance. The team tuned its serving system against actual demand. The chart below holds the GPU count constant while showing higher request volume and lower latency.

Revolut’s tuning slide reports 76% higher requests per second and 88% lower time to first token on the same 56 B200 GPUs.

At 6:10:16, the slide reports 76% higher requests per second and an 88% reduction in time to first token, from 14.26 seconds during migration to 1.68 seconds in the stable setup. Abitbol’s advice is to resist adding GPUs until the existing configuration has been tuned.

Context, cache, and the shape of inference

6:10:29 ↗

The context window competes with concurrent requests for GPU memory. The KV cache stores attention data from tokens already processed, so the model can reuse it while generating the answer. Reserving room for the maximum advertised context may waste capacity when most coding requests are smaller. Abitbol sizes the window to the work engineers actually send.

Quantization can reduce the GPU memory footprint. He favors FP4 on the Blackwell-generation hardware in this deployment. Tensor parallelism also affects the tradeoff: fitting the weights across four GPUs does not necessarily leave enough KV-cache space for the workload, so an eight-way configuration can perform better.

Cache reuse is especially valuable when coding tasks repeatedly carry similar context. He advises checking the cache-hit rate, then considering techniques such as speculative decoding and separating prefill from decode. Prefill processes the input context; decode generates the answer token by token. Their different workloads create opportunities to tune or separate the serving stages.

The production application still needs to handle capabilities outside the main model. For a text-only coding model, Abitbol suggests routing image understanding to another model rather than sacrificing coding quality just to keep every task on one endpoint. Compatible APIs then let engineers use their preferred coding harness against the hosted models.

Keep control around the model

6:12:47 ↗

Abitbol finishes with the operational case for self-hosting. Downloading weights and running them on infrastructure selected by the company is a different data path from sending inference requests to a model developer’s hosted service. The deployment choice matters more than the model’s country of origin alone.

He describes Revolut’s approach to human oversight: configure the sandbox and approval rules so restricted operations require intervention. The rules constrain what a coding agent can actually execute, rather than relying on a promise that a human will review everything later. He also discusses misuse by insiders and prompt injection as concerns for the surrounding controls.

His comments about regulatory classification and acceptable hosting locations describe his view of Revolut’s circumstances. They should not be read as a general determination that a model, region, or sandbox automatically satisfies another organization’s obligations.

The final requirement is observability. If an incident occurs, the team needs enough telemetry to inspect what happened and follow it through the system. That same data supports operational analysis during ordinary use. Lower inference costs let engineers use the model more freely. Sandbox rules limit what it can do, and telemetry lets the team investigate when something goes wrong. Self-hosting leaves Revolut responsible for all three.

Full transcript

Timestamps follow the original livestream. Select a time to watch that moment. Transcripts are machine-generated with reviewed name and terminology corrections; occasional recognition errors may remain.

6:03:31

Hello everyone, welcome.

6:03:35

My name is David.

6:03:37

I lead AI operations at a company called Revolut.

6:03:42

We have 15 minutes today together.

6:03:45

we'll talk about high performance engineering and self-hosting open source model on dedicated GPU.

6:03:52

How does that sound?

6:03:54

Cool.

6:03:55

So it's going to be a technical one, so bear with me.

6:03:59

So maybe to start off, because I know this is the US and you may not know Revolut,

6:04:04

quick words about our company.

6:04:07

We're a digital bank in Europe.

6:04:09

We have 80 million customers.

6:04:11

We're live in 45 markets.

6:04:14

with the most downloaded financial app in Europe for the last year.

6:04:19

And as of July, we're Europe's largest private company.

6:04:25

So we're doing okay.

6:04:29

The emphasis of Revolut is shipping a lot of product,

6:04:32

and so there's a high focus on engineering culture and excellence on that demand.

6:04:39

And so we'll talk about that.

6:04:41

So let's talk about some AI.

6:04:45

We have a chart here.

6:04:47

I'm going to see two lines.

6:04:48

This is a sample of 2,000 engineers' performance over the last year.

6:04:54

So the green line is going to be lead time.

6:04:56

So it's going to be when an engineer picks up a feature

6:04:59

until a feature is merged and ready to be deployed.

6:05:04

The blue line is going to be coding time.

6:05:06

So the green line is in days.

6:05:07

The blue line is in hours.

6:05:11

Just to reset the timeline in case people forget,

6:05:13

because AI moves really fast.

6:05:16

Claude Code came out around February 2025, right?

6:05:20

And that's the Claude Code, Sonnet 3.7,

6:05:22

the one that would delete your prod database, right?

6:05:25

Not the safe cloud and codex that we have today.

6:05:28

So bear in mind when we talk about adoption.

6:05:32

So what you see on this chart is January 25,

6:05:35

first introduced AI in the company, right?

6:05:38

Gemini.

6:05:39

First time people were able to use private data within AI.

6:05:44

Around February, we started playing around with Claude Code, and then January is when

6:05:48

we first launched Claude Code at scale.

6:05:52

What you see is Gemini had 10% improvement in lead time, 20% improvement in coding time,

6:05:58

so that's people no longer need to look at Stack Overflow and reading documentation.

6:06:03

But then Claude Code, not so much impact at the time.

6:06:08

So when we launched it, we were highly skeptical about the cost of AI.

6:06:12

we were seeing engineers spend a thousand a month,

6:06:15

10,000 a month with not so much ROI.

6:06:18

And so when we launched it,

6:06:19

we launched it with strict budget limits.

6:06:23

And so we're looking at the next thing, right?

6:06:24

So how can we provide limited tokens to our engineers

6:06:27

so they can use AI guild-free for a fraction of the cost?

6:06:31

And so we looked into open source.

6:06:34

So around April 26 is when we started

6:06:37

self-hosting open source model.

6:06:39

We're a big fan of GLM for coding.

6:06:41

so around that time what you see

6:06:43

April 26th, GLM 5.1

6:06:47

we see 60% improvement

6:06:48

in coding time

6:06:50

70% improvement in lead time

6:06:53

so traumatic impact

6:06:56

what do we learn from this?

6:06:57

well there's more impact on the lead time

6:06:59

than on the coding time

6:06:59

so what we find is the bottleneck for engineering

6:07:02

is not necessarily coding

6:07:05

you can save a lot of time

6:07:06

not having to dig through your inbox

6:07:08

or messing with Jira and Confluence

6:07:10

and so when you have a limited token you're free to do that. You no longer have to save

6:07:16

your tokens for the end of the quarter or the most difficult task. So where do we stand?

6:07:24

Well open source is now a priority, a revolute, and your economics are favorable, the billing

6:07:30

is flat, we don't have any bill shock any of the month, and the frontier is the exception.

6:07:35

So obviously we keep using codex, code code.

6:07:38

The latest model are fantastic.

6:07:40

Jimmy and I are going very good as well.

6:07:43

But we keep them as exception.

6:07:47

So how do we get there?

6:07:51

Some metrics that matter when you're self-hosting model.

6:07:54

So to serve 2,000 engineers, we roughly need 56 B200.

6:08:00

And that's to host GLM 5.3.

6:08:02

GLM is a big model, right?

6:08:04

8.500 billion parameters.

6:08:07

What you want to aim for is

6:08:09

sub-3 second time to first token.

6:08:13

This is empirical evidence.

6:08:15

As soon as you exceed 5 seconds,

6:08:18

my Slack inbox starts to blow up,

6:08:19

and so we know that's the limit.

6:08:22

In terms of throughput,

6:08:23

it doesn't really matter as much.

6:08:24

We serve, in terms of interactivity,

6:08:27

200 tokens per second.

6:08:29

People are fine.

6:08:29

You don't need to go higher.

6:08:31

The way people work has changed.

6:08:33

which we no longer look at the stream of thinking tokens.

6:08:36

People run tasks in parallel

6:08:37

and check in when the task is done.

6:08:40

But if you're in a high throughput

6:08:41

and you're an engineer at Revolut,

6:08:43

you just connect after 5 p.m. when one is on GPU

6:08:46

you can get 800 TPS and then, you know, it's a dream.

6:08:51

In terms of cost, in terms of impact,

6:08:53

self-hosting, GLM, or blended cost of token

6:08:56

is 30 cents per million.

6:08:58

And so our invoice is one-tenth

6:09:00

of what we were spending on Anthropic and OpenAI.

6:09:08

So there's a lot of tuning

6:09:10

that goes into running open source models.

6:09:14

If you just get GPUs and upload weights on a GPU

6:09:19

and you start doing some inference,

6:09:22

you're going to get terrible performance.

6:09:24

That's because your workload is going to be very dependent

6:09:28

on the parameters that you set.

6:09:30

So if you look all the way to the left of that chart, the blue line is going to be demand,

6:09:34

so that's request per second.

6:09:35

That's going to be what's going to be the bottleneck for your latency for your GPUs.

6:09:40

And the red line is what we're optimizing for, that's the time to first token.

6:09:45

So when we started back in April, you could see request per second around 3,

6:09:51

which is high but not so high, and time to first token over 10 seconds, which is very slow.

6:09:58

All of the data that you see is

6:10:00

the same number of GPU. We did an increase GPU count with LLF56.

6:10:05

And by the end, you see in August, requests per second were over 7, and time to first occur, and we're around 1.6.

6:10:12

So we've had 88% improvement in performance for 76% increased demand.

6:10:19

So the learning from this is there's a lot of parameters that you can improve on, and you really need to resist scaling.

6:10:25

if you're looking to self-host a model.

6:10:28

So let's talk parameters.

6:10:31

There's no secret recipe,

6:10:33

but the things you consider are the following.

6:10:37

First one, long context is a scam.

6:10:40

You really need to be mindful that

6:10:42

even though you can serve one million token,

6:10:45

256 is really what you need.

6:10:49

Quantization, if you're running Blackwell generation GPU,

6:10:52

you don't want to run anything higher than FP4.

6:10:55

And the FP4 is best, roughly going from FP4 to FP8

6:11:00

is a 40% saving in GPU footprint for zero loss in precision.

6:11:08

Other parameters to consider, tensor parallelism,

6:11:10

even though GLM fits on TP4, you don't have enough KV

6:11:14

cache, and so maybe a TP8 works better,

6:11:16

depending on how large your workload is.

6:11:20

and then on the more esoteric

6:11:22

check your cache hit

6:11:23

coding test needs to be above 90%

6:11:25

cache hit

6:11:27

and you can look into optimize

6:11:30

spec decoding

6:11:31

sequential pre-fill, PD disaggregation

6:11:33

all of these

6:11:37

so now let's talk about production setup

6:11:41

GLM obviously

6:11:41

is a text only model

6:11:43

which is a limitation for some people

6:11:46

the trade off I would say

6:11:47

we would make every time is get the smarter model and figure out how to do

6:11:51

image recognition another way. You can easily have a local router, open codex is

6:11:56

one, where you would route any image recognition to Gemini or Luna and keep

6:12:03

GLM for the main task. If you really need some vision model, GLM 5G flash works

6:12:11

really well. We have our UI designer making great use of it. Turnaround for UI product has gone a

6:12:20

really, really long way. And then the last one is going to be about the harness. So all of these

6:12:29

endpoints are going to be OpenAI compatible API with response API. And so you can use them

6:12:35

inside OpenCode Codex, Codex app as well, works very well.

6:12:40

And so that's what we recommend.

6:12:46

And then last message, this one is for the CIO in the room.

6:12:52

There's been a lot of stigma in using Chinese open source model.

6:12:57

So the thing to consider is you're not using

6:13:01

inference, dedicated endpoint that goes to China.

6:13:03

you're just getting the weights and putting them on a US-based service.

6:13:08

So for data sharing side, this is totally fine.

6:13:13

Revolut in particular, because we're an EU-regulated bank,

6:13:18

we fall under the most strict regime in terms of compliance.

6:13:23

so what we find that works is all of these coding tasks are not considered autonomous agents.

6:13:30

They're always with a human in the loop.

6:13:32

And so how do you give reassurance

6:13:34

that you have a human loop?

6:13:36

You start by creating a sandbox that guarantees that.

6:13:40

And the sandbox means now if you've used Codex Claude Code,

6:13:43

it has all of these features of approve for me.

6:13:46

You just have to set the rules for the operations

6:13:49

that you don't want to allow.

6:13:50

So you can allow grep but not gradle, for instance.

6:13:53

And that's gonna give confidence to your regulator

6:13:56

that it's not an autonomous agent

6:13:58

that needs different supervision.

6:14:02

This sandbox also protects you from rogue use.

6:14:05

You may have bad actors inside your company, and you want to shield for that.

6:14:09

You'd be surprised what you find in a large company.

6:14:13

And then the last one is prompt injection.

6:14:15

Not so much a thing now, given how smart models are, but always a thing.

6:14:21

In terms of data privacy, we spoke about it.

6:14:24

As long as the data sits in one of the countries that are in the data equivalency framework,

6:14:29

so US, EU, UK, Israel, you're fine, you can get your GPUs there. All of your inference provider

6:14:36

or GPU provider are going to have zero data retention by default. And then the last thing

6:14:43

you need is a very strong open telemetry so that if you ever have an incident, you need to be able

6:14:51

to go deep and look at the logs.

6:14:54

Also gives you some analytics.

6:15:00

All right, thanks everyone.

6:15:01

That was all for my talk.