mirror of
https://github.com/kvcache-ai/sglang.git
synced 2026-07-01 04:08:10 +00:00
80 lines
2.8 KiB
Markdown
80 lines
2.8 KiB
Markdown
# Contributing to SGLang Diffusion
|
|
|
|
This guide outlines the requirements for contributing to the SGLang Diffusion module (`sglang.multimodal_gen`).
|
|
|
|
## Contributor Guides
|
|
|
|
- [Support New Models](support_new_models.md): implementation guide for adding new diffusion pipelines
|
|
- [CI Performance](ci_perf.md): update and regenerate perf baselines
|
|
|
|
```{toctree}
|
|
:maxdepth: 1
|
|
|
|
support_new_models
|
|
ci_perf
|
|
```
|
|
|
|
## On AI-Assisted ("Vibe Coding") PRs
|
|
|
|
Vibe-coded PRs are welcome — we judge code quality, not how it was produced. The bar is the same for all PRs:
|
|
|
|
- **No over-commenting.** If the name says it all, skip the docstring.
|
|
- **No over-catching.** Don't guard against errors that virtually never happen in practice.
|
|
- **Test before submitting.** AI-generated code can be subtly wrong — verify correctness end-to-end.
|
|
|
|
## Commit Message Convention
|
|
|
|
We follow a structured commit message format to maintain a clean history.
|
|
|
|
**Format:**
|
|
```text
|
|
[diffusion] <scope>: <subject>
|
|
```
|
|
|
|
**Examples:**
|
|
- `[diffusion] cli: add --perf-dump-path argument`
|
|
- `[diffusion] scheduler: fix deadlock in batch processing`
|
|
- `[diffusion] model: support Stable Diffusion 3.5`
|
|
|
|
**Rules:**
|
|
- **Prefix**: Always start with `[diffusion]`.
|
|
- **Scope** (Optional): `cli`, `scheduler`, `model`, `pipeline`, `docs`, etc.
|
|
- **Subject**: Imperative mood, short and clear (e.g., "add feature" not "added feature").
|
|
|
|
## Performance Reporting
|
|
|
|
For PRs that impact **latency**, **throughput**, or **memory usage**, you **should** provide a performance comparison report.
|
|
|
|
### How to Generate a Report
|
|
|
|
1. **Baseline**: run the benchmark (for a single generation task)
|
|
```bash
|
|
$ sglang generate --model-path <model> --prompt "A benchmark prompt" --perf-dump-path baseline.json
|
|
```
|
|
|
|
2. **New**: run the same benchmark, without modifying any server_args or sampling_params
|
|
```bash
|
|
$ sglang generate --model-path <model> --prompt "A benchmark prompt" --perf-dump-path new.json
|
|
```
|
|
|
|
3. **Compare**: run the compare script, which will print a Markdown table to the console
|
|
```bash
|
|
$ python python/sglang/multimodal_gen/benchmarks/compare_perf.py baseline.json new.json [new2.json ...]
|
|
### Performance Comparison Report
|
|
...
|
|
```
|
|
4. **Paste**: paste the table into the PR description
|
|
|
|
## CI-Based Change Protection
|
|
|
|
Consider adding tests to the `pr-test` or `nightly-test` suites to safeguard your changes, especially for PRs that:
|
|
|
|
- support a new model
|
|
- add a testcase for this new model to `testcase_configs.py`
|
|
- support or fix important features
|
|
- significantly improve performance
|
|
|
|
Please run the according testcase, then update/add the baseline to `perf_baselines.json` by following the instruction in console if applicable.
|
|
|
|
See [test](https://github.com/sgl-project/sglang/tree/main/python/sglang/multimodal_gen/test) for examples
|