Improve engine customization interface#15635
Conversation
Summary of ChangesHello @merrymercy, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request significantly improves the extensibility of the engine's initialization and subprocess management. It achieves this by refactoring the core subprocess launching logic to allow for easier overriding of key component initialization functions, such as those for the tokenizer, scheduler, and detokenizer. Additionally, it cleans up and simplifies the server warmup procedures by removing an unnecessary inter-process communication pipe, and updates internal scheduler method naming for better readability. These changes collectively make the engine more adaptable to custom implementations and easier to maintain. Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request significantly improves the engine's customization interface by refactoring the subprocess launching logic. The monolithic _launch_subprocesses function has been broken down into smaller, overridable functions for the tokenizer, scheduler, and detokenizer, making it easier to extend the engine with custom components. The changes also include beneficial cleanups, such as removing an unused pipe_finish_writer mechanism and eliminating a duplicated method. The code is well-structured, and the changes are consistent across all affected files. I have one minor suggestion to correct a type hint.
| run_scheduler_process_func: Callable, | ||
| run_detokenizer_process_func: Callable, | ||
| port_args: Optional[PortArgs] = None, | ||
| ) -> Tuple[TokenizerManager, TemplateManager, Tuple[Dict], PortArgs]: |
There was a problem hiding this comment.
The type hint for scheduler_infos in the return value is Tuple[Dict], but the function returns a list of dictionaries. Tuple[Dict] indicates a tuple with a single dictionary element, whereas the function actually returns a list of dictionaries. To accurately reflect the return type, it should be List[Dict].
| ) -> Tuple[TokenizerManager, TemplateManager, Tuple[Dict], PortArgs]: | |
| ) -> Tuple[TokenizerManager, TemplateManager, List[Dict], PortArgs]: |
…n_eagle3_dp * 'main' of https://github.com/sgl-project/sglang: (208 commits) MoE: Skip SiLU/GELU activation for masked experts (sgl-project#15539) [GLM-ASR] GLM-ASR Support (sgl-project#15570) Improve engine customization interface (sgl-project#15635) chore: bump sgl-kernel version to 0.3.20 (sgl-project#15590) bugfix[schedule]: Refactor sort method and add related UT (sgl-project#13576) Adjust wrong `mtp` meaning introduce by mimo (sgl-project#15632) Tiny add back missing router per attempt response metric (sgl-project#15621) Fix router gRPC mode launch error caused by async loading (sgl-project#15368) [model-gateway] return 503 when all workers are circuit-broken (sgl-project#15611) [Diffusion] Support peak memory record in offline generate and serving (sgl-project#15610) [VLM] Tiny: Unify VLM environment variables (sgl-project#15572) [diffusion] chore: remove default post-denoising dit offload in local mode (sgl-project#15573) Tiny enable soft watchdog in CI for stuck without logs (sgl-project#15616) Tiny add stuck simulation (sgl-project#15613) Support soft watchdog for tokenizer/detokenizer/dp-controller processes (sgl-project#15607) Tiny avoid EnvField misuse (sgl-project#15612) add decode round robin policy (sgl-project#15164) Add glm-4.6-fp8 with/without mtp in nightly ci (sgl-project#15566) Adapt fixture-kit to gsm8k mixin (sgl-project#15599) [model-gateway] add retry support to OpenAI router chat endpoint (sgl-project#15589) ...
We introduce a new interface to allow users to easily use their own ServerArgs, TokenizerManager, or Scheduler.
They can override the
Engineclass or pass these arguments tolaunch_server