Software Stack and Versions¶
Overview¶
This page lists the software components of the Coding Assistant serving stack, the role each one plays in this design, and the versions pinned for this release. The stack combines llm-d on Kubernetes with the RBLN Cloud Native Stack (RCNS). For the operating system, Kubernetes, OpenShift, container runtime, and driver versions supported with each RCNS release, see Support Matrix › RBLN Cloud Native Stack (RCNS).
Components¶
The components fall into five layers, from request routing down to the node. Each layer below also says how its components reach the cluster, which decides who installs them and what changes together on an upgrade:
- Modelserver image: the SDK components ship together in the modelserver image, so changing the image changes all of them at once; see Scaling and Upgrades › Version compatibility.
- Serving chart: the chart brings up the gateway resources, the EPP, and the modelservers; see Installing the serving stack (Helm chart).
- Platform: installed on the cluster before the chart; see steps 1 to 3 of Deployment on Kubernetes › Deployment steps.
Request routing¶
The GatewayClass provider is Istio by default, or agentgateway; it implements the Gateway, HTTPRoute, and InferencePool resources of the Gateway API and Gateway API Inference Extension (GAIE) CRDs. The Endpoint Picker (EPP) of the llm-d router picks a prefill and a decode instance for each request by prefix-cache affinity and load, and a routing sidecar in the decode Pod sends the request to prefill first. The platform installs the CRDs and the provider; the serving chart brings up the EPP and the routing sidecar.
Model serving¶
RBLN vLLM (vllm-rbln) runs vLLM on RBLN NPUs. It serves MiniMax-M2.7 in both the prefill and the decode instances and exposes the OpenAI-compatible API described in Client Integration. Two plugins handle the KV cache: lmcache-rbln is the RBLN extension of LMCache, which offloads KV from NPU device memory to host memory or to NVMe (KV Cache Offloading); in this design it runs on prefill only and offloads KV to Rebellions Direct Storage (RDS) as tier 2, and nixl-rbln is the RBLN backend for NIXL (Disaggregated Prefill / Decode), which moves the KV produced by prefill to decode over RDMA through a NUMA-local NIC. All three ship in the modelserver image.
Runtime and compiler¶
RBLN PyTorch (torch-rbln) is the PyTorch extension for RBLN NPUs, and the RBLN Compiler (rebel-compiler) compiles the model graphs. The compiler output is kept on the compile-cache volume and is reused only when the compiler version matches; see Compile cache. Both ship in the modelserver image.
Device allocation¶
The RBLN NPU Operator publishes the NPUs as DRA devices. dranet publishes the RoCE NICs as DRA devices. For how the two are deployed, see Node preparation; for how the devices are allocated to Pods, see Device allocation.
Node¶
The RBLN Driver is the kernel driver for RBLN NPUs. The RoCE NIC driver is the NIC vendor's driver in the host OS. For how the drivers are deployed and how RDS is set up, see Node preparation.
Observability is optional and off by default. With monitoring.enabled, the VictoriaMetrics Operator scrapes the metrics by default. Prometheus Operator is an option. With tracing.enabled, an OpenTelemetry collector receives the traces. See Monitoring.
Component interactions¶
The request path, prefix-cache prediction, KV transfer through nixl-rbln, and KV offload through lmcache-rbln are described in Coding Assistant on Rebel100™ › Architecture. Device publication is the one interaction outside the request path:
- Device publication: the RBLN NPU Operator publishes the NPUs and dranet publishes the RoCE NICs as DRA devices (see Device allocation).
Pinned versions for this GA release¶
This table records the component versions this design pins for the GA release, in the layer order above, with the official documentation of each component for further reading. Every version below was validated on the Target Configuration, with two exceptions: agentgateway, which the validation replaced with Istio, and lmcache-rbln and LMCache, which ship in the modelserver image but were not exercised because the validation ran without LMCache. It is not a support or compatibility matrix; for the supported combinations of operating system, Kubernetes, and driver, see Support Matrix › RBLN Cloud Native Stack (RCNS).
| Component | Version | Source |
|---|---|---|
| Gateway API CRDs | v1.5.1 | Gateway API documentation |
| Gateway API Inference Extension CRDs | v1.5.0 | Gateway API Inference Extension documentation |
| Istio (default GatewayClass provider) | 1.30.0 | Istio documentation |
| agentgateway (alternative) | v1.1.0 | agentgateway documentation |
| llm-d | 0.9.0 | llm-d documentation, llm-d v0.9.0 source |
| vllm-rbln | 0.12.0 | RBLN vLLM |
| vLLM | 0.30.0+cpu | vLLM documentation |
| lmcache-rbln | 0.12.0 | N/A |
| LMCache | 0.5.4 | LMCache documentation |
| nixl-rbln | 0.12.0 | N/A |
| NIXL | 1.1.0+cpu | NIXL repository |
| torch-rbln | 0.12.0 | RBLN PyTorch |
| RBLN Compiler | 0.12.0 | RBLN Compiler |
| RBLN NPU Operator | 0.6.0 | RBLN NPU Operator |
| dranet | v1.5.0 | dranet repository |
| Kubernetes | 1.34.3, 1.35.4, 1.36.4 (the versions RCNS supports) | Kubernetes Dynamic Resource Allocation |
| RBLN Driver | 3.5.1 | Installation Guide |
Serving chart (coding-assistant-stack) | 0.12.0 (oci://repo.rebellions.ai/rebellions/coding-assistant-stack) | Chart preparation |
Model server image (rbln-serve) | 0.12.0-ubi10.2-py3.12 (repo.rebellions.ai/rebellions/rbln-serve), the chart default for modelserver.image | Model server image |
Components that are not in this table were not validated with this design.
Model server image¶
The model server image rbln-serve carries RBLN SDK 0.12.0, so its tag pins every SDK package the prefill and decode Pods run. Each tab below lists the Python and RBLN SDK package versions inside that image; vLLM, LMCache, and NIXL inside it are at the versions in the table above.
The tag reads <SDK_VERSION>-<OS>-py<PYTHON_VERSION>. The validation ran 0.12.0-ubi10.2-py3.12, and the image is published for the base operating systems below. To use another one, set modelserver.image.tag to its tag.
| Package | Version |
|---|---|
| Python | 3.12 |
rebel-compiler | 0.12.0 |
torch-rbln | 0.12.0 |
optimum-rbln | 0.12.0 |
vllm-rbln | 0.12.0 |
lmcache-rbln | 0.12.0 |
nixl-rbln | 0.12.0 |
| Package | Version |
|---|---|
| Python | 3.12 |
rebel-compiler | 0.12.0 |
torch-rbln | 0.12.0 |
optimum-rbln | 0.12.0 |
vllm-rbln | 0.12.0 |
lmcache-rbln | 0.12.0 |
nixl-rbln | 0.12.0 |
| Package | Version |
|---|---|
| Python | 3.12 |
rebel-compiler | 0.12.0 |
torch-rbln | 0.12.0 |
optimum-rbln | 0.12.0 |
vllm-rbln | 0.12.0 |
lmcache-rbln | 0.12.0 |
nixl-rbln | 0.12.0 |
| Package | Version |
|---|---|
| Python | 3.12 |
rebel-compiler | 0.12.0 |
torch-rbln | 0.12.0 |
optimum-rbln | 0.12.0 |
vllm-rbln | 0.12.0 |
lmcache-rbln | 0.12.0 |
nixl-rbln | 0.12.0 |
| Package | Version |
|---|---|
| Python | 3.12 |
rebel-compiler | 0.12.0 |
torch-rbln | 0.12.0 |
optimum-rbln | 0.12.0 |
vllm-rbln | 0.12.0 |
lmcache-rbln | 0.12.0 |
nixl-rbln | 0.12.0 |
| Package | Version |
|---|---|
| Python | 3.10 |
rebel-compiler | 0.12.0 |
torch-rbln | 0.12.0 |
optimum-rbln | 0.12.0 |
vllm-rbln | 0.12.0 |
lmcache-rbln | 0.12.0 |
nixl-rbln | 0.12.0 |
| Package | Version |
|---|---|
| Python | 3.12 |
rebel-compiler | 0.12.0 |
torch-rbln | 0.12.0 |
optimum-rbln | 0.12.0 |
vllm-rbln | 0.12.0 |
lmcache-rbln | 0.12.0 |
nixl-rbln | 0.12.0 |
| Package | Version |
|---|---|
| Python | 3.12 |
rebel-compiler | 0.12.0 |
torch-rbln | 0.12.0 |
optimum-rbln | 0.12.0 |
vllm-rbln | 0.12.0 |
lmcache-rbln | 0.12.0 |
nixl-rbln | 0.12.0 |
Related documents¶
- Deployment on Kubernetes - installing the components on the cluster
- Validation and Limits - the versions used for the feature and accuracy validation
- Support Matrix › RBLN Cloud Native Stack (RCNS) - supported OS, Kubernetes, and driver combinations