diff --git a/.buildkite/test_areas/lm_eval.yaml b/.buildkite/test_areas/lm_eval.yaml index a5beb5ea36..f1d787313c 100644 --- a/.buildkite/test_areas/lm_eval.yaml +++ b/.buildkite/test_areas/lm_eval.yaml @@ -136,6 +136,49 @@ steps: commands: - pytest -s -v evals/gsm8k/test_gsm8k_correctness.py --config-list-file=evals/gsm8k/configs/moe-refactor-dp-ep/config-b200.txt +- label: LM Eval Humming (A100 - TEMPORARY) + key: lm-eval-humming-a100 + timeout_in_minutes: 30 + device: a100 + optional: true + num_devices: 1 + source_file_dependencies: + - vllm/model_executor/layers/quantization/humming.py + - vllm/model_executor/layers/quantization/utils/humming_utils.py + - vllm/model_executor/layers/fused_moe/experts/fused_humming_moe.py + - vllm/model_executor/layers/fused_moe/oracle/mxfp4.py + commands: + - pytest -s -v evals/gsm8k/test_gsm8k_correctness.py --config-list-file=evals/gsm8k/configs/humming/config.txt + +- label: LM Eval Humming (H100 - TEMPORARY) + key: lm-eval-humming-h100 + timeout_in_minutes: 30 + device: h100 + optional: true + num_devices: 1 + source_file_dependencies: + - vllm/model_executor/layers/quantization/humming.py + - vllm/model_executor/layers/quantization/utils/humming_utils.py + - vllm/model_executor/layers/fused_moe/experts/fused_humming_moe.py + - vllm/model_executor/layers/fused_moe/oracle/mxfp4.py + commands: + - pytest -s -v evals/gsm8k/test_gsm8k_correctness.py --config-list-file=evals/gsm8k/configs/humming/config.txt + - pytest -s -v evals/gsm8k/test_gsm8k_correctness.py --config-list-file=evals/gsm8k/configs/humming/config-act-fp8.txt + +- label: LM Eval Humming (B200 - TEMPORARY) + key: lm-eval-humming-b200 + timeout_in_minutes: 30 + device: b200-k8s + optional: true + num_devices: 1 + source_file_dependencies: + - vllm/model_executor/layers/quantization/humming.py + - vllm/model_executor/layers/quantization/utils/humming_utils.py + - vllm/model_executor/layers/fused_moe/experts/fused_humming_moe.py + - vllm/model_executor/layers/fused_moe/oracle/mxfp4.py + commands: + - pytest -s -v evals/gsm8k/test_gsm8k_correctness.py --config-list-file=evals/gsm8k/configs/humming/config.txt + - pytest -s -v evals/gsm8k/test_gsm8k_correctness.py --config-list-file=evals/gsm8k/configs/humming/config-act-fp8.txt - label: LM Eval TurboQuant KV Cache key: lm-eval-turboquant-kv-cache diff --git a/requirements/cuda.txt b/requirements/cuda.txt index 89be67be8f..19a1f63dd9 100644 --- a/requirements/cuda.txt +++ b/requirements/cuda.txt @@ -26,4 +26,4 @@ quack-kernels>=0.3.3 tokenspeed-mla==0.1.2 # Humming kernels for quantization gemm -humming-kernels[cu13]==0.1.4 +humming-kernels[cu13]==0.1.6 diff --git a/tests/evals/gsm8k/configs/humming/Qwen3-30B-A3B-MXFP4A16-humming-act-fp8.yaml b/tests/evals/gsm8k/configs/humming/Qwen3-30B-A3B-MXFP4A16-humming-act-fp8.yaml new file mode 100644 index 0000000000..9b77af6732 --- /dev/null +++ b/tests/evals/gsm8k/configs/humming/Qwen3-30B-A3B-MXFP4A16-humming-act-fp8.yaml @@ -0,0 +1,12 @@ +model_name: "nm-testing/Qwen3-30B-A3B-MXFP4A16" +accuracy_threshold: 0.86 +num_questions: 1319 +num_fewshot: 5 +server_args: >- + --enforce-eager + --max-model-len 8192 + --tensor-parallel-size 1 + --quantization humming + --kernel-config.enable_flashinfer_autotune=False +env: + VLLM_HUMMING_INPUT_QUANT_CONFIG: '{"dtype":"float8e4m3"}' diff --git a/tests/evals/gsm8k/configs/humming/Qwen3-30B-A3B-MXFP4A16-humming.yaml b/tests/evals/gsm8k/configs/humming/Qwen3-30B-A3B-MXFP4A16-humming.yaml new file mode 100644 index 0000000000..0b1599ff94 --- /dev/null +++ b/tests/evals/gsm8k/configs/humming/Qwen3-30B-A3B-MXFP4A16-humming.yaml @@ -0,0 +1,10 @@ +model_name: "nm-testing/Qwen3-30B-A3B-MXFP4A16" +accuracy_threshold: 0.86 +num_questions: 1319 +num_fewshot: 5 +server_args: >- + --enforce-eager + --max-model-len 8192 + --tensor-parallel-size 1 + --quantization humming + --kernel-config.enable_flashinfer_autotune=False diff --git a/tests/evals/gsm8k/configs/humming/config-act-fp8.txt b/tests/evals/gsm8k/configs/humming/config-act-fp8.txt new file mode 100644 index 0000000000..05fb6a1583 --- /dev/null +++ b/tests/evals/gsm8k/configs/humming/config-act-fp8.txt @@ -0,0 +1,2 @@ +gpt-oss-20b-humming-act-fp8.yaml +Qwen3-30B-A3B-MXFP4A16-humming-act-fp8.yaml diff --git a/tests/evals/gsm8k/configs/humming/config.txt b/tests/evals/gsm8k/configs/humming/config.txt new file mode 100644 index 0000000000..821025365c --- /dev/null +++ b/tests/evals/gsm8k/configs/humming/config.txt @@ -0,0 +1,2 @@ +gpt-oss-20b-humming.yaml +Qwen3-30B-A3B-MXFP4A16-humming.yaml diff --git a/tests/evals/gsm8k/configs/humming/gpt-oss-20b-humming-act-fp8.yaml b/tests/evals/gsm8k/configs/humming/gpt-oss-20b-humming-act-fp8.yaml new file mode 100644 index 0000000000..00ba9eccfd --- /dev/null +++ b/tests/evals/gsm8k/configs/humming/gpt-oss-20b-humming-act-fp8.yaml @@ -0,0 +1,11 @@ +model_name: "openai/gpt-oss-20b" +accuracy_threshold: 0.30 +num_questions: 1319 +num_fewshot: 5 +server_args: >- + --enforce-eager + --max-model-len 8192 + --tensor-parallel-size 1 + --moe-backend humming +env: + VLLM_HUMMING_INPUT_QUANT_CONFIG: '{"dtype":"float8e4m3"}' diff --git a/tests/evals/gsm8k/configs/humming/gpt-oss-20b-humming.yaml b/tests/evals/gsm8k/configs/humming/gpt-oss-20b-humming.yaml new file mode 100644 index 0000000000..e2beb3739b --- /dev/null +++ b/tests/evals/gsm8k/configs/humming/gpt-oss-20b-humming.yaml @@ -0,0 +1,9 @@ +model_name: "openai/gpt-oss-20b" +accuracy_threshold: 0.30 +num_questions: 1319 +num_fewshot: 5 +server_args: >- + --enforce-eager + --max-model-len 8192 + --tensor-parallel-size 1 + --moe-backend humming diff --git a/vllm/model_executor/layers/quantization/humming.py b/vllm/model_executor/layers/quantization/humming.py index 49e2f18ef6..eb598ff7f7 100644 --- a/vllm/model_executor/layers/quantization/humming.py +++ b/vllm/model_executor/layers/quantization/humming.py @@ -852,7 +852,7 @@ class HummingMoEMethod(FusedMoEMethodBase): # use moe modular experts: HummingIndexedExperts | HummingGroupedExperts - layer.ensure_moe_quant_config_init() + layer._ensure_moe_quant_config_init() assert self.moe_quant_config is not None if get_humming_moe_gemm_type() == "indexed": experts = HummingIndexedExperts(layer, self.moe, self.moe_quant_config)