This release is a pre-release and may not be stable for production use.
Introduction
sgl-deep-gemm is a pypi package built from SGLang's customized branch of DeepGemm. Comparing with origina DeepGemm, it supports the following features to better support SGLang:
- ABI support: with the help of tvm-ffi wrappers, a single wheel can run on different python versions.
- pypi support: easy installation with
pip install sgl-deep-gemm. No need to manually search for wheel links. - Fast iteration: add custom kernels and bump versions at no time.
Usage
Build requirements include CUDA 12.9 or newer, a C++20 compiler with std::format support (for example GCC 13), and the elfutils development headers (apt-get install libdw-dev on Debian/Ubuntu). Initialize the CUTLASS and DeepJIT submodules with git submodule update --init --recursive.
To build it locally, run bash build_sgl_deep_gemm.sh, then pip install the wheel generated under dist.
K-grouped FP8 GEMM and its scale-packing helper preserve compact per-group scaling factors by default. Pass use_padded_sf_layout=True to both packing and GEMM when packed scales cover each group's padded K extent. The flag is appended to existing arguments, so existing positional calls retain their behavior.
Run wheel validation with bash sgl_deep_gemm/run_tests.sh. The Mega MoE reference comparisons require DeepEP with ElasticBuffer; Mega Gate and Mega mHC also require TileKernels and TileLang. Install the validation extras with pip install 'sgl-deep-gemm[dev]' (TileLang 0.1.9 and TileKernels 1.0.0). The runner enables NVML-based CUDA discovery to preserve fork compatibility while retaining TVM FFI's DLPack fast path. It runs legacy, lazy-init, and compute-sanitizer checks; --skip-sanitizer is available for ordinary development runs. Distributed MegaMoE runs include separate Hopper numerical accuracy coverage; the sanitizer's automatic discovery covers single-process tests and reports distributed entrypoints separately.
Run bash sgl_deep_gemm/run_tests.sh --release for reduced attention coverage and focused memcheck/synccheck, targeting a release gate under one hour. Selected cases retain their original assertions; other ordinary and distributed tests remain unchanged. The default command keeps the full suite; the table shows release / full attention case counts.
| GPU architecture | Dense MQA | Paged MQA | Sparse MQA |
|---|---|---|---|
| Hopper (SM90) | 8 / 192 | 8 / 24 | unsupported |
| Blackwell (SM100/SM103) | 36 / 2304 | 72 / 4320 | 12 / 161 |
| Blackwell (SM120) | 16 / 256 | 16 / 48 | unsupported |
Use Compute Sanitizer 2025.4.1 or newer for Python tests; older releases can retain Python tensors while collecting host backtraces and exhaust GPU memory. Set COMPUTE_SANITIZER to select a separately installed executable. See NVIDIA's release notes.
To release a new set of wheels, please contact SGLang team and run the release workflow under SGLang repo
For each major version release (0.X.Y -> 0.(X+1).0), a new branch should be created (release/v0.(X+1).0) for stability purpose.
For any incoming pull requests, it should be rebased upon dev branch. Any newly added or modified tests should be put under sgl_deep_gemm/tests
Release files for sgl-deep-gemm 0.2.0rc0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sgl_deep_gemm-0.2.0rc0-py3-none-manylinux2014_x86_64.whl | Python 3 | none | Linux glibc 2.17+ x86-64 | Details |
| sgl_deep_gemm-0.2.0rc0-py3-none-manylinux2014_aarch64.whl | Python 3 | none | Linux glibc 2.17+ ARM64 | Details |
Total release size: 10.6 MB
Release files / sgl_deep_gemm-0.2.0rc0-py3-none-manylinux2014_x86_64.whl
| Download URL | sgl_deep_gemm-0.2.0rc0-py3-none-manylinux2014_x86_64.whl |
|---|---|
| Size | 5.4 MB |
| Tags | Linux glibc 2.17+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
10a5cf382f05c517bbb930043a2c4e40adbd0186f6689f4648003bf0fa1120d1
|
|
BLAKE2b-256 checksum How to use checksums |
ef7c30aca947faaf8c5b4be718e08f65aa4a0673749331a32395f67708638bb9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / sgl_deep_gemm-0.2.0rc0-py3-none-manylinux2014_aarch64.whl
| Download URL | sgl_deep_gemm-0.2.0rc0-py3-none-manylinux2014_aarch64.whl |
|---|---|
| Size | 5.2 MB |
| Tags | Linux glibc 2.17+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
8354d0605a4b8b452cc5b149e5fadd7dd06929bdbbafa40dafa53182feb4a0ec
|
|
BLAKE2b-256 checksum How to use checksums |
80dd88522f2d4bc273c03e5bca87b166e208295bdfee9c898a7df825a899fc0c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|