Skip to content

[WIP] add EPD#148

Open
liusy58 wants to merge 1 commit into
sgl-project:mainfrom
liusy58:epd
Open

[WIP] add EPD#148
liusy58 wants to merge 1 commit into
sgl-project:mainfrom
liusy58:epd

Conversation

@liusy58

@liusy58 liusy58 commented Jan 21, 2026

Copy link
Copy Markdown

Ⅰ. Motivation

Ⅱ. Modifications

Ⅲ. Does this pull request fix one issue?

fixes #XXXX

Ⅳ. List the added test cases (unit test/integration test) if any, please explain if no tests are needed.

Ⅴ. Describe how to verify it

VI. Special notes for reviews

Checklist

  • Format your code make fmt.
  • Add unit tests or integration tests.
  • Update the documentation related to the change.

@codecov-commenter

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@cheyang cheyang requested a review from whybeyoung January 22, 2026 02:46

@whybeyoung whybeyoung left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall, it needs to be verified successfully in the local Kubernetes environment. In addition, it is recommended that the EPD feature support service discovery in the gateway.

Comment thread keps/75-EPD/README.md
image: lmsysorg/sglang:dev
command:
- python3
- -m sglang.launch_server

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

need test? maybe sperate it with newline.

- python3
- -m
- sglang.launch_server
....

Comment thread keps/75-EPD/README.md
command:
- python3
- -m sglang.launch_server
- --model-path /models/Qwen2.5-VL-7B-Instruct

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the same with above

Comment thread keps/75-EPD/README.md
- --model-path /models/Qwen2.5-VL-7B-Instruct
- --encoder-only
- --enable-prefix-mm-cache
- --port 30002

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the same with above

Comment thread keps/75-EPD/README.md
- name: ENCODER_URLS
value: "http://s-sglang-vlm-epd-vlm-encoder-0:30002 http://s-sglang-vlm-epd-vlm-encoder-1:30002"
command:
- sh

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is not very reasonable for sh to act as the No.1 process of a container.

Comment thread keps/75-EPD/README.md
- name: sglang
image: lmsysorg/sglang:dev
env:
- name: ENCODER_URLS

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For ENCODER_URLS, It seems unreasonable to configure a static Encoder address in prefill—this won't be the way it's used in production, right? Perhaps we should implement its service discovery automatically in gateway mode instead?

Comment thread keps/75-EPD/README.md
image: lmsysorg/sglang:dev
command:
- python3
- -m sglang.launch_server

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

seperate it.

Comment thread keps/75-EPD/README.md
limits:
nvidia.com/gpu: "1"

- name: sglang-router

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

rename to sgl-gateway

Comment thread keps/75-EPD/README.md
image: lmsysorg/sglang:dev
command:
- python3
- -m sglang_router.launch_router

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

seperate it

@cheyang cheyang left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey @liusy58 - checking in on this KEP. It's been about 5 months since @whybeyoung's review. Are you still planning to continue this work?

A few things that need attention before this can move forward:

Incomplete sections:

  • The Benchmark section referenced in the TOC is empty. Even for a KEP, expected/target numbers would strengthen the proposal.
  • Test Plan (both Integration Tests and End-to-End Tests) is blank. At minimum, outline what you intend to validate.

Previous review feedback unaddressed:

  • whybeyoung asked for local Kubernetes verification and service discovery support in the gateway. No follow-up commits since then.

YAML manifest issue in the encoder role:

command:
  - python3
  - -m sglang.launch_server   # <-- single arg with space
  - --encoder-only

In a Kubernetes pod spec, each list item is a separate exec argument. -m sglang.launch_server as one string won't work - Python expects -m and sglang.launch_server as two separate args. Either split them or wrap in sh -c like you did for the prefill role.

Minor:

  • The decode role is missing --language-only (or equivalent) in the command - is that intentional? The table says decode uses --disaggregation-mode decode but the YAML doesn't include it either.

Let us know if you'd like to pick this back up or if priorities have shifted. Happy to re-review once updated.

Comment thread keps/75-EPD/README.md
- --pd-disaggregation
- --prefill http://s-sglang-vlm-epd-vlm-prefill:30000
- --decode http://s-sglang-vlm-epd-vlm-decode:30001
- --port 8000

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The table of contents references Benchmark, Integration Tests, and End-to-End Tests sections, but the document body ends after the RBG deployment YAML (line 158) without any of those sections present. Even as a WIP, having stub headings keeps the structure navigable and signals what's still planned.

Comment thread keps/75-EPD/README.md
- name: vlm-encoder
replicas: 2
template:
spec:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The vlm-encoder, vlm-decode, and sglang-router roles use list-style command entries like - -m sglang.launch_server and - --prefill http://.... In a Kubernetes pod spec each list item becomes a separate exec argument, so Python would receive "-m sglang.launch_server" as one token and fail to recognize the -m flag. The vlm-prefill role already handles this correctly with sh -c "...". Consider applying the same sh -c pattern to all roles, or splitting flags and values into individual list items (e.g., - -m / - sglang.launch_server).

Comment thread keps/75-EPD/README.md

```yaml
apiVersion: workloads.x-k8s.io/v1alpha1
kind: RoleBasedGroup

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Compared to KEP-74 (Mooncake Integration), this manifest omits readinessProbes and model volume definitions. Adding at least a TCP socket readinessProbe and a PVC volume mount for the model path would make the example deployment-ready and consistent with existing KEPs.

Comment thread keps/75-EPD/README.md
- --pd-disaggregation
- --prefill http://s-sglang-vlm-epd-vlm-prefill:30000
- --decode http://s-sglang-vlm-epd-vlm-decode:30001
- --port 8000

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The KEP template and sibling KEPs include an Alternatives section explaining why other approaches were ruled out. For EPD this could briefly cover why a two-tier PD split (without separate encoders) was insufficient, strengthening the motivation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants