Self-hosting Falcon and Jais on your own hardware with vLLM
Choosing an Arabic-capable open model, sizing for the KV cache rather than the weights, and the three vLLM flags that carry most of the tuning.

Key takeaways
- Two open-weight families now make Arabic-capable self-hosting practical in the UAE: Falcon-H1 from TII and Jais 2 from Inception, Cerebras and MBZUAI.
- vLLM is the default serving engine for a reason. PagedAttention removes KV cache fragmentation and continuous batching keeps the GPU busy between requests.
- Size the hardware for KV cache, not for weights. Weights are a fixed cost you can calculate in a minute; the cache is what decides your real concurrency ceiling.
- Three flags carry most of the tuning: --tensor-parallel-size, --gpu-memory-utilization and --max-model-len. The third is the one teams forget, and it is usually why serving fails to start.
- The model is perhaps a fifth of the work. Authentication, permission-aware retrieval, logging and change control are what turn a running endpoint into a system you can operate.
Self-hosting is worth the operational cost when data cannot leave your control, when you need model behaviour to stay fixed while you validate a workflow, or when sustained utilisation makes owned capacity cheaper than metered pricing.
Those are the three durable reasons. Everything else tends to be enthusiasm, and enthusiasm does not survive the first GPU driver incident at two in the morning.
The version stability point is underrated. A managed endpoint can change behaviour on the provider's schedule, which is genuinely difficult when you have validated a clinical or legal workflow against specific outputs. Pinned open weights do not move unless you move them.

