馃殌 Feature Description and Motivation
Currently, AIBrix uses StormService as the inference workload abstraction, while distributed inference workloads may additionally require RayClusterFleet to provide the underlying distributed execution environment.
This separation provides a clear boundary between inference lifecycle management and distributed runtime management. However, it also exposes runtime implementation details to users who only want to deploy and operate LLM inference services.
For GenAI inference workloads, users typically think in terms of:
- Model to deploy
- Inference engine (vLLM/SGLang)
- Parallelism strategy (TP/PP/EP)
- GPU resources
- Replica count
They usually do not need to understand whether the underlying distributed execution is implemented through RayClusterFleet, Kubernetes primitives, or other runtime frameworks.
This proposal suggests making StormService the primary user-facing inference abstraction while allowing AIBrix to manage the lifecycle of underlying distributed runtime resources such as RayClusterFleet.
This proposal does not require removing RayClusterFleet. Instead, RayClusterFleet can remain an internal implementation resource managed by AIBrix controllers.
Use Case
For large-scale LLM inference workloads, distributed execution is commonly required.
For example, deploying a model with:
- Model: DeepSeek/Qwen/Llama
- Engine: vLLM
- Tensor Parallel Size: TP=16
- Replicas: 2
- GPU requirement: 16 GPUs per replica
The user's intention is simply:
Deploy a distributed inference service with TP=16.
However, the current workflow requires users to understand and manage multiple resources:
StormService
+
RayClusterFleet
Users need to understand:
- When RayClusterFleet should be created
- How RayClusterFleet relates to StormService
- How lifecycle management is coordinated
- How failures and upgrades propagate between these resources
This becomes especially challenging for:
- Multi-node tensor parallel inference
- Pipeline parallel inference
- Expert parallel inference for MoE models
- Production LLM serving platforms
Proposed Solution
Introduce a unified distributed inference abstraction inside StormService.
Example:
apiVersion: serving.aibrix.io/v1alpha1
kind: StormService
spec:
model:
name: deepseek-model
runtime:
engine: vllm
parallelism:
tensorParallelSize: 16
resources:
gpu: 16
replicas: 2
The StormService controller manages the underlying runtime resources:
StormService
|
|
+---- RayClusterFleet
|
|
+---- RayCluster
|
|
+---- Worker Pods
Advanced users may still access lower-level runtime resources if needed, but the default user experience should only require StormService.
Benefits
1. Unified User Experience
Users can deploy both single-node and distributed inference workloads through the same abstraction.
Example:
Single node:
Multi-node:
StormService
|
+-- RayClusterFleet
2. Runtime Abstraction
StormService becomes independent from a specific distributed execution framework.
Future implementations could support:
StormService
|
+-- Ray backend
|
+-- Kubernetes native backend
|
+-- Other distributed runtime
3. Easier Platform Integration
Higher-level GenAI inference platforms can integrate with AIBrix through a single inference API without exposing runtime implementation details.
Open Questions
- Should RayClusterFleet lifecycle management be fully handled by the StormService controller?
- Should direct RayClusterFleet creation remain supported for advanced users?
- Should this behavior be enabled by default or through an optional configuration?
- How should existing StormService + RayClusterFleet deployments migrate?
Alternatives Considered
Option 1: Keep current resource model
Pros:
- Clear separation between inference and runtime layers
- Reuses existing KubeRay abstractions
Cons:
- Requires users to understand multiple abstractions
- Exposes runtime implementation details
- Increases operational complexity for inference users
Option 2: Introduce a new higher-level CRD
Example:
InferenceService
|
+-- StormService
|
+-- RayClusterFleet
Pros:
- Keeps existing resources unchanged
Cons:
- Adds another abstraction layer
- Increases API complexity
Proposal Summary
The goal is not to remove RayClusterFleet, but to make StormService the unified inference-facing abstraction.
Similar to Kubernetes:
Deployment
|
+-- ReplicaSet
|
+-- Pod
Users should interact with the desired inference workload, while controllers manage the underlying execution resources.
馃殌 Feature Description and Motivation
Currently, AIBrix uses
StormServiceas the inference workload abstraction, while distributed inference workloads may additionally requireRayClusterFleetto provide the underlying distributed execution environment.This separation provides a clear boundary between inference lifecycle management and distributed runtime management. However, it also exposes runtime implementation details to users who only want to deploy and operate LLM inference services.
For GenAI inference workloads, users typically think in terms of:
They usually do not need to understand whether the underlying distributed execution is implemented through RayClusterFleet, Kubernetes primitives, or other runtime frameworks.
This proposal suggests making
StormServicethe primary user-facing inference abstraction while allowing AIBrix to manage the lifecycle of underlying distributed runtime resources such asRayClusterFleet.This proposal does not require removing
RayClusterFleet. Instead,RayClusterFleetcan remain an internal implementation resource managed by AIBrix controllers.Use Case
For large-scale LLM inference workloads, distributed execution is commonly required.
For example, deploying a model with:
The user's intention is simply:
However, the current workflow requires users to understand and manage multiple resources:
Users need to understand:
This becomes especially challenging for:
Proposed Solution
Introduce a unified distributed inference abstraction inside
StormService.Example:
The
StormServicecontroller manages the underlying runtime resources:Advanced users may still access lower-level runtime resources if needed, but the default user experience should only require
StormService.Benefits
1. Unified User Experience
Users can deploy both single-node and distributed inference workloads through the same abstraction.
Example:
Single node:
Multi-node:
2. Runtime Abstraction
StormServicebecomes independent from a specific distributed execution framework.Future implementations could support:
3. Easier Platform Integration
Higher-level GenAI inference platforms can integrate with AIBrix through a single inference API without exposing runtime implementation details.
Open Questions
Alternatives Considered
Option 1: Keep current resource model
Pros:
Cons:
Option 2: Introduce a new higher-level CRD
Example:
Pros:
Cons:
Proposal Summary
The goal is not to remove
RayClusterFleet, but to makeStormServicethe unified inference-facing abstraction.Similar to Kubernetes:
Users should interact with the desired inference workload, while controllers manage the underlying execution resources.