Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
283f505
[Cherry-pick to release/v0.5.17] feat(grpc): add generation request s…
Kangyan-Zhou Aug 5, 2026
bc2fc41
Fix broken Nemotron DP attention (#33123)
b8zhong Aug 5, 2026
4fbc160
[Cherry-pick to release/v0.5.17] [DCP] Match the replicated draft KV …
Kangyan-Zhou Aug 5, 2026
f2890ad
[Cherry-pick to release/v0.5.17] Fix Nightly NV CI (#33564) (#33779)
Kangyan-Zhou Aug 6, 2026
7163b4a
[Cherry-pick to release/v0.5.17] [CI] Temporarily disable prefill cud…
Kangyan-Zhou Aug 6, 2026
20cef18
Fix Mistral-Large-3 EAGLE draft skipping DeepseekV2Model.__init__
b8zhong Aug 6, 2026
d3cba91
fix(gdn): skip the -1 padding sentinel in the chunked extend kernel (…
Oasis-Git Aug 7, 2026
9e3287e
[Cherry-pick to release/v0.5.17] docker: add Kimi K3 artifacts and bu…
Kangyan-Zhou Aug 7, 2026
8af8fba
[Cherry-pick to release/v0.5.17] Fix MXFP4 scale placeholder initiali…
Kangyan-Zhou Aug 7, 2026
4c06614
[Cherry-pick to release/v0.5.17] [AMD] Fuse Kimi-K3 attn-residual agg…
Kangyan-Zhou Aug 7, 2026
58be7db
[Cherry-pick to release/v0.5.17] [Kimi-K3] Allow DSPARK verify on cut…
Kangyan-Zhou Aug 7, 2026
2948168
[Cherry-pick to release/v0.5.17] fix(PP): size the mamba pool per pip…
Kangyan-Zhou Aug 7, 2026
f704fe2
feat(onion): install Onion for private delivery
HanHan009527 Aug 12, 2026
0188325
feat(eic): add private delivery integration
HanHan009527 Aug 12, 2026
9e214b6
ci: restore private delivery pipelines
HanHan009527 Aug 12, 2026
a312850
ci: add zstd and nydus image formats to private delivery build
HanHan009527 Aug 13, 2026
8dba973
ci: default private delivery build to oci+zstd+nydus for all callers
HanHan009527 Aug 13, 2026
8f64ffd
ci: reuse base build cache for zstd re-export via registry mode=max
HanHan009527 Aug 13, 2026
31bf244
ci: fix kernel wheel path after deepseek_v4 moved AOT kernels to sgl-…
HanHan009527 Aug 14, 2026
b806888
ci: split nightly kernel build to deepseek_v4's own workflow
HanHan009527 Aug 14, 2026
7ae8a83
ci: add backfill-image-formats workflow for zstd/nydus format backfill
HanHan009527 Aug 17, 2026
9fd6ff5
ci: fix backfill workflow sync_to_customer default and simplify trigg…
HanHan009527 Aug 17, 2026
a3a67ff
ci: make in-container image verify opt-out for deepseek_v4 nightly
HanHan009527 Aug 17, 2026
2e13118
ci: use docker manifest inspect instead of skopeo for backfill workflow
HanHan009527 Aug 18, 2026
c435f33
ci: add rename step to backfill workflow for historical image migration
HanHan009527 Aug 19, 2026
bfa0d96
[DSV4][DSpark] Support PP/CP/DP/DeepEP (#727)
shiyu7 Aug 21, 2026
73ed7e6
[DSV4][DSpark] Budget draft KV only on its PP owner (#730)
shiyu7 Aug 21, 2026
dab2bcc
[DSpark][MoE] Support MegaMoE under DP attention (#728)
shiyu7 Aug 21, 2026
53a782b
[MoE][MXFP4] Shard weights before Marlin padding (#731)
shiyu7 Aug 21, 2026
6ed5780
perf(moe): add Triton 3.6 H20 configs for DSV4 (#733)
shiyu7 Aug 22, 2026
3c78ea6
[HiCache] Split the host-memory budget across co-located ranks (#732)
luoroger37 Aug 24, 2026
9b35868
[HiCache] Batch PP write/load completion synchronization (#729)
shiyu7 Aug 24, 2026
cbdec81
[HiCache] Merge upstream write-back duplicate reclamation fixes (#735)
luoroger37 Aug 24, 2026
12cbb0d
[HiCache] Clamp tombstoned SWA locations in unified translation (#736)
luoroger37 Aug 24, 2026
9f883bb
ci: support customer registry source for zstd-to-gzip conversion
HanHan009527 Aug 24, 2026
919e675
ci: simplify backfill workflow, merge rename+backfill, remove custome…
HanHan009527 Aug 24, 2026
bd15d4f
ci: detect sglang version from historical images
HanHan009527 Aug 24, 2026
307f2b9
ci: reject placeholder versions in image backfill
HanHan009527 Aug 24, 2026
0faf49f
ci: simplify historical image auto-rename inputs
HanHan009527 Aug 25, 2026
d101149
fix: prevent false decode retraction with SWA (#739)
shiyu7 Aug 25, 2026
7da4424
ci: support injected values in manual image tags (#740)
shiyu7 Aug 25, 2026
8644ab1
ci: default unknown historical image versions
HanHan009527 Aug 27, 2026
e291044
ci: use dev sentinel for unknown image versions
HanHan009527 Aug 27, 2026
0455119
ci: support exact image normalization before backfill
HanHan009527 Aug 31, 2026
d5349c4
ci: bypass proxy for internal registry copy
HanHan009527 Aug 31, 2026
b709718
[qwen3_5] P0 correctness fixes for MTP verify paths (from sgl-project)
TobyMint Sep 1, 2026
2711db4
[qwen3_5] Fix mrope axis handling in fused QK-norm+RoPE+gate kernel (…
TobyMint Sep 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
748 changes: 542 additions & 206 deletions .github/workflows/_docker-build-and-publish.yml

Large diffs are not rendered by default.

384 changes: 384 additions & 0 deletions .github/workflows/backfill-image-formats.yml

Large diffs are not rendered by default.

3 changes: 0 additions & 3 deletions .github/workflows/nightly-release-gateway.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,6 @@
name: Nightly Release SGLang Model Gateway to PyPI

on:
schedule:
# Run at 2 AM UTC every day
- cron: '0 2 * * *'
workflow_dispatch: # Allow manual trigger

jobs:
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/pr-test-extra.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ name: PR Test Extra

on:
pull_request:
branches: [main, ep_main]
# `labeled` lets the workflow re-fire when `run-ci-extra` (or `run-ci`)
# is added after the latest push — otherwise GHA leaves the stale
# skipped run in place and there's no way to enable extra without
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/pr-test-rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@ name: PR Test (SMG)

on:
push:
branches: [ main ]
branches: [ main, ep_main ]
paths:
- "sgl-model-gateway/**"
- ".github/workflows/pr-test-rust.yml"
- "scripts/ci/cuda/ci_install_dependency.sh"
- "scripts/ci/cuda/ci_install_gateway_dependencies.sh"
pull_request:
branches: [ main ]
branches: [ main, ep_main ]
types: [opened, synchronize, reopened, labeled]
paths:
- "sgl-model-gateway/**"
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/pr-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ on:
schedule:
- cron: '0 11,23 * * *' # Run 2x daily, 12h apart, off PR-push peaks
pull_request:
branches: [main, ep_main]
workflow_dispatch:
inputs:
force_continue_on_error:
Expand Down
174 changes: 174 additions & 0 deletions .github/workflows/release-docker-deepseek-v4-nightly.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,174 @@
name: Build DeepSeek V4 Nightly CUDA 13 Docker Image

# NOTE:
# - GitHub Actions schedule runs from the default branch workflow definition.
# - This workflow should eventually live on ep_main/default-branch, but always
# checks out bytedance/deepseek_v4 (or the manually selected ref) explicitly.

on:
workflow_dispatch:
inputs:
target_ref:
description: "Git ref to build. Leave empty to use the default bytedance/deepseek_v4 branch."
required: false
default: ""
compile_kernel:
description: "Build sgl-kernel from source before building the image"
required: false
type: boolean
default: true
image_repo:
description: "Optional full Volcengine CR image repo override. Leave empty to use repo variables like release-docker-dev.yml."
required: false
default: ""
schedule:
# UTC+8 02:00
- cron: "0 18 * * *"

concurrency:
group: release-docker-deepseek-v4-nightly-${{ github.event_name == 'workflow_dispatch' && (inputs.target_ref || 'default-target-ref') || 'default-target-ref' }}
cancel-in-progress: true

jobs:
resolve-target-ref:
if: ${{ github.repository == 'bytedance-iaas/sglang' }}
runs-on: ubuntu-22.04
outputs:
target_ref: ${{ steps.resolve.outputs.target_ref }}
steps:
- name: Resolve target ref
id: resolve
run: |
set -euo pipefail
target_ref="${{ inputs.target_ref || 'bytedance/deepseek_v4' }}"
echo "target_ref=${target_ref}" >> "${GITHUB_OUTPUT}"

resolve-image-metadata:
needs: [resolve-target-ref]
if: ${{ github.repository == 'bytedance-iaas/sglang' }}
environment: prod
runs-on: ubuntu-22.04
outputs:
image_repo: ${{ steps.resolve.outputs.image_repo }}
image_tag: ${{ steps.resolve.outputs.image_tag }}
image_ref: ${{ steps.resolve.outputs.image_ref }}
target_ref: ${{ steps.resolve.outputs.target_ref }}
env:
IMAGE_REPO: ${{ inputs.image_repo || '' }}
VOLCENGINE_CR_REGISTRY: ${{ vars.VOLCENGINE_CR_REGISTRY }}
VOLCENGINE_CR_NAMESPACE: ${{ vars.VOLCENGINE_CR_NAMESPACE }}
VOLCENGINE_CR_REPOSITORY: ${{ vars.VOLCENGINE_CR_REPOSITORY || 'sglang' }}
steps:
- name: Checkout target ref
uses: actions/checkout@v4
with:
ref: ${{ needs.resolve-target-ref.outputs.target_ref }}
fetch-depth: 0
fetch-tags: true

- name: Resolve image metadata
id: resolve
run: |
set -euo pipefail

target_ref="${{ needs.resolve-target-ref.outputs.target_ref }}"
image_repo="${IMAGE_REPO}"
if [ -z "${image_repo}" ]; then
if [ -z "${VOLCENGINE_CR_REGISTRY}" ] || [ -z "${VOLCENGINE_CR_NAMESPACE}" ]; then
echo "::error::Volcengine CR variables are required: VOLCENGINE_CR_REGISTRY and VOLCENGINE_CR_NAMESPACE"
exit 1
fi
image_repo="${VOLCENGINE_CR_REGISTRY}/${VOLCENGINE_CR_NAMESPACE}/${VOLCENGINE_CR_REPOSITORY:-sglang}"
fi

if [ -z "${image_repo}" ] || [[ "${image_repo}" == /* ]] || [[ "${image_repo}" == *'//'* ]]; then
echo "::error::Invalid image repository: '${image_repo}'"
exit 1
fi

tag_mode="manual"
if [ "${{ github.event_name }}" = "schedule" ]; then
tag_mode="nightly"
fi
version="$(python3 python/tools/get_version_tag.py --tag-only)"
version="${version#v}"
timestamp="$(TZ=Asia/Shanghai date +%Y%m%d%H%M)"
if [ "${tag_mode}" = "nightly" ]; then
image_tag="v${version}.iaas.nightly.${timestamp}"
else
image_tag="v${version}.iaas.dev.${timestamp}"
fi
image_tag="${image_tag}-deepseek-v4-cu130"

echo "image_repo=${image_repo}" >> "${GITHUB_OUTPUT}"
echo "image_tag=${image_tag}" >> "${GITHUB_OUTPUT}"
echo "image_ref=${image_repo}:${image_tag}" >> "${GITHUB_OUTPUT}"
echo "target_ref=${target_ref}" >> "${GITHUB_OUTPUT}"

- name: Write image metadata artifact
run: |
set -euo pipefail
mkdir -p /tmp/deepseek-v4-image-metadata
jq -n \
--arg image_repo "${{ steps.resolve.outputs.image_repo }}" \
--arg image_tag "${{ steps.resolve.outputs.image_tag }}" \
--arg image_ref "${{ steps.resolve.outputs.image_ref }}" \
--arg target_ref "${{ steps.resolve.outputs.target_ref }}" \
--arg sglang_commit "$(git rev-parse HEAD)" \
--arg workflow_run_id "${GITHUB_RUN_ID}" \
--arg workflow_run_url "${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}" \
'{image_repo:$image_repo,image_tag:$image_tag,image_ref:$image_ref,target_ref:$target_ref,sglang_commit:$sglang_commit,workflow_run_id:$workflow_run_id,workflow_run_url:$workflow_run_url}' \
> /tmp/deepseek-v4-image-metadata/image-metadata.json

- name: Upload image metadata artifact
uses: actions/upload-artifact@v4
with:
name: deepseek-v4-image-metadata
path: /tmp/deepseek-v4-image-metadata/image-metadata.json
retention-days: 30

build-kernel-wheel:
needs: [resolve-target-ref]
if: ${{ github.repository == 'bytedance-iaas/sglang' && (github.event_name == 'schedule' || inputs.compile_kernel) }}
# Reference the kernel build workflow from the deepseek_v4 branch itself, so
# the wheel build logic tracks that branch's source layout (sgl-kernel/)
# instead of forcing ep_main's shared release-whl-kernel.yml to chase it.
uses: bytedance-iaas/sglang/.github/workflows/release-whl-kernel.yml@bytedance/deepseek_v4
with:
checkout_ref: ${{ needs.resolve-target-ref.outputs.target_ref }}
cuda_version: "13.0"
artifact_name: sgl-kernel-deepseek-v4-cu13

build-nightly:
needs: [resolve-image-metadata, build-kernel-wheel]
if: ${{ github.repository == 'bytedance-iaas/sglang' && always() && needs.resolve-image-metadata.result == 'success' && (needs.build-kernel-wheel.result == 'success' || needs.build-kernel-wheel.result == 'skipped') }}
uses: ./.github/workflows/_docker-build-and-publish.yml
with:
docker_target: framework_final
checkout_ref: ${{ needs.resolve-image-metadata.outputs.target_ref }}
cuda_key: cu130
cuda_version: 13.0.1
cuda_suffix: cu130
# deepseek_v4 source lacks the ep_main runtime smoke tests baked into the
# shared verify step (sglang.srt.runtime_context / arg_groups.arg_utils and
# scripts/eic_integration_check.py exist only on ep_main). Provenance
# labels/env are still baked into the image; skip the in-container verify.
verify_image: false
publish_default_cuda_alias: false
variant_suffix: deepseek-v4
tag_mode: ${{ github.event_name == 'schedule' && 'nightly' || 'manual' }}
image_tag_override: ${{ needs.resolve-image-metadata.outputs.image_tag }}
use_environment: prod
image_repo: ${{ inputs.image_repo || '' }}
artifact_name: ${{ (github.event_name == 'schedule' || inputs.compile_kernel) && 'sgl-kernel-deepseek-v4-cu13' || '' }}
extra_build_args: >-
--build-arg BRANCH_TYPE=local
--build-arg CMAKE_BUILD_PARALLEL_LEVEL=$(nproc)
--build-arg INSTALL_LOCAL_SGL_KERNEL_WHEEL=${{ (github.event_name == 'schedule' || inputs.compile_kernel) && '1' || '0' }}
--build-arg HTTP_PROXY=http://100.68.162.211:3128
--build-arg HTTPS_PROXY=http://100.68.162.211:3128
--build-arg ALL_PROXY=http://100.68.162.211:3128
--build-arg NO_PROXY=localhost,127.0.0.1,::1,mirrors.ivolces.com,.ivolces.com,.volceapi.com,.byted.org,eic-sdk-release.tos-cn-beijing.ivolces.com,scqq9isgq31i0fb8nt4eg.apigateway-cn-beijing.volceapi.com,bytedpypi.byted.org,mirrors.byted.org,iaas-gpu-cn-beijing.cr.volces.com
--build-arg BYTED_INTERNAL_EXTRA_TOOLS_APT_URL=${{ vars.BYTED_INTERNAL_EXTRA_TOOLS_APT_URL || 'http://mirrors.ivolces.com/extra-tools/ubuntu' }}
--build-arg BYTED_INTERNAL_EXTRA_TOOLS_GPG_URL=${{ vars.BYTED_INTERNAL_EXTRA_TOOLS_GPG_URL || 'https://mirrors.ivolces.com/extra-tools/ubuntu/GPG-KEY-system' }}
secrets: inherit
Loading
Loading