Which open model should you use for Arabic?
For Arabic and bilingual Arabic-English workloads the two strongest open-weight options are Falcon-H1 from the Technology Innovation Institute and Jais 2 from Inception, Cerebras and MBZUAI, both of which can run entirely on UAE-resident infrastructure.
This matters more than it used to. Arabic performance in general-purpose open models has historically been weak, and for a UAE deployment that is not a detail you can work around with prompting.
Falcon-H1 comes from TII in Abu Dhabi and performs strongly on Arabic evaluation across its size range, with smaller variants competitive against considerably larger models. Jais is Arabic-first by design, and Jais 2 was built specifically to handle Arabic and English in parallel rather than treating Arabic as a secondary language.
Check the licence before you get attached to a model. Jais 30B is released under Apache 2.0, which is straightforward for commercial deployment. Licences differ across families and across sizes within a family, and this is worth confirming rather than assuming.
- Evaluate on your own documents, not on a public leaderboard. Domain vocabulary and document layout dominate real accuracy.
- Test Arabic and English in the same evaluation set if your workflow mixes them, because parallel handling is where models differ most.
- Confirm the licence for the exact weights and size you intend to deploy.
- Pin a specific revision. Open weights get updated, and reproducibility matters when you have validated a workflow.
Sovereign model availability is a genuine advantage for UAE deployments. Falcon and Jais are developed locally, released with open weights, and can be served on in-country hardware, which closes the data residency question at the model layer.
How vLLM earns its place
vLLM improves throughput through two mechanisms: PagedAttention, which manages the KV cache in fixed-size blocks so memory is not wasted on fragmentation, and continuous batching, which slots new requests into a running batch instead of waiting for it to drain.
PagedAttention borrows the idea of virtual memory paging. Instead of reserving one contiguous block of KV cache per sequence, sized for the worst case, it allocates fixed-size blocks on demand. The waste from over-reservation largely disappears, which means more concurrent sequences on the same card.
Continuous batching addresses the other inefficiency. With static batching, a batch runs until every sequence in it finishes, so short requests sit idle waiting for the longest one. Continuous batching schedules at the iteration level, admitting new requests as slots free up.
Together these are the reason a self-hosted deployment can reach throughput that feels comparable to a managed service. Both are on by default in current versions, so you get them without configuration.
vLLM exposes an OpenAI-compatible API, which means most client libraries and application code point at it with only a base URL change. That compatibility is a large part of why migration off a managed endpoint is less painful than teams expect.
How much GPU memory do you actually need?
Model weights are a fixed and easily calculated cost, but the KV cache grows with concurrency and context length, and it is the cache that determines how many users you can actually serve.
Weights are simple arithmetic. A model served at 16-bit precision needs roughly two bytes per parameter, so a 30 billion parameter model occupies about 60 GB before anything else. Quantising to 8-bit roughly halves that, and to 4-bit roughly quarters it, at some quality cost.
The cache is where teams get caught. Its size scales with the number of layers, the key and value head dimensions, the precision, the sequence length and the number of concurrent sequences. Double your context window and you double the cache for every concurrent user.
The practical consequence: a configuration that benchmarks beautifully with one user can fall over at twenty, because the weights fit comfortably and the cache does not. Always load-test at your target concurrency and your real context length.
- Budget roughly two bytes per parameter at 16-bit precision for weights, before cache and overhead
- Treat quantisation as a capacity decision with a quality cost, and evaluate the quantised model rather than assuming parity
- Multiply expected concurrency by realistic context length when estimating cache, and include retrieved documents in that length
- Leave headroom. Running at the edge of VRAM turns a traffic spike into an outage rather than a slowdown.
The configuration that actually matters
Most production tuning comes down to three settings: --tensor-parallel-size to split the model across GPUs, --gpu-memory-utilization to control how much VRAM goes to the cache pool, and --max-model-len to cap context length so the cache fits.
Tensor parallelism splits a model across GPUs when it does not fit on one, set with --tensor-parallel-size and the number of cards. It adds inter-GPU communication, so it buys you capacity rather than raw speed.
The memory utilisation flag defaults to 0.90, meaning ninety percent of available VRAM is given to the KV cache pool. On dedicated bare-metal hardware you can push this higher, into the 0.92 to 0.95 range, because nothing else is competing for the card.
The context length cap is the one that causes the most confusion. Serving will refuse to start if the model's default maximum context cannot be accommodated in available memory, and the fix is to set --max-model-len to a value your workload actually needs rather than the theoretical maximum.
One deployment detail worth knowing: running vLLM in Docker requires --ipc=host, because it uses shared memory for inter-process communication and the default container limit is too small.
- --tensor-parallel-size N to shard across N GPUs when the model does not fit on one
- --gpu-memory-utilization 0.92 to 0.95 on dedicated bare metal, lower when sharing the card
- --max-model-len set to your real requirement, which is usually far below the model maximum
- --ipc=host for Docker deployments, or expect obscure shared memory failures
If serving fails to start with an out-of-memory error before handling a single request, the cause is almost always --max-model-len left at the model default. Cap it to what your workload needs.
The layer around the model is the actual product
A running inference endpoint is roughly a fifth of a deployable system; the rest is authentication, permission-aware retrieval, logging, change control and human review.
This is the step where most self-hosting projects stall. The endpoint comes up, the demo is impressive, and then the security review asks who can query it and what happens to the logs.
Permission-aware retrieval deserves particular attention. Naive retrieval flattens permissions: it indexes everything and returns whatever matches, regardless of whether the requesting user was entitled to see the source document. In a regulated environment that is an access control failure, and a silent one.
Logging is the other half. You need per-query records tied to an authenticated identity, with the retrieved sources and the model version recorded, retained long enough to investigate an incident. Under ADHICS the notification window is 24 hours, which is not enough time to build that capability after the fact.
- Authenticate every request against your identity provider, never a shared service account
- Filter retrieval by the requesting user's entitlements at query time, not at index time
- Record user, query, retrieved documents, model version and prompt version on every response
- Put prompt and model changes under change control so outputs can be traced to a configuration
- Add human review checkpoints for any output with legal or clinical consequence
What goes wrong in practice
The recurring failures are capacity planned at single-user load, retrieval that ignores permissions, logs with no retention policy, and no way to tie an output back to the model and prompt version that produced it.
None of these are exotic engineering problems. They are the consequence of a pilot being promoted to production without passing back through the controls a production system would normally face.
The fix is unglamorous and reliable: treat the inference stack as an information asset from day one, with an owner, an inventory entry, a retention policy and a change process. Doing that at the start costs a week. Doing it after an audit costs a quarter.
It is also worth being clear about what self-hosting replaces. You are not removing a dependency, you are exchanging one managed contract for a set of internal boundaries that nobody has written down, and the failures tend to appear between the parts rather than inside them.
Self-hosting replaces one vendor contract with four handoffs between the parts you now run yourself.
Frequently asked questions
- What is the best open-weight LLM for Arabic in 2026?
- The two leading open-weight options for Arabic are Falcon-H1 from the Technology Innovation Institute in Abu Dhabi and Jais 2 from Inception, Cerebras and MBZUAI. Falcon-H1 performs strongly across its size range on Arabic evaluations, while Jais is Arabic-first by design and built to handle Arabic and English in parallel. Evaluate both against your own documents, since domain vocabulary dominates real accuracy.
- What is PagedAttention in vLLM?
- PagedAttention manages the key-value attention cache in fixed-size blocks allocated on demand, rather than reserving a contiguous worst-case block per sequence. This applies the idea of virtual memory paging to attention, largely eliminating cache fragmentation and allowing substantially more concurrent sequences on the same GPU.
- How much GPU memory do I need to self-host an LLM?
- Budget roughly two bytes per parameter for weights at 16-bit precision, so a 30 billion parameter model needs about 60 GB before anything else. Then add the KV cache, which scales with concurrency and context length and is usually what limits you. Load-test at target concurrency with realistic context lengths rather than sizing from the weights alone.
- Why does vLLM fail to start with an out-of-memory error?
- The most common cause is that the model's default maximum context length cannot fit in available memory alongside the weights. Set --max-model-len to the context length your workload actually requires, which is typically far below the model maximum. Adjusting --gpu-memory-utilization can also help on dedicated hardware.
- Can self-hosted models satisfy UAE data residency requirements?
- Yes. Serving open-weight models such as Falcon-H1 or Jais on infrastructure located in the UAE keeps inference, prompts and logs in-country, which removes the cross-border transfer analysis required under Articles 22 and 23 of the PDPL. Residency alone is not full compliance, since access control, logging and impact assessment obligations still apply.
Sources
- 1.Inception, Cerebras and MBZUAI release Jais 2, the next generation Arabic open-weight LLMMBZUAI
- 2.vLLM documentation and serving guidevLLM project
- 3.Efficient memory management for large language model serving with PagedAttentionarXiv
- 4.Falcon LLM open-weight model familyTechnology Innovation Institute, Abu Dhabi
- 5.Abu Dhabi Healthcare Information and Cyber Security Standard (ADHICS) v2Department of Health, Abu Dhabi
- 6.What breaks when you self-host an LLM (24 August 2026)Paolo Perrone, The AI Engineer
Read more
UAE PDPL and AI: what the 2027 deadline actually requires
Everyone quotes 1 January 2027. Far fewer can say what it rests on. How the PDPL applies to AI systems, which articles matter, and what to fix first.
Sep 4, 2026
ADHICS v2 and AI: what Abu Dhabi healthcare providers must control
ADHICS does not need an AI clause to govern your AI. Where deployments actually fail assessment, and why the 24-hour notification window is the real test.
Sep 4, 2026
On-premise vs cloud AI in the UAE: how to choose
Four deployment models, not two. Start with the transfer question, then the utilisation curve. An honest account of what each option costs you.
Sep 4, 2026
Bring AI inside your walls.
Talk to us about a private, compliance-ready deployment for your organization.