Skip to main content

0. Prerequisites

  1. k8s >=1.26
  2. lws installed on k8s.

1. Image Preparation

lmsysorg/sglang:deepep

2. Deployment Manifest Files

Notice: We will package all deployment files into Helm Chart format in the near future. Interested community members can contact us to contribute

Prefill

Prefill manifest file prefill.yaml Note: The NodeSelector section, model location section, and taint toleration section can be adjusted according to your actual deployment environment
Config

Decode

Decode node deployment manifest file decode.yaml Note: The NodeSelector section, model location section, and taint toleration section can be adjusted according to your actual deployment environment
Config
Execute separately:
Command
At this point, we have completed the deployment of the 1P1D SGLang engine part. To allow our users to directly experience the model API, we still need a load balancer to handle sequential calls between prefill and decode. Different companies implement LBs differently, and the community will also officially release a new LB component written in Rust in the near future. Currently, we use a static K8S service + minilb approach to implement model API calls.

Creating Service for Prefill and Decode

Create prefill k8s service

p-svc.yaml
Config
Execute kubectl apply -f p-svc.yaml

Create decode k8s service

d-svc.yaml
Config
Execute kubectl apply -f d-svc.yaml

Deploy minilb and lb service

lb.yaml
Config
Execute kubectl apply -f lb.yaml After waiting for all model deployments to succeed, you will get the following output:
Command
At this point, select a nodePort:30800 to access:
Command

FAQ

  1. The current deployment startup parameters may not be fully compatible with all RDMA scenarios. Different RDMA NCCL-related environment configurations may be needed in different network environments.
  2. Some preset, optimized configurations for EPLB are not used here. You can adjust them according to 6017 as needed.