Throughputmaxxing DeepSeek-V4-Flash on Isambard-AI Doubleword, one of six companies in the first wave of UK Sovereign AI investments, achieved up to 3× the throughput of vLLM for DeepSeek-V4-Flash on a single node of Isambard-AI, the UK's national AI supercomputing facility. The node consists of 4xGH200 chips, each equivalent to an H100 with about 96GiB VRAM, connected via NVLink 4. The optimization, detailed in a blog post, involved tweaking vLLM settings for the 4xGH200 node shape, enabling FP8 KV cache, and using NUMA binding to maximize throughput. Throughputmaxxing DeepSeek-V4-Flash on Isambard-AI It turns out inference optimization is still hard for agents: Across 15 frontier agent configurations, agents reliably improve over a naïve PyTorch baseline up to 8.08× and often match or exceed serving engines with default settings 4.05× for vLLM , but still fall below a simple hyperparameter search under the same time budget up to 11.53× From this recent paper . Given that novel maths discoveries are not https://openai.com/index/model-disproves-discrete-geometry-conjecture/ so hard https://x.com/ alpoge /status/2079028340955197566 , we probably shouldn’t assume this will last forever. This article then is an offering to our coming AI overlords: one last echo of the age of centaurs https://en.wikipedia.org/wiki/Advanced chess , before the horses gallop off beyond the horizon into fully automated research. Doubleword was recently named as one of six companies in the first wave of UK Sovereign AI investments Our first investments https://sovereignai.gov.uk/post/our-first-investments , UK Sovereign AI., which has given us access to Isambard-AI https://blogs.nvidia.com/blog/isambard-ai/ , the UK’s national AI supercomputing facility. This post is about how to use a single node of that capacity to push DeepSeek-V4-Flash to about 3× what vLLM gives you off the shelf. What do we have Each node in Isambard-AI consists of 4x GH200 https://www.nvidia.com/en-gb/data-center/grace-hopper-superchip/ chips. Each Hopper chip is equivalent in performance to an H100Not, as you might think, an H200, although there is a GH200 SKU whose GPU is equivalent to an H200., but we have a bit more VRAM about 96GiB . The GPUs are connected with NVLink 4 https://blog.doubleword.ai/nvlink-scale-up P2P connections no switch , with on paper 150GB/s of bandwidth peer to peer. GPUs are connected to the LPDDR5x on the host with NVLink C2C, which interestingly on this machine, is actually higher bandwidth than the connection between GPUs. A first cut First, make it work. We’re focused on throughput at all costs. There’s no vLLM recipe https://recipes.vllm.ai/deepseek-ai/DeepSeek-V4-Flash for 4xGH200s, so we pick the shape that vLLM suggests for 8xH200s, tweaked for our node shape, we’ll change it later. We want tool calling and reasoning to be parsed out properly. DeepSeek has a native FP8 KV cacheDeepSeek-V4 technical report https://arxiv.org/abs/2606.19348 : “Both paths use FP8 storage for most KV entries and BF16 only for the RoPE dimensions.” We’ll see that KV cache size is a big factor when, as we’re doing here, we’re optimizing for throughput., so enable that. --numa-bind is important on multi-socket chips like the ones on IsambardThe node is 4 GH200 Grace-Hopper pairs, with all 4 Grace chips connected via a CPU-side interconnect and appearing as a single multi-socket CPU. If we don’t bind the engines to their NUMA node, then comms between the host and device go over the interconnect and we lose throughput.. vllm serve deepseek-ai/DeepSeek-V4-Flash \ --trust-remote-code \ --tensor-parallel-size 4 \ --enable-expert-parallel \ --kv-cache-dtype fp8 \ --block-size 256 \ --gpu-memory-utilization 0.92 \ --max-model-len 128000 \ --max-num-batched-tokens 8192 \ --max-num-seqs 2048 \ --tokenizer-mode deepseek v4 \ --tool-call-parser deepseek v4 \ --enable-auto-tool-choice \ --reasoning-parser deepseek v4 \ --numa-bind Benchmark is vllm bench serve , completions, random ISL/OSL = 1024/1024, request rate = inf. vllm bench serve \ --backend openai \ --model deepseek-ai/DeepSeek-V4-Flash \ --endpoint /v1/completions \ --dataset-name random \ --num-prompts <2 × conc \ --request-rate inf \ --max-concurrency