Cohere Publishes One-Kernel Server for North Mini Code, Claims 1.58× vLLM Speedup

The design brings production-oriented serving features to a technique often shown in narrow decode tests, but Cohere’s headline results are company-reported and tied to North Mini Code on one H100 configuration.

By 3 min read
Cohere Publishes One-Kernel Server for North Mini Code, Claims 1.58× vLLM Speedup
Cohere Publishes One-Kernel Server for North Mini Code, Claims 1.58× vLLM Speedup

Listen to this story

The audio brief

About 1:38
0:001:38
Read transcript
Cohere has released a specialized serving engine for North Mini Code that it says generates tokens 1.58 times faster than vLLM. On one H100, using BF16 at batch size one, Cohere reports 292 tokens per second, compared with 185 for vLLM. This is a serving-system change, not a new model. The central idea is a persistent CUDA kernel, which keeps one GPU program running through the whole decode step instead of launching separate programs for normalization, projections, attention, and mixture-of-experts routing. That matters because North Mini Code has 30 billion total parameters, but activates only 3.3 billion per token. At an 8K context, each step still streams about 6.6 gigabytes of weights, so moving data and waiting between operations can matter more than raw arithmetic. Cohere’s implementation uses a task list and readiness counters to keep GPU work moving, while prefetching immutable weights. It also includes production features: continuous batching, paged attention, ragged sequence lengths, tool calling, and an OpenAI-compatible API. Cohere reports end-to-end gains between 1.25 and 1.41 times over vLLM across batch sizes, extending to a 256-thousand-token context without measurable accuracy loss. But these are company-reported results from a hand-built engine on one H100 configuration. The key unresolved question is whether this megakernel approach transfers cleanly to other models and hardware.

Story brief

3 key points

Cohere’s new serving engine is a specialized CUDA implementation for North Mini Code, not a model update. Its persistent-kernel design aims to reduce launch, synchronization, and memory-stall overhead during decoding while retaining production features such as continuous batching, paged attention, tool calling, and an OpenAI-compatible API. On one H100, Cohere reports 292 tokens per second at batch size one versus...

  1. 01

    Cohere reports 292 versus 185 tokens per second on an H100 at batch size one, a claimed 1.58× throughput gain over vLLM.

  2. 02

    North Mini Code has 30B total parameters but activates 3.3B per token; an 8K decode step streams about 6.6GB of weights.

  3. 03

    Reported end-to-end gains range from 1.25× to 1.41× over vLLM across batch sizes and extend to 256K context.

Cohere has published a serving engine for North Mini Code that replaces the usual chain of GPU operations during text generation with one persistent CUDA kernel. The company says the design reaches 292 tokens per second at batch size 1 on an H100, versus 185 tokens per second for vLLM.

The release is a serving-system change, not a new model. Cohere says the implementation is available on GitHub and supports continuous batching, paged attention, ragged sequence lengths, tool calling and an OpenAI-compatible endpoint. Those are the features that let an optimization designed around a single decode step operate as a model server rather than only as a benchmark demonstration.

The delay is between operations

Cohere says low-batch text decoding is limited more by moving model weights through GPU memory than by raw arithmetic. North Mini Code has 30 billion total parameters but activates 3.3 billion per token. In BF16, each decode step streams about 6.6 GB of weights and roughly 0.5 GB of key-value cache at an 8K context.

Conventional inference software typically launches separate kernels for operations such as normalization, projections, attention and mixture-of-experts routing. At each boundary, work can stall while GPU processors wait for other processors to finish and for the next kernel to start. Cohere argues that those pauses are especially costly when each generated token requires a relatively small amount of computation after large memory transfers.

One resident program, many small tasks

The megakernel keeps one threadblock, a working group of GPU threads, resident on each streaming multiprocessor for the whole decode step. Rather than asking the GPU driver to launch a fresh program for every operation, each threadblock reads a host-prepared list of small tasks from memory. Counters in global memory record when a task’s inputs are ready.

What the scheduling change is meant to avoid

  • Wave quantization: a conventional operation can leave processors idle when its final group of work is smaller than the GPU’s full set of processors. The persistent design can assign a ready task to an available processor.
  • False dependencies: a task can begin when its own input is ready instead of waiting for every related task in a whole GPU-wide operation to finish.
  • Unused memory bandwidth: immutable weights can begin loading before a task’s activation input has arrived, according to Cohere’s description of its prefetching approach.

A hand-built approach to a specialized server

Cohere says its implementation is a single CUDA file built from ordinary tiled matrix multiplications and paged attention, not a compiler-generated system or new programming model. Each operation uses a shared calling convention, so different kinds of work can run back to back in one persistent kernel. Prior megakernel work has largely taken one of two paths: automatically generated kernels or standalone batch-size-one decode demonstrations.

The speed figures are specific to Cohere’s setup. The company reports end-to-end gains of 1.25× to 1.41× over vLLM on a single H100 in BF16. It says the advantage persists across batch sizes and to 256K context without measurable accuracy loss. The results test the serving architecture but do not establish the same gain on other models or hardware.

For operators running North Mini Code, the immediate proposition is straightforward: retain familiar server capabilities while removing some scheduling barriers inside each generated token. The unresolved question is portability. Cohere has shown that a hand-built persistent kernel can serve this model with real request features; whether that recipe transfers cleanly across the wider variety of model architectures and deployments is still to be tested.

Sources

  1. cohere.comCohere's North Mini Code Megakernel Serving Engine | Cohere

Loading discussion...