| 1234567891011121314151617181920212223242526272829303132 |
- # syntax=docker/dockerfile:1.7
- # Qwen3.8-Flash-Next-NVFP4 on DGX Spark (SM121 / GB10).
- #
- # Base: lmsysorg/sglang:qwen38flashnext — SGLang day-0 for qwen4_exp (arm64,
- # model support = sgl-project/sglang PR #36497 baked in). It CANNOT serve this
- # model on GB10 stock: QSA's packed varlen decode resolves to flash-attn-4
- # CuTe-DSL kernels that fail MLIR compilation on SM121.
- #
- # This layer swaps in a Triton FlashDecoding-style fallback (CUDA-graph-safe)
- # for non-SM100 devices. Provenance + validation:
- # https://github.com/MiaAI-Lab/Qwen3.8-Flash-Next-Dual-DGX-Sparks
- # (validated end-to-end TP=2 over RoCE on this cluster; single + 2-node
- # dummy boots with prefill, decode CUDA graphs and NEXTN spec decode).
- ARG BASE_IMAGE
- FROM ${BASE_IMAGE}
- # The Triton fallback kernel (installed next to the QSA backend).
- COPY patches/qsa_fa_fallback.py \
- /sgl-workspace/sglang/python/sglang/srt/layers/attention/qsa_fa_fallback.py
- # Inject the SM121 early-return into the QSA varlen resolver.
- COPY patches/patch_qsa_sm121.py /tmp/patch_qsa_sm121.py
- RUN set -eux; \
- SRC="$(python3 -c 'import sglang, os; print(sglang.__path__[0])')"; \
- python3 /tmp/patch_qsa_sm121.py --check; \
- python3 /tmp/patch_qsa_sm121.py; \
- python3 /tmp/patch_qsa_sm121.py --check; \
- python3 -m py_compile \
- "$SRC/srt/layers/attention/qwen_sparse_attn_backend.py" \
- "$SRC/srt/layers/attention/qsa_fa_fallback.py"; \
- rm -f /tmp/patch_qsa_sm121.py
|