Case study · Private AI platforms

Our models, our metal: a sovereign LLM platform for a European telecom operator

A telecom operator in central Europe wanted generative AI for network operations, customer care and security, but would not send network configurations, customer records or incident data to an outside model. Capable open-weight models made running its own platform realistic. The task was to build one that is shared, secure, reliable and honest about cost.

Case studyTelecom · European UnionSumanta Mukhopadhyay9 min read
#ai#llm#kubernetes
CASE STUDY · CASE STUDY · PRIVATE AI PLATFORMS30 Oct 2026 · 23:05 GST
At a glance
SectorTelecom · European Union
My roleFractional CTO and AI architect
EngagementAssessment, architecture and delivery leadership
ScopeGPU cluster, model serving, inference gateway, tenancy, evaluation, security controls, hosted fallback
What changed
  • Sensitive network, customer and incident data processed only on the operator's own infrastructure
  • One shared platform for three internal tenants with separate quotas and policies
  • Models chosen per task through evaluations, not vendor benchmarks
  • GPU and node failures handled without losing service
  • Cost per task reported per tenant, with a hosted fallback for non-sensitive work
Kubernetes with GPU nodesDynamic Resource AllocationvLLMInference gatewayOpen-weight modelsEvaluation harnessOpenTelemetryHosted model fallback

Anonymised composite. Client names, identifying details and confidential figures are withheld; public facts are cited in the references.

The situation

A telecom operator in central Europe ran fixed and mobile networks for several million customers. Three teams wanted generative AI: network operations, to read alarms and configuration changes; customer care, to summarise interactions and draft replies; and security, to triage alerts and investigate incidents. Each had started its own pilot with a different hosted model, and the security and legal teams had stopped all three because network topology, customer data and incident details were leaving the company.

Why now. Telecom operators are essential entities under the EU's NIS2 Directive, with duties covering risk management, supply-chain security and incident reporting4. Transposition has been uneven, and the Commission took several member states to the Court of Justice in July 2026 for not implementing it3, but national laws are now arriving; Austria's, for example, applies from 1 October 20262. At the same time, capable open-weight models became realistic to run in-house; on 29 October 2026 Mistral released the weights of its trillion-parameter Large 4, pitched at security teams who want to run it on their own infrastructure1. The operator decided to build one shared, sovereign platform rather than three pilots.

What had to be true

  • Sensitive data stays in-house: network, customer and incident data only touch the operator's own infrastructure.
  • One platform, three tenants, with quotas, policies and costs kept separate.
  • Models chosen by evidence: evaluations on each team's real tasks.
  • Reliable on imperfect hardware: GPU, driver and node failures must not take services down.
  • A sensible escape hatch: hosted models for non-sensitive work, through the same controls.

Architecture

Tenants
Network operationsalarms, configsCustomer caresummaries, draftsSecuritytriage, investigation
Gateway
Inference gatewayauth, quotas, routing, data rulesClassification checksensitive data stays in-house
Serving
vLLM poolslarge, medium and small modelsHosted fallbacknon-sensitive only
Compute
Kubernetes GPU nodesDRA, health checksModel registryversions, licences
Assure
Evaluationsper tenant, per releaseTracing and costOpenTelemetrySecurity controlsNIS2 evidence
Tenants never call models directly; the gateway decides which model, and where, each request may use.

The data flow, end to end

  1. RequestA tenant application sends a task with its data classification
  2. CheckThe gateway verifies identity, quota and whether data may leave the platform
  3. RouteThe task goes to the smallest in-house model that meets quality for that task
  4. ServevLLM serves from GPU pools; failures move work to healthy replicas
  5. TraceTokens, latency, model version and cost are recorded per tenant
  6. FallbackOnly non-sensitive tasks may use a hosted model when capacity is short
Data classification decides where a request may go before any model sees it.

The hard part: running GPUs like a utility

Buying GPUs was the easy part. Keeping them useful was not. Multi-GPU model servers are sensitive to hardware faults, driver updates and slow terminations, and Kubernetes' traditional view of devices as either present or absent does not cope well with partial failures. The Kubernetes community has documented these failure modes, from device plugin restarts to pods holding devices while they shut down5.

