diff --git a/.github/workflows/pr-test.yml b/.github/workflows/pr-test.yml index ff3b62d6d..5ebae988b 100644 --- a/.github/workflows/pr-test.yml +++ b/.github/workflows/pr-test.yml @@ -471,21 +471,20 @@ jobs: skip_prebuilt_rust_ext: true secrets: inherit - # Temporarily disabled. - # base-c-test-8-gpu-b300: - # needs: [check-changes, call-gate, wait-for-base-b, sgl-kernel-build-wheels, rust-ext-build] - # if: ${{ !failure() && !cancelled() }} - # uses: ./.github/workflows/_pr-test-stage.yml - # with: - # self_name: base-c-test-8-gpu-b300 - # runner_config: 8-gpu-b300 - # check_changes: ${{ toJson(needs.check-changes.outputs) }} - # caller_inputs: ${{ toJson(inputs) }} - # partitions: ${{ needs.check-changes.outputs.partitions }} - # run_timeout_minutes: '60' - # timeout_per_file: '3600' - # rust_ext_artifact: ${{ needs.rust-ext-build.outputs.artifact_name }} - # secrets: inherit + base-c-test-8-gpu-b300: + needs: [check-changes, call-gate, wait-for-base-b, sgl-kernel-build-wheels, rust-ext-build] + if: ${{ !failure() && !cancelled() }} + uses: ./.github/workflows/_pr-test-stage.yml + with: + self_name: base-c-test-8-gpu-b300 + runner_config: 8-gpu-b300 + check_changes: ${{ toJson(needs.check-changes.outputs) }} + caller_inputs: ${{ toJson(inputs) }} + partitions: ${{ needs.check-changes.outputs.partitions }} + run_timeout_minutes: '60' + timeout_per_file: '3600' + rust_ext_artifact: ${{ needs.rust-ext-build.outputs.artifact_name }} + secrets: inherit # List every build and test job: `skipped` passes here, so an omission turns that # job's failure into a green run with no tests. @@ -519,7 +518,7 @@ jobs: base-c-test-8-gpu-h200, base-c-test-4-gpu-b200, base-c-test-4-gpu-gb300, - # base-c-test-8-gpu-b300, # Temporarily disabled. + base-c-test-8-gpu-b300, ] if: always() runs-on: ubuntu-latest diff --git a/test/registered/models_e2e/test_dsa_glm52_pd_mtp_cp_layersplit.py b/test/registered/models_e2e/test_dsa_glm52_pd_mtp_cp_layersplit.py index 5bf33d972..495752e6b 100644 --- a/test/registered/models_e2e/test_dsa_glm52_pd_mtp_cp_layersplit.py +++ b/test/registered/models_e2e/test_dsa_glm52_pd_mtp_cp_layersplit.py @@ -22,14 +22,16 @@ from sglang.test.server_fixtures.disaggregation_fixture import ( register_cuda_ci(est_time=750, stage="base-c", runner_config="8-gpu-b300") +MODEL_LOADER_EXTRA_CONFIG = '{"enable_multithread_load": true, "num_threads": 6}' + class TestGLM52DSACacheLayerSplit(PDDisaggregationServerBase, GSM8KMixin): - model = "/data/radixark/model-cache/hub/models--nvidia--GLM-5.2-NVFP4/snapshots/aec724e8c7b8ee9db3b48c01c320f63f9cdaf8aa" + model = "nvidia/GLM-5.2-NVFP4" # Full GSM8K test set (1319 questions) with a tight accuracy floor. gsm8k_accuracy_thres = 0.935 gsm8k_num_questions = 1319 - gsm8k_num_threads = 200 + gsm8k_num_threads = 48 gsm8k_num_shots = 20 # Prefill worker: interleave prefill-CP + DSA cache layer split on 4 GPUs @@ -49,6 +51,8 @@ class TestGLM52DSACacheLayerSplit(PDDisaggregationServerBase, GSM8KMixin): "interleave", "--mem-fraction-static", "0.85", + "--model-loader-extra-config", + MODEL_LOADER_EXTRA_CONFIG, "--chunked-prefill-size", "4096", "--max-prefill-tokens", @@ -73,6 +77,8 @@ class TestGLM52DSACacheLayerSplit(PDDisaggregationServerBase, GSM8KMixin): "fp8_e4m3", "--mem-fraction-static", "0.85", + "--model-loader-extra-config", + MODEL_LOADER_EXTRA_CONFIG, "--speculative-algorithm", "EAGLE", "--speculative-num-steps", diff --git a/test/registered/models_e2e/test_kimi_k3_b300.py b/test/registered/models_e2e/test_kimi_k3_b300.py index 7275546cc..41b2ca4e3 100644 --- a/test/registered/models_e2e/test_kimi_k3_b300.py +++ b/test/registered/models_e2e/test_kimi_k3_b300.py @@ -20,12 +20,10 @@ from sglang.test.test_utils import ( register_cuda_ci(est_time=1200, stage="base-c", runner_config="8-gpu-b300") -MODEL_PATH = ( - "/data/radixark/model-cache/hub/models--moonshotai--Kimi-K3/" - "snapshots/9f62e4e9fffbd0a83ddd60e1c209d828994b3569" -) +MODEL_PATH = "moonshotai/Kimi-K3" DSPARK_DRAFT_MODEL = "RadixArk/Kimi-K3-DSpark" MEGAMOE_URL = "http://0.0.0.0:30000" +MODEL_LOADER_EXTRA_CONFIG = '{"enable_multithread_load": true, "num_threads": 12}' MEGAMOE_ENV = { "SGLANG_OPT_DEEPGEMM_MEGA_MOE_NUM_MAX_TOKENS_PER_RANK": "8320", } @@ -44,6 +42,7 @@ class TestKimiK3B300LowLatency(GSM8KMixin, SpecDecodingMixin, CustomTestCase): gsm8k_score_threshold = 0.95 gsm8k_num_examples = 200 + gsm8k_num_threads = 37 # Gated on GSM8K rather than on test_bs_1_speed below: a 200-question # average holds steady when a numerics change moves where the single # greedy prompt hits EOS. @@ -68,7 +67,8 @@ class TestKimiK3B300LowLatency(GSM8KMixin, SpecDecodingMixin, CustomTestCase): "8", "--mem-fraction-static", "0.85", - "--weight-loader-prefetch-checkpoints", + "--model-loader-extra-config", + MODEL_LOADER_EXTRA_CONFIG, "--reasoning-parser", "kimi_k3", "--tool-call-parser", @@ -95,6 +95,7 @@ class TestKimiK3B300Balanced(GSM8KMixin, CustomTestCase): gsm8k_score_threshold = 0.95 gsm8k_num_examples = 200 + gsm8k_num_threads = 98 @classmethod def setUpClass(cls): @@ -112,7 +113,8 @@ class TestKimiK3B300Balanced(GSM8KMixin, CustomTestCase): "8", "--mem-fraction-static", "0.85", - "--weight-loader-prefetch-checkpoints", + "--model-loader-extra-config", + MODEL_LOADER_EXTRA_CONFIG, "--reasoning-parser", "kimi_k3", "--tool-call-parser", @@ -133,6 +135,7 @@ class TestKimiK3B300MegaMoE(GSM8KMixin, CustomTestCase): gsm8k_score_threshold = 0.95 gsm8k_num_examples = 200 + gsm8k_num_threads = 22 @classmethod def setUpClass(cls): @@ -154,6 +157,8 @@ class TestKimiK3B300MegaMoE(GSM8KMixin, CustomTestCase): "8", "--mem-fraction-static", "0.85", + "--model-loader-extra-config", + MODEL_LOADER_EXTRA_CONFIG, "--reasoning-parser", "kimi_k3", "--tool-call-parser",