You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
|`activation_type`| string |`"relu"`|One of `"relu"`, `"gelu"`, `"silu"`, `"swiglu"`, `"identity"`. These are the only values accepted end-to-end (attribute parsing); other kernel-internal types are not reachable from ONNX. |
65
65
|`normalize_routing_weights`| int | 0 | Re-normalize the top-k weights to sum to 1. |
66
66
|`use_sparse_mixer`| int | 0 | Enable sparse-mixer routing variant. |
67
67
|`swiglu_fusion`| int | 0 | 0=no fusion, 1=interleaved (Gate/Value), 2=block (Gate;Value). See [§8](#8-swiglu-fusion). |
> **CPU note**: The CPU MoE/QMoE implementation only supports the **interleaved**
449
+
> SwiGLU layout (`swiglu_fusion=1`). The concatenated layout (`swiglu_fusion=2`)
450
+
> throws `ORT_NOT_IMPLEMENTED` on CPU; use the CUDA EP for concatenated SwiGLU.
423
451
424
452
### Standard MoE runtime fc3 fusion
425
453
@@ -776,6 +804,10 @@ The block-scaled tensor op path is fundamentally more efficient because the
776
804
hardware fuses dequantization with the matrix multiply, vs. the in-register
777
805
software dequant of the mixed-input path.
778
806
807
+
> **MSVC note**: Native SM90/SM120 TMA grouped MoE kernels are disabled in Windows/MSVC
808
+
> builds because CUDA 13 generates host stubs that MSVC rejects for over-aligned
809
+
> TMA parameters. See [§14.1](#141-msvc-and-tma-grouped-moe-gemm).
810
+
779
811
---
780
812
781
813
## 12. Future / Deferred Modes
@@ -796,7 +828,7 @@ will not change the operator interface.
796
828
797
829
| Test file | Coverage |
798
830
|-----------|----------|
799
-
|[test_moe_cuda.py](onnxruntime/test/python/transformers/test_moe_cuda.py)| Standard MoE on CUDA: FP16/BF16, SiLU/GeLU/SwiGLU, routing, GEMM parity. |
831
+
|[test_moe_cuda.py](onnxruntime/test/python/transformers/test_moe_cuda.py)| Standard MoE on CUDA: FP16/BF16, SiLU/GeLU/SwiGLU, routing, GEMM parity. SwiGLU coverage includes both GPT-OSS (`TestSwigluMoE`: interleaved, alpha=1.702/beta=1.0/limit=7.0) and Standard/Llama-Gemma (`TestStandardSwigluMoE`: concatenated `swiglu_fusion=2`, alpha=1.0/beta=0.0/no limit → `SiLU(Gate)×Value`). |
800
832
|[test_moe_cpu.py](onnxruntime/test/python/transformers/test_moe_cpu.py)| Standard MoE on CPU (smoke). |
801
833
|[test_qmoe_cuda.py](onnxruntime/test/python/transformers/test_qmoe_cuda.py)| INT4/INT8 QMoE — primary regression signal for the production QMoE path. Exercises `pack_weights_for_cuda_mixed_gemm` and dequant-then-matmul reference. |
802
834
|[test_qmoe_cpu.py](onnxruntime/test/python/transformers/test_qmoe_cpu.py)| INT4/INT8 QMoE on CPU (smoke). |
0 commit comments