Diagram of kubelet, device plugin, node status and a user pod, annotated with failure points: kubelet restarts losing device information, device plugin updates or restarts preventing allocation, and slow pod termination leaving devices unavailable
Where device-backed workloads break on Kubernetes: the failure modes the platform was designed around. Source: Kubernetes blog, Sergey Kanzhelev and Mrunal Patel · CC BY 4.0

The team designed for those failures: health checks on GPUs and model servers, spare capacity so a failed node does not halve a model pool, staged driver and plugin updates, and a gateway that retries on a healthy replica. Scheduling moved to Dynamic Resource Allocation so model servers could ask for the exact accelerators they needed; see DRA for GPU scheduling. Sharing used quotas per tenant, with security given priority during incidents.

Model choice was the other discipline. The largest open models are impressive and expensive to hold in memory. Each tenant built an evaluation set from real tasks, and the gateway routed each task to the smallest model that met its quality bar, keeping the largest model for hard security investigations. More in running a trillion-parameter model yourself and the AI memory squeeze.

Self-hosting is an operations commitment, not a download. Budget for spare capacity, failure handling and evaluation before you budget for the biggest model.

How it ran

Platform team
  1. GPU cluster and DRA
  2. Gateway and quotas
  3. Failure drills
Tenant teams
  1. Use cases
  2. Evaluation sets
  3. Adoption
Security and legal
  1. Data classification
  2. Model licences
  3. NIS2 evidence
The platform team ran it like any other shared utility; tenants owned their quality bar.
Phase 1Gate
  • Gateway with data rules
  • Hosted models for safe tasks
  • Pilots consolidated
Phase 2Build
  • GPU nodes
  • vLLM pools
  • Evaluation sets
Phase 3Harden
  • Failure handling
  • Quotas and priorities
  • Cost per task
Phase 4Scale
  • More tenants
  • Larger models where earned
  • Quarterly model review
The gateway came first, so every later change was invisible to tenant applications.

Key decisions and trade-offs

DecisionAlternativeWhy
One shared platformA cluster per teamScarce GPUs used well; one set of controls
Gateway enforces data classificationTrust each applicationOne place to prove where data went
Smallest model that passes evaluationLargest model everywhereLower memory, cost and latency
Spare capacity for failuresRun GPUs at full allocationService survives node and driver failures
Hosted fallback for non-sensitive tasksIn-house onlyHandles peaks without overbuying hardware

What I'd do again, and differently

Again: put the gateway in first. It stopped the data leaks on day one and let the platform change underneath without tenant rework. Differently: run failure drills before the first production tenant, not after the first outage. Related: Kubernetes inference gateway, serving with vLLM, telecom observability and SLOs and the Europe page.

If you are planning private AI infrastructure in Europe or elsewhere, see my AI architecture work, or analyse your challenge and bring the result to a call.

References
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
    Navigating Failures in Pods With DevicesKubernetes blog · 3 Jul 2025
FAQ

Common questions

Why would a telecom operator run its own LLMs?

Network configurations, customer records and incident data are among its most sensitive assets, and as an essential entity under NIS2 it must manage supply-chain and security risk tightly. Running capable open-weight models in-house keeps that data inside its own controls.

Does self-hosting mean giving up hosted models entirely?

No. In this design, non-sensitive tasks can use hosted models through the same gateway, while sensitive tasks are routed only to in-house models. The gateway enforces which data can go where.

What is the hardest part of running an in-house LLM platform?

Operations: keeping multi-GPU serving healthy through hardware and driver failures, sharing scarce GPUs fairly between teams, and proving quality and cost per task.

Keep reading

Related

Open to advisory, fractional CTO & select builds

Let's talk about what you're building.

The fastest route is a free 30-minute call. Prefer to write? Send a message and I'll reply personally within two business days.

Start a conversation

How would you like to reach me?

Book a 30-min callFastest. Pick any open slot on my calendar.→ Write in GmailOpens a pre-filled draft in your browser.→ Use my email appOutlook, Apple Mail or your default client.→

I reply personally within two business days. Time zones from the Americas and Europe to the Middle East and Asia-Pacific.