From 874fc07d9bbbb714a71e5d4cbe5e005a885168ef Mon Sep 17 00:00:00 2001 From: Xiaoyu Zhang <1182563586@qq.com> Date: Mon, 13 Jul 2026 16:17:01 +0800 Subject: [PATCH] [Kernel] Migrate scattered quantization kernels to sglang.kernels (RFC #29630, Phase 2.5, 1/7) (#30784) Co-authored-by: Claude Fable 5 --- .../deepseek/benchmark_deepgemm_fp8_gemm.py | 2 +- .../benchmark_deepgemm_fp8_gemm_blackwell.py | 2 +- .../benchmark_fused_collective.py | 4 +- .../kernels/quantization/bench_int8_quant.py | 2 +- .../quantization/tuning_block_wise_kernel.py | 8 +- .../jit_kernel/tests/test_minimax_m3_mxfp8.py | 4 +- .../sglang/jit_kernel/triton_store_cache.py | 2 +- python/sglang/kernels/ops/moe/__init__.py | 11 +++ .../sglang/kernels/ops/moe/pack_topk_ids.py | 86 +++++++++++++++++++ .../kernels/ops/quantization/__init__.py | 47 ++++++++++ .../ops/quantization}/awq_triton.py | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 ...type=int8_w8a8,block_shape=[128, 128].json | 0 ...dtype=fp8_w8a8,block_shape=[128, 128].json | 0 .../ops}/quantization/configs/README.md | 0 .../ops}/quantization/fp8_kernel.py | 2 +- .../ops}/quantization/int8_kernel.py | 0 .../ops}/quantization/mxfp8_amd_gfx95.py | 0 .../nvfp4_gemm_swiglu_nvfp4_quant.py | 0 .../runtime/layers/quantization/fp8.py | 8 +- .../gpu/quantization/awq_kernels.py | 4 +- .../srt/layers/attention/aiter_backend.py | 2 +- .../srt/layers/attention/aiter_utils.py | 2 +- .../srt/layers/attention/dsa/dsa_indexer.py | 2 +- .../attention/dsa/index_buf_accessor.py | 4 +- .../layers/attention/dsa/tilelang_kernel.py | 2 +- .../layers/attention/dsa/triton_sparse_mla.py | 2 +- .../srt/layers/attention/dsa_backend.py | 2 +- .../layers/attention/dsv4/dequant_k_cache.py | 2 +- .../attention/dsv4/index_buf_accessor.py | 2 +- .../srt/layers/attention/dsv4/indexer.py | 2 +- .../layers/attention/dsv4/quant_k_cache.py | 2 +- .../dsv4/unified_kv_kernels/paged_decode.py | 2 +- .../srt/layers/attention/flashmla_backend.py | 2 +- .../srt/layers/attention/hip_flash_mla.py | 2 +- .../layers/attention/trtllm_mla_backend.py | 2 +- python/sglang/srt/layers/communicator.py | 2 +- .../srt/layers/fused_qk_norm_rope_store.py | 2 +- python/sglang/srt/layers/moe/cutlass_moe.py | 2 +- .../sglang/srt/layers/moe/ep_moe/kernels.py | 2 +- python/sglang/srt/layers/moe/ep_moe/layer.py | 2 +- .../srt/layers/moe/moe_runner/deep_gemm.py | 10 +-- .../moe/moe_runner/flashinfer_cutlass.py | 2 +- .../moe/moe_runner/flashinfer_trtllm.py | 11 +-- .../triton_utils/fused_moe_triton_kernels.py | 8 +- .../triton_utils/mxfp8_moe_amd_gfx95.py | 2 +- .../srt/layers/moe/token_dispatcher/deepep.py | 2 +- .../srt/layers/moe/token_dispatcher/moriep.py | 2 +- .../srt/layers/quantization/awq/__init__.py | 6 +- .../schemes/compressed_tensors_w8a8_fp8.py | 2 +- .../compressed_tensors_w8a8_fp8_moe.py | 2 +- .../schemes/compressed_tensors_w8a8_int8.py | 2 +- python/sglang/srt/layers/quantization/fp8.py | 12 +-- .../srt/layers/quantization/fp8_utils.py | 10 +-- .../srt/layers/quantization/fpgemm_fp8.py | 2 +- .../srt/layers/quantization/int8_utils.py | 2 +- .../srt/layers/quantization/kv_cache.py | 2 +- .../srt/layers/quantization/modelopt_quant.py | 4 +- .../mxfp4_flashinfer_trtllm_moe.py | 79 +---------------- python/sglang/srt/layers/quantization/qoq.py | 2 +- .../quark/schemes/quark_w8a8_fp8.py | 2 +- .../quark/schemes/quark_w8a8_fp8_moe.py | 2 +- .../sglang/srt/layers/quantization/utils.py | 2 +- .../srt/layers/quantization/w8a8_fp8.py | 10 +-- .../srt/layers/quantization/w8a8_int8.py | 2 +- .../lora/trtllm_lora_temp/lora_dispatch.py | 2 +- .../srt/lora/trtllm_lora_temp/moe_overlap.py | 2 +- python/sglang/srt/mem_cache/memory_pool.py | 2 +- .../sglang/srt/model_executor/model_runner.py | 2 +- python/sglang/srt/model_loader/loader.py | 2 +- .../sglang/srt/models/bailing_moe_linear.py | 4 +- .../attention_forward_methods/forward_mha.py | 2 +- .../attention_forward_methods/forward_mla.py | 10 +-- .../forward_mla_fused_rope_rocm.py | 2 +- .../srt/models/deepseek_common/utils.py | 6 +- python/sglang/srt/models/deepseek_v2.py | 10 +-- python/sglang/srt/models/glm4_moe.py | 2 +- python/sglang/srt/models/longcat_flash.py | 4 +- .../sglang/srt/models/longcat_flash_nextn.py | 4 +- python/sglang/srt/models/sarvam_moe.py | 2 +- test/manual/quant/test_block_fp8.py | 8 +- test/manual/quant/test_custom_ops.py | 2 +- .../bench_per_token_group_quant_8bit.py | 4 +- .../bench_per_token_group_quant_8bit_v2.py | 2 +- .../jit/deepseek_v4/test_fp8_wo_a.py | 2 +- .../test_diffusion_modelopt_fp8_scaled_mm.py | 2 +- .../jit/test_fused_store_index_cache.py | 2 +- .../jit/test_per_token_group_quant_8bit.py | 4 +- .../jit/test_per_token_group_quant_8bit_v2.py | 2 +- .../kernels/test_kernels_namespace.py | 6 ++ test/registered/moe/test_fused_moe.py | 2 +- .../moe/test_triton_moe_channel_fp8_kernel.py | 2 +- test/registered/quant/test_awq_dequant.py | 2 +- .../quant/test_fp8_blockwise_row_padding.py | 2 +- test/registered/quant/test_fp8_kernel.py | 2 +- test/registered/quant/test_int8_kernel.py | 2 +- .../registered/quant/test_triton_scaled_mm.py | 2 +- 252 files changed, 294 insertions(+), 214 deletions(-) create mode 100644 python/sglang/kernels/ops/moe/pack_topk_ids.py rename python/sglang/{srt/layers/quantization/awq => kernels/ops/quantization}/awq_triton.py (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=1280,K=5120,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=1536,K=1536,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=1536,K=1536,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=1536,K=1536,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=1536,K=1536,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=1536,K=1536,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=1536,K=7168,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=1536,K=7168,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=1536,K=7168,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=1536,K=7168,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=1536,K=7168,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=1536,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=1536,K=7168,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=1536,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=1536,K=7168,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=2048,K=4096,device_name=NVIDIA_L40,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=2048,K=512,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=2048,K=512,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=2048,K=512,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=2048,K=512,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=2048,K=512,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=2048,K=512,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=2304,K=7168,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=2304,K=7168,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=2304,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=2304,K=7168,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=2304,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=2304,K=7168,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=24576,K=1536,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=24576,K=1536,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=24576,K=1536,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=24576,K=7168,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=24576,K=7168,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=24576,K=7168,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=24576,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=24576,K=7168,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=24576,K=7168,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=24576,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=24576,K=7168,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=256,K=7168,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=256,K=7168,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=256,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=256,K=7168,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=256,K=7168,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=3072,K=1536,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=3072,K=1536,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=3072,K=1536,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=3072,K=1536,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=3072,K=1536,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=3072,K=1536,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=3072,K=7168,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=3072,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=3072,K=7168,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=3072,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=32768,K=512,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=32768,K=512,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=32768,K=512,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=32768,K=512,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=32768,K=512,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=32768,K=512,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=32768,K=512,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=32768,K=512,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=32768,K=512,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=32768,K=512,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=32768,K=512,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=36864,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=36864,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=4096,K=512,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=4096,K=512,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=4096,K=512,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=4096,K=512,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=4096,K=512,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=4096,K=512,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=4096,K=512,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=4608,K=7168,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=4608,K=7168,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=4608,K=7168,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=4608,K=7168,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=4608,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=4608,K=7168,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=4608,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=512,K=7168,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=512,K=7168,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=512,K=7168,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=512,K=7168,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=512,K=7168,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=512,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=5120,K=1024,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=5120,K=2048,device_name=NVIDIA_L40,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=5120,K=3200,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=576,K=7168,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=576,K=7168,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=576,K=7168,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=576,K=7168,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=576,K=7168,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=576,K=7168,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=576,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=576,K=7168,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=576,K=7168,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=576,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=576,K=7168,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=6400,K=5120,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=1024,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=1024,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=1024,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=1024,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=1024,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=1024,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=1152,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=1152,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=1152,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=1152,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=1152,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=1152,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=128,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=128,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=128,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=128,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=128,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=16384,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=16384,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=16384,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=16384,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=16384,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=16384,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=16384,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=16384,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=16384,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=16384,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=16384,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=18432,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=18432,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=18432,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=18432,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=18432,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=18432,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=18432,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=18432,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=2048,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=2048,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=2048,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=2048,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=2048,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=2048,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=2048,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=2304,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=2304,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=2304,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=2304,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=2304,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=2304,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=2304,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=256,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=256,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=256,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=256,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=256,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/N=7168,K=256,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/configs/README.md (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/fp8_kernel.py (99%) rename python/sglang/{srt/layers => kernels/ops}/quantization/int8_kernel.py (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/mxfp8_amd_gfx95.py (100%) rename python/sglang/{srt/layers => kernels/ops}/quantization/nvfp4_gemm_swiglu_nvfp4_quant.py (100%) diff --git a/benchmark/kernels/deepseek/benchmark_deepgemm_fp8_gemm.py b/benchmark/kernels/deepseek/benchmark_deepgemm_fp8_gemm.py index 0b18e3bad..0b958de68 100644 --- a/benchmark/kernels/deepseek/benchmark_deepgemm_fp8_gemm.py +++ b/benchmark/kernels/deepseek/benchmark_deepgemm_fp8_gemm.py @@ -12,7 +12,7 @@ from vllm.model_executor.layers.quantization.utils.fp8_utils import ( ) from sglang.benchmark.bench_utils import run_bench -from sglang.srt.layers.quantization.fp8_kernel import ( +from sglang.kernels.ops.quantization.fp8_kernel import ( w8a8_block_fp8_matmul_deepgemm as w8a8_block_fp8_matmul, ) diff --git a/benchmark/kernels/deepseek/benchmark_deepgemm_fp8_gemm_blackwell.py b/benchmark/kernels/deepseek/benchmark_deepgemm_fp8_gemm_blackwell.py index 3257da7b3..5670f3c33 100644 --- a/benchmark/kernels/deepseek/benchmark_deepgemm_fp8_gemm_blackwell.py +++ b/benchmark/kernels/deepseek/benchmark_deepgemm_fp8_gemm_blackwell.py @@ -7,7 +7,7 @@ from deep_gemm import ceil_div from flashinfer.gemm import gemm_fp8_nt_groupwise from sglang.benchmark.bench_utils import run_bench -from sglang.srt.layers.quantization.fp8_kernel import ( +from sglang.kernels.ops.quantization.fp8_kernel import ( sglang_per_token_group_quant_fp8, w8a8_block_fp8_matmul_deepgemm, ) diff --git a/benchmark/kernels/flashinfer_allreduce_fusion/benchmark_fused_collective.py b/benchmark/kernels/flashinfer_allreduce_fusion/benchmark_fused_collective.py index c27f8c323..d1c3f545c 100644 --- a/benchmark/kernels/flashinfer_allreduce_fusion/benchmark_fused_collective.py +++ b/benchmark/kernels/flashinfer_allreduce_fusion/benchmark_fused_collective.py @@ -28,6 +28,8 @@ from typing import Optional import torch # type: ignore import torch.distributed as dist # type: ignore +from sglang.kernels.ops.quantization.fp8_kernel import fp8_dtype as SGLANG_FP8_DTYPE +from sglang.kernels.ops.quantization.fp8_kernel import static_quant_fp8 from sglang.srt.distributed import get_tp_group, tensor_model_parallel_all_reduce from sglang.srt.distributed.parallel_state import ( cleanup_dist_env_and_memory, @@ -36,8 +38,6 @@ from sglang.srt.distributed.parallel_state import ( initialize_model_parallel, ) from sglang.srt.layers.layernorm import RMSNorm # noqa -from sglang.srt.layers.quantization.fp8_kernel import fp8_dtype as SGLANG_FP8_DTYPE -from sglang.srt.layers.quantization.fp8_kernel import static_quant_fp8 try: from sgl_kernel import fused_add_rmsnorm as SGL_FUSED_ADD_RMS_NORM diff --git a/benchmark/kernels/quantization/bench_int8_quant.py b/benchmark/kernels/quantization/bench_int8_quant.py index d40458ed9..a51424515 100644 --- a/benchmark/kernels/quantization/bench_int8_quant.py +++ b/benchmark/kernels/quantization/bench_int8_quant.py @@ -5,7 +5,7 @@ import triton from vllm._custom_ops import scaled_int8_quant as vllm_scaled_int8_quant from sglang.benchmark.bench_utils import run_bench -from sglang.srt.layers.quantization.int8_kernel import per_token_quant_int8 +from sglang.kernels.ops.quantization.int8_kernel import per_token_quant_int8 @torch.compile(backend="inductor") diff --git a/benchmark/kernels/quantization/tuning_block_wise_kernel.py b/benchmark/kernels/quantization/tuning_block_wise_kernel.py index edd91c320..1c232fa38 100644 --- a/benchmark/kernels/quantization/tuning_block_wise_kernel.py +++ b/benchmark/kernels/quantization/tuning_block_wise_kernel.py @@ -27,11 +27,11 @@ from tqdm import tqdm mp.set_start_method("spawn", force=True) -from sglang.srt.layers.quantization.fp8_kernel import ( +from sglang.kernels.ops.quantization.fp8_kernel import ( _w8a8_block_fp8_matmul, _w8a8_block_fp8_matmul_unrolledx4, ) -from sglang.srt.layers.quantization.int8_kernel import _w8a8_block_int8_matmul +from sglang.kernels.ops.quantization.int8_kernel import _w8a8_block_int8_matmul from sglang.srt.utils import ( get_device, get_device_core_count, @@ -521,7 +521,9 @@ if __name__ == "__main__": parser.add_argument("--block-k", type=int, default=128) parser.add_argument("--batch-sizes", nargs="+", type=int, required=False) parser.add_argument( - "--save-path", type=str, default="python/sglang/srt/layers/quantization/configs" + "--save-path", + type=str, + default="python/sglang/kernels/ops/quantization/configs", ) args = parser.parse_args() diff --git a/python/sglang/jit_kernel/tests/test_minimax_m3_mxfp8.py b/python/sglang/jit_kernel/tests/test_minimax_m3_mxfp8.py index 52eedf623..1af138548 100644 --- a/python/sglang/jit_kernel/tests/test_minimax_m3_mxfp8.py +++ b/python/sglang/jit_kernel/tests/test_minimax_m3_mxfp8.py @@ -27,7 +27,7 @@ if not is_hip(): if not torch.cuda.is_available(): pytest.skip("Requires a GPU.", allow_module_level=True) -from sglang.srt.layers.quantization.mxfp8_amd_gfx95 import ( # noqa: E402 +from sglang.kernels.ops.quantization.mxfp8_amd_gfx95 import ( # noqa: E402 _mxfp8_dot_scaled_linear, _mxfp8_e4m3_quantize_torch, _mxfp8_e4m3_quantize_triton, @@ -90,7 +90,7 @@ def test_minimax_swiglu_mxfp8_quant_matches_unfused_fp32(m, inter): swiglu_oai_mxfp8_quant, swiglu_oai_split, ) - from sglang.srt.layers.quantization.mxfp8_amd_gfx95 import mxfp8_e4m3_quantize + from sglang.kernels.ops.quantization.mxfp8_amd_gfx95 import mxfp8_e4m3_quantize torch.manual_seed(0) alpha, beta, limit = 1.702, 1.0, 7.0 diff --git a/python/sglang/jit_kernel/triton_store_cache.py b/python/sglang/jit_kernel/triton_store_cache.py index b42a272e7..9824989f9 100644 --- a/python/sglang/jit_kernel/triton_store_cache.py +++ b/python/sglang/jit_kernel/triton_store_cache.py @@ -4,7 +4,7 @@ import torch import triton import triton.language as tl -from sglang.srt.layers.quantization.fp8_kernel import is_fp8_fnuz +from sglang.kernels.ops.quantization.fp8_kernel import is_fp8_fnuz _FP8_DTYPE = torch.float8_e4m3fnuz if is_fp8_fnuz() else torch.float8_e4m3fn _FP8_INFO = torch.finfo(_FP8_DTYPE) diff --git a/python/sglang/kernels/ops/moe/__init__.py b/python/sglang/kernels/ops/moe/__init__.py index 45e70bcbe..6ad53d16b 100644 --- a/python/sglang/kernels/ops/moe/__init__.py +++ b/python/sglang/kernels/ops/moe/__init__.py @@ -117,3 +117,14 @@ for _mod, _fn in _TRITON_KERNELS: ) ) del _mod, _fn + + +# Packed (topk_id << 16 | bf16-weight) kernel migrated from +# srt/layers/quantization/mxfp4_flashinfer_trtllm_moe (RFC #29630, Phase 2.5). +register_kernel( + KernelSpec( + op="moe.pack_topk_ids", + backend=KernelBackend.TRITON, + target="sglang.kernels.ops.moe.pack_topk_ids:PackTopkIds.triton", + ) +) diff --git a/python/sglang/kernels/ops/moe/pack_topk_ids.py b/python/sglang/kernels/ops/moe/pack_topk_ids.py new file mode 100644 index 000000000..d9d40ee63 --- /dev/null +++ b/python/sglang/kernels/ops/moe/pack_topk_ids.py @@ -0,0 +1,86 @@ +"""Pack ``(topk_id, topk_weight)`` pairs into one int32 per entry. + +Migrated from ``sglang.srt.layers.quantization.mxfp4_flashinfer_trtllm_moe`` +(RFC #29630, Phase 2.5). Used by the FlashInfer TRT-LLM routed-MoE path, which +consumes routing ids and bf16 weights packed as ``(id << 16) | weight_bits``. +""" + +import torch +import triton +import triton.language as tl + + +class PackTopkIds: + + @classmethod + def execute( + cls, topk_ids: torch.Tensor, topk_weights: torch.Tensor + ) -> torch.Tensor: + return cls.triton(topk_ids, topk_weights) + + @classmethod + def vanilla( + cls, topk_ids: torch.Tensor, topk_weights: torch.Tensor + ) -> torch.Tensor: + weight_bits = ( + topk_weights.to(torch.bfloat16).view(torch.int16).to(torch.int32) & 0xFFFF + ) + return (topk_ids.to(torch.int32) << 16) | weight_bits + + @classmethod + def triton(cls, topk_ids: torch.Tensor, topk_weights: torch.Tensor) -> torch.Tensor: + assert ( + topk_ids.shape == topk_weights.shape + ), f"shape mismatch: {topk_ids.shape=} vs {topk_weights.shape=}" + assert topk_ids.ndim >= 1, f"expected >=1D, got {topk_ids.shape=}" + + assert ( + topk_ids.dtype == torch.int32 + ), f"topk_ids must be int32, got {topk_ids.dtype}" + assert ( + topk_weights.dtype == torch.float32 + ), f"topk_weights must be float32, got {topk_weights.dtype}" + + assert topk_ids.is_contiguous(), "topk_ids must be contiguous" + assert topk_weights.is_contiguous(), "topk_weights must be contiguous" + + out = torch.empty_like(topk_ids, dtype=torch.int32) + numel = out.numel() + if numel == 0: + return out + + BLOCK_SIZE = 1024 + grid = (triton.cdiv(numel, BLOCK_SIZE),) + _pack_topk_ids_triton_kernel[grid]( + topk_ids, + topk_weights, + out, + numel, + BLOCK_SIZE=BLOCK_SIZE, + ) + return out + + +@triton.jit +def _pack_topk_ids_triton_kernel( + topk_ids_ptr, + topk_weights_ptr, + out_ptr, + numel, + BLOCK_SIZE: tl.constexpr, +): + pid = tl.program_id(0) + offsets = pid * BLOCK_SIZE + tl.arange(0, BLOCK_SIZE) + mask = offsets < numel + + ids = tl.load(topk_ids_ptr + offsets, mask=mask, other=0) + w = tl.load(topk_weights_ptr + offsets, mask=mask, other=0.0) + + w_bf16 = w.to(tl.bfloat16) + w_i16 = w_bf16.to(tl.int16, bitcast=True) + w_i32 = w_i16.to(tl.int32) & 0xFFFF + + ids_i32 = ids.to(tl.int32) + packed = (ids_i32 << 16) | w_i32 + + tl.store(out_ptr + offsets, packed, mask=mask) diff --git a/python/sglang/kernels/ops/quantization/__init__.py b/python/sglang/kernels/ops/quantization/__init__.py index 0159dd386..def98d273 100644 --- a/python/sglang/kernels/ops/quantization/__init__.py +++ b/python/sglang/kernels/ops/quantization/__init__.py @@ -120,3 +120,50 @@ __all__ = [ "sgl_per_token_group_quant_fp8", "sgl_per_token_group_quant_int8", ] + + +# Triton / CuTe DSL kernels migrated into this group from +# srt/layers/quantization (RFC #29630, Phase 2.5); registered for inventory. +# Import them from their modules. +_TRITON_KERNELS = [ + ("fp8_kernel", "per_token_group_quant_8bit"), + ("fp8_kernel", "sglang_per_token_group_quant_fp8"), + ("fp8_kernel", "sglang_per_token_group_quant_8bit"), + ("fp8_kernel", "sglang_per_token_quant_fp8"), + ("fp8_kernel", "static_quant_fp8"), + ("fp8_kernel", "w8a8_block_fp8_matmul"), + ("fp8_kernel", "mxfp8_block_scaled_matmul_triton"), + ("fp8_kernel", "per_tensor_quant_mla_fp8"), + ("fp8_kernel", "per_token_group_quant_mla_deep_gemm_masked_fp8"), + ("fp8_kernel", "per_token_group_quant_fp8_hopper_moe_mn_major"), + ("fp8_kernel", "per_group_transpose"), + ("fp8_kernel", "triton_scaled_mm"), + ("int8_kernel", "per_token_quant_int8"), + ("int8_kernel", "per_token_group_quant_int8"), + ("int8_kernel", "w8a8_block_int8_matmul"), + ("awq_triton", "awq_dequantize_triton"), + ("awq_triton", "awq_gemm_triton"), + ("mxfp8_amd_gfx95", "mxfp8_e4m3_quantize"), +] +for _mod, _fn in _TRITON_KERNELS: + register_kernel( + KernelSpec( + op=f"quantization.{_fn}", + backend=KernelBackend.TRITON, + target=f"sglang.kernels.ops.quantization.{_mod}:{_fn}", + ) + ) +del _mod, _fn + +register_kernel( + KernelSpec( + op="quantization.nvfp4_gemm_swiglu_nvfp4_quant", + backend=KernelBackend.CUTE_DSL, + target=( + "sglang.kernels.ops.quantization.nvfp4_gemm_swiglu_nvfp4_quant" + ":nvfp4_gemm_swiglu_nvfp4_quant" + ), + capability=CapabilityRequirement(requires_cuda=True, min_cuda_arch=(10, 0)), + description="Fused NVFP4 GEMM + SwiGLU + NVFP4 quant (CuTe DSL, SM100).", + ) +) diff --git a/python/sglang/srt/layers/quantization/awq/awq_triton.py b/python/sglang/kernels/ops/quantization/awq_triton.py similarity index 100% rename from python/sglang/srt/layers/quantization/awq/awq_triton.py rename to python/sglang/kernels/ops/quantization/awq_triton.py diff --git a/python/sglang/srt/layers/quantization/configs/N=1280,K=5120,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=1280,K=5120,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=1280,K=5120,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=1280,K=5120,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=1536,K=1536,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=1536,K=1536,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=1536,K=1536,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=1536,K=1536,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=1536,K=1536,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=1536,K=1536,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=1536,K=1536,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=1536,K=1536,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=1536,K=1536,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=1536,K=1536,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=1536,K=1536,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=1536,K=1536,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=1536,K=1536,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=1536,K=1536,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=1536,K=1536,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=1536,K=1536,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=1536,K=1536,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=1536,K=1536,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=1536,K=1536,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=1536,K=1536,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=1536,K=7168,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=1536,K=7168,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=1536,K=7168,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=1536,K=7168,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=1536,K=7168,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=1536,K=7168,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=1536,K=7168,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=1536,K=7168,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=1536,K=7168,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=1536,K=7168,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=1536,K=7168,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=1536,K=7168,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=1536,K=7168,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=1536,K=7168,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=1536,K=7168,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=1536,K=7168,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=1536,K=7168,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=1536,K=7168,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=1536,K=7168,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=1536,K=7168,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=1536,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=1536,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=1536,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=1536,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=1536,K=7168,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=1536,K=7168,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=1536,K=7168,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=1536,K=7168,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=1536,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=1536,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=1536,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=1536,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=1536,K=7168,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=1536,K=7168,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=1536,K=7168,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=1536,K=7168,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=2048,K=4096,device_name=NVIDIA_L40,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=2048,K=4096,device_name=NVIDIA_L40,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=2048,K=4096,device_name=NVIDIA_L40,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=2048,K=4096,device_name=NVIDIA_L40,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=2048,K=512,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=2048,K=512,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=2048,K=512,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=2048,K=512,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=2048,K=512,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=2048,K=512,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=2048,K=512,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=2048,K=512,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=2048,K=512,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=2048,K=512,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=2048,K=512,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=2048,K=512,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=2048,K=512,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=2048,K=512,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=2048,K=512,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=2048,K=512,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=2048,K=512,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=2048,K=512,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=2048,K=512,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=2048,K=512,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=2048,K=512,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=2048,K=512,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=2048,K=512,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=2048,K=512,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=2304,K=7168,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=2304,K=7168,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=2304,K=7168,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=2304,K=7168,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=2304,K=7168,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=2304,K=7168,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=2304,K=7168,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=2304,K=7168,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=2304,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=2304,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=2304,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=2304,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=2304,K=7168,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=2304,K=7168,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=2304,K=7168,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=2304,K=7168,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=2304,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=2304,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=2304,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=2304,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=2304,K=7168,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=2304,K=7168,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=2304,K=7168,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=2304,K=7168,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=24576,K=1536,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=24576,K=1536,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=24576,K=1536,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=24576,K=1536,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=24576,K=1536,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=24576,K=1536,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=24576,K=1536,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=24576,K=1536,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=24576,K=1536,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=24576,K=1536,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=24576,K=1536,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=24576,K=1536,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=24576,K=7168,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=24576,K=7168,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=24576,K=7168,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=24576,K=7168,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=24576,K=7168,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=24576,K=7168,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=24576,K=7168,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=24576,K=7168,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=24576,K=7168,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=24576,K=7168,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=24576,K=7168,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=24576,K=7168,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=24576,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=24576,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=24576,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=24576,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=24576,K=7168,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=24576,K=7168,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=24576,K=7168,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=24576,K=7168,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=24576,K=7168,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=24576,K=7168,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=24576,K=7168,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=24576,K=7168,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=24576,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=24576,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=24576,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=24576,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=24576,K=7168,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=24576,K=7168,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=24576,K=7168,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=24576,K=7168,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=256,K=7168,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=256,K=7168,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=256,K=7168,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=256,K=7168,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=256,K=7168,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=256,K=7168,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=256,K=7168,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=256,K=7168,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=256,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=256,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=256,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=256,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=256,K=7168,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=256,K=7168,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=256,K=7168,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=256,K=7168,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=256,K=7168,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=256,K=7168,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=256,K=7168,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=256,K=7168,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=3072,K=1536,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=3072,K=1536,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=3072,K=1536,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=3072,K=1536,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=3072,K=1536,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=3072,K=1536,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=3072,K=1536,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=3072,K=1536,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=3072,K=1536,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=3072,K=1536,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=3072,K=1536,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=3072,K=1536,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=3072,K=1536,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=3072,K=1536,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=3072,K=1536,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=3072,K=1536,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=3072,K=1536,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=3072,K=1536,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=3072,K=1536,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=3072,K=1536,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=3072,K=1536,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=3072,K=1536,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=3072,K=1536,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=3072,K=1536,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=3072,K=7168,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=3072,K=7168,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=3072,K=7168,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=3072,K=7168,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=3072,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=3072,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=3072,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=3072,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=3072,K=7168,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=3072,K=7168,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=3072,K=7168,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=3072,K=7168,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=3072,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=3072,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=3072,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=3072,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=32768,K=512,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=32768,K=512,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=32768,K=512,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=32768,K=512,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=32768,K=512,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=32768,K=512,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=32768,K=512,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=32768,K=512,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=32768,K=512,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=32768,K=512,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=32768,K=512,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=32768,K=512,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=32768,K=512,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=32768,K=512,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=32768,K=512,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=32768,K=512,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=32768,K=512,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=32768,K=512,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=32768,K=512,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=32768,K=512,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=32768,K=512,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=32768,K=512,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=32768,K=512,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=32768,K=512,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=32768,K=512,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=32768,K=512,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=32768,K=512,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=32768,K=512,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=32768,K=512,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=32768,K=512,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=32768,K=512,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=32768,K=512,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=32768,K=512,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=32768,K=512,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=32768,K=512,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=32768,K=512,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=32768,K=512,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=32768,K=512,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=32768,K=512,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=32768,K=512,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=32768,K=512,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=32768,K=512,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=32768,K=512,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=32768,K=512,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=36864,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=36864,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=36864,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=36864,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=36864,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=36864,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=36864,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=36864,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=4096,K=512,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=4096,K=512,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=4096,K=512,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=4096,K=512,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=4096,K=512,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=4096,K=512,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=4096,K=512,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=4096,K=512,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=4096,K=512,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=4096,K=512,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=4096,K=512,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=4096,K=512,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=4096,K=512,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=4096,K=512,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=4096,K=512,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=4096,K=512,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=4096,K=512,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=4096,K=512,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=4096,K=512,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=4096,K=512,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=4096,K=512,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=4096,K=512,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=4096,K=512,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=4096,K=512,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=4096,K=512,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=4096,K=512,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=4096,K=512,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=4096,K=512,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=4608,K=7168,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=4608,K=7168,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=4608,K=7168,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=4608,K=7168,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=4608,K=7168,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=4608,K=7168,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=4608,K=7168,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=4608,K=7168,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=4608,K=7168,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=4608,K=7168,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=4608,K=7168,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=4608,K=7168,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=4608,K=7168,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=4608,K=7168,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=4608,K=7168,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=4608,K=7168,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=4608,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=4608,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=4608,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=4608,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=4608,K=7168,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=4608,K=7168,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=4608,K=7168,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=4608,K=7168,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=4608,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=4608,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=4608,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=4608,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=512,K=7168,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=512,K=7168,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=512,K=7168,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=512,K=7168,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=512,K=7168,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=512,K=7168,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=512,K=7168,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=512,K=7168,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=512,K=7168,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=512,K=7168,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=512,K=7168,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=512,K=7168,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=512,K=7168,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=512,K=7168,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=512,K=7168,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=512,K=7168,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=512,K=7168,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=512,K=7168,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=512,K=7168,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=512,K=7168,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=512,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=512,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=512,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=512,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=5120,K=1024,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=5120,K=1024,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=5120,K=1024,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=5120,K=1024,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=5120,K=2048,device_name=NVIDIA_L40,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=5120,K=2048,device_name=NVIDIA_L40,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=5120,K=2048,device_name=NVIDIA_L40,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=5120,K=2048,device_name=NVIDIA_L40,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=5120,K=3200,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=5120,K=3200,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=5120,K=3200,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=5120,K=3200,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=576,K=7168,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=576,K=7168,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=576,K=7168,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=576,K=7168,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=576,K=7168,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=576,K=7168,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=576,K=7168,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=576,K=7168,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=576,K=7168,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=576,K=7168,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=576,K=7168,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=576,K=7168,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=576,K=7168,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=576,K=7168,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=576,K=7168,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=576,K=7168,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=576,K=7168,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=576,K=7168,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=576,K=7168,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=576,K=7168,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=576,K=7168,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=576,K=7168,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=576,K=7168,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=576,K=7168,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=576,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=576,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=576,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=576,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=576,K=7168,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=576,K=7168,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=576,K=7168,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=576,K=7168,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=576,K=7168,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=576,K=7168,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=576,K=7168,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=576,K=7168,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=576,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=576,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=576,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=576,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=576,K=7168,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=576,K=7168,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=576,K=7168,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=576,K=7168,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=6400,K=5120,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=6400,K=5120,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=6400,K=5120,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=6400,K=5120,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=1024,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=1024,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=1024,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=1024,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=1024,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=1024,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=1024,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=1024,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=1024,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=1024,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=1024,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=1024,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=1024,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=1024,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=1024,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=1024,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=1024,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=1024,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=1024,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=1024,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=1024,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=1024,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=1024,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=1024,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=1152,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=1152,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=1152,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=1152,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=1152,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=1152,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=1152,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=1152,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=1152,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=1152,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=1152,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=1152,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=1152,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=1152,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=1152,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=1152,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=1152,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=1152,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=1152,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=1152,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=1152,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=1152,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=1152,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=1152,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=128,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=128,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=128,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=128,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=128,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=128,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=128,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=128,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=128,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=128,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=128,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=128,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=128,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=128,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=128,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=128,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=128,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=128,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=128,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=128,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=16384,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=16384,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=16384,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=16384,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=16384,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=16384,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=16384,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=16384,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=16384,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=16384,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=16384,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=16384,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=16384,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=16384,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=16384,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=16384,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=16384,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=16384,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=16384,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=16384,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=16384,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=16384,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=16384,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=16384,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=16384,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=16384,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=16384,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=16384,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=16384,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=16384,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=16384,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=16384,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=16384,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=16384,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=16384,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=16384,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=16384,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=16384,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=16384,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=16384,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=16384,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=16384,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=16384,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=16384,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=18432,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=18432,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=18432,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=18432,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=18432,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=18432,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=18432,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=18432,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=18432,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=18432,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=18432,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=18432,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=18432,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=18432,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=18432,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=18432,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=18432,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=18432,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=18432,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=18432,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=18432,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=18432,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=18432,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=18432,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=18432,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=18432,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=18432,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=18432,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=18432,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=18432,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=18432,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=18432,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=2048,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=2048,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=2048,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=2048,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=2048,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=2048,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=2048,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=2048,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=2048,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=2048,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=2048,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=2048,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=2048,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=2048,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=2048,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=2048,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=2048,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=2048,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=2048,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=2048,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=2048,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=2048,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=2048,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=2048,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=2048,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=2048,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=2048,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=2048,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=2304,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=2304,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=2304,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=2304,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=2304,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=2304,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=2304,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=2304,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=2304,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=2304,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=2304,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=2304,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=2304,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=2304,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=2304,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=2304,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=2304,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=2304,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=2304,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=2304,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=2304,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=2304,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=2304,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=2304,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=2304,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=2304,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=2304,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=2304,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=256,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=256,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=256,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=256,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=256,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=256,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=256,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=256,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=256,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=256,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=256,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=256,device_name=AMD_Radeon_Graphics,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=256,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=256,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=256,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=256,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=256,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=256,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=256,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=256,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/N=7168,K=256,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json b/python/sglang/kernels/ops/quantization/configs/N=7168,K=256,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json similarity index 100% rename from python/sglang/srt/layers/quantization/configs/N=7168,K=256,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json rename to python/sglang/kernels/ops/quantization/configs/N=7168,K=256,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128, 128].json diff --git a/python/sglang/srt/layers/quantization/configs/README.md b/python/sglang/kernels/ops/quantization/configs/README.md similarity index 100% rename from python/sglang/srt/layers/quantization/configs/README.md rename to python/sglang/kernels/ops/quantization/configs/README.md diff --git a/python/sglang/srt/layers/quantization/fp8_kernel.py b/python/sglang/kernels/ops/quantization/fp8_kernel.py similarity index 99% rename from python/sglang/srt/layers/quantization/fp8_kernel.py rename to python/sglang/kernels/ops/quantization/fp8_kernel.py index 51ef12b38..ee766400a 100644 --- a/python/sglang/srt/layers/quantization/fp8_kernel.py +++ b/python/sglang/kernels/ops/quantization/fp8_kernel.py @@ -796,7 +796,7 @@ def sglang_per_token_group_quant_8bit( masked_m: Optional[torch.Tensor] = None, enable_v2: Optional[bool] = None, ): - from sglang.srt.layers.quantization.int8_kernel import ( + from sglang.kernels.ops.quantization.int8_kernel import ( sglang_per_token_group_quant_int8, ) diff --git a/python/sglang/srt/layers/quantization/int8_kernel.py b/python/sglang/kernels/ops/quantization/int8_kernel.py similarity index 100% rename from python/sglang/srt/layers/quantization/int8_kernel.py rename to python/sglang/kernels/ops/quantization/int8_kernel.py diff --git a/python/sglang/srt/layers/quantization/mxfp8_amd_gfx95.py b/python/sglang/kernels/ops/quantization/mxfp8_amd_gfx95.py similarity index 100% rename from python/sglang/srt/layers/quantization/mxfp8_amd_gfx95.py rename to python/sglang/kernels/ops/quantization/mxfp8_amd_gfx95.py diff --git a/python/sglang/srt/layers/quantization/nvfp4_gemm_swiglu_nvfp4_quant.py b/python/sglang/kernels/ops/quantization/nvfp4_gemm_swiglu_nvfp4_quant.py similarity index 100% rename from python/sglang/srt/layers/quantization/nvfp4_gemm_swiglu_nvfp4_quant.py rename to python/sglang/kernels/ops/quantization/nvfp4_gemm_swiglu_nvfp4_quant.py diff --git a/python/sglang/multimodal_gen/runtime/layers/quantization/fp8.py b/python/sglang/multimodal_gen/runtime/layers/quantization/fp8.py index 9312d7100..79817ba62 100644 --- a/python/sglang/multimodal_gen/runtime/layers/quantization/fp8.py +++ b/python/sglang/multimodal_gen/runtime/layers/quantization/fp8.py @@ -7,6 +7,10 @@ import torch from torch.nn import Module from torch.nn.parameter import Parameter +from sglang.kernels.ops.quantization.fp8_kernel import ( + is_fp8_fnuz, + per_token_group_quant_fp8, +) from sglang.multimodal_gen.runtime.distributed.parallel_state import ( get_tensor_model_parallel_world_size, ) @@ -31,10 +35,6 @@ from sglang.multimodal_gen.runtime.utils.common import ( use_intel_amx_backend, ) from sglang.srt.layers.amx_utils import _amx_process_weight_after_loading -from sglang.srt.layers.quantization.fp8_kernel import ( - is_fp8_fnuz, - per_token_group_quant_fp8, -) from sglang.srt.layers.quantization.fp8_utils import ( apply_fp8_linear, can_auto_enable_marlin_fp8, diff --git a/python/sglang/srt/hardware_backend/gpu/quantization/awq_kernels.py b/python/sglang/srt/hardware_backend/gpu/quantization/awq_kernels.py index 3f61776b8..84386447f 100644 --- a/python/sglang/srt/hardware_backend/gpu/quantization/awq_kernels.py +++ b/python/sglang/srt/hardware_backend/gpu/quantization/awq_kernels.py @@ -42,7 +42,7 @@ if is_xpu(): pass elif is_hip(): try: - from sglang.srt.layers.quantization.awq.awq_triton import ( + from sglang.kernels.ops.quantization.awq_triton import ( awq_dequantize_triton as awq_dequantize, ) except ImportError: @@ -64,7 +64,7 @@ else: ) except ImportError: try: - from sglang.srt.layers.quantization.awq.awq_triton import ( + from sglang.kernels.ops.quantization.awq_triton import ( awq_dequantize_triton as awq_dequantize, ) except ImportError: diff --git a/python/sglang/srt/layers/attention/aiter_backend.py b/python/sglang/srt/layers/attention/aiter_backend.py index 6ab02375a..5f647b0f4 100755 --- a/python/sglang/srt/layers/attention/aiter_backend.py +++ b/python/sglang/srt/layers/attention/aiter_backend.py @@ -60,6 +60,7 @@ except ImportError: "aiter is AMD specific kernel library. Please make sure aiter is installed on your AMD device." ) +from sglang.kernels.ops.quantization.fp8_kernel import fp8_dtype from sglang.srt.configs.model_config import AttentionArch from sglang.srt.layers.attention.aiter_utils import ( forward_decode_vectorized_5d, @@ -69,7 +70,6 @@ from sglang.srt.layers.attention.utils import ( launch_reshape_and_cache_flash, pad_sequence_with_mask, ) -from sglang.srt.layers.quantization.fp8_kernel import fp8_dtype from sglang.srt.mem_cache.memory_pool import KVWriteLoc from sglang.srt.mem_cache.swa_memory_pool import SWAKVPool from sglang.srt.utils import get_bool_env_var diff --git a/python/sglang/srt/layers/attention/aiter_utils.py b/python/sglang/srt/layers/attention/aiter_utils.py index b08893648..b0af9fa94 100644 --- a/python/sglang/srt/layers/attention/aiter_utils.py +++ b/python/sglang/srt/layers/attention/aiter_utils.py @@ -33,8 +33,8 @@ except ImportError: # pragma: no cover - import-time guard mirrors aiter_backen pa_decode_gluon = None get_recommended_splits = None +from sglang.kernels.ops.quantization.fp8_kernel import fp8_dtype from sglang.srt.layers.attention.utils import launch_gather_shuffle_5d_to_linear -from sglang.srt.layers.quantization.fp8_kernel import fp8_dtype if TYPE_CHECKING: from sglang.srt.layers.attention.aiter_backend import AiterAttnBackend diff --git a/python/sglang/srt/layers/attention/dsa/dsa_indexer.py b/python/sglang/srt/layers/attention/dsa/dsa_indexer.py index c3d6bcc51..1cdc440b0 100644 --- a/python/sglang/srt/layers/attention/dsa/dsa_indexer.py +++ b/python/sglang/srt/layers/attention/dsa/dsa_indexer.py @@ -12,6 +12,7 @@ from sglang.jit_kernel.fused_store_index_cache import ( can_use_dsa_fused_store, fused_store_index_k_cache, ) +from sglang.kernels.ops.quantization.fp8_kernel import fp8_dtype, is_fp8_fnuz from sglang.srt.compilation.compilation_config import register_split_op from sglang.srt.environ import envs from sglang.srt.layers.attention.dsa.paged_mqa_logits_backend import ( @@ -25,7 +26,6 @@ from sglang.srt.layers.attention.dsa.utils import ( ) from sglang.srt.layers.dp_attention import attn_tp_all_gather_into_tensor from sglang.srt.layers.layernorm import LayerNorm, RMSNorm -from sglang.srt.layers.quantization.fp8_kernel import fp8_dtype, is_fp8_fnuz from sglang.srt.layers.utils import MultiPlatformOp from sglang.srt.model_executor.runner_backend_utils.breakable_cuda_graph import ( eager_on_graph, diff --git a/python/sglang/srt/layers/attention/dsa/index_buf_accessor.py b/python/sglang/srt/layers/attention/dsa/index_buf_accessor.py index 45e8737c4..20d58409a 100644 --- a/python/sglang/srt/layers/attention/dsa/index_buf_accessor.py +++ b/python/sglang/srt/layers/attention/dsa/index_buf_accessor.py @@ -4,8 +4,8 @@ import torch import triton import triton.language as tl +from sglang.kernels.ops.quantization.fp8_kernel import is_fp8_fnuz from sglang.srt.layers.attention.dsa.utils import aiter_can_use_preshuffle_paged_mqa -from sglang.srt.layers.quantization.fp8_kernel import is_fp8_fnuz from sglang.srt.utils import get_bool_env_var, is_hip _is_hip = is_hip() @@ -190,7 +190,7 @@ class GetKAndS: seq_len_sum: int, max_seq_len: int, ): - from sglang.srt.layers.quantization.fp8_kernel import fp8_dtype + from sglang.kernels.ops.quantization.fp8_kernel import fp8_dtype page_size = pool.page_size index_head_dim = pool.index_head_dim diff --git a/python/sglang/srt/layers/attention/dsa/tilelang_kernel.py b/python/sglang/srt/layers/attention/dsa/tilelang_kernel.py index a648a8de8..2b6e1ad07 100644 --- a/python/sglang/srt/layers/attention/dsa/tilelang_kernel.py +++ b/python/sglang/srt/layers/attention/dsa/tilelang_kernel.py @@ -6,7 +6,7 @@ import tilelang import tilelang.language as T import torch -from sglang.srt.layers.quantization.fp8_kernel import is_fp8_fnuz +from sglang.kernels.ops.quantization.fp8_kernel import is_fp8_fnuz from sglang.srt.utils import is_gfx95_supported, is_hip tilelang.set_log_level("WARNING") diff --git a/python/sglang/srt/layers/attention/dsa/triton_sparse_mla.py b/python/sglang/srt/layers/attention/dsa/triton_sparse_mla.py index 01d12d17c..2c6ea0c9e 100644 --- a/python/sglang/srt/layers/attention/dsa/triton_sparse_mla.py +++ b/python/sglang/srt/layers/attention/dsa/triton_sparse_mla.py @@ -11,7 +11,7 @@ import torch import triton import triton.language as tl -from sglang.srt.layers.quantization.fp8_kernel import is_fp8_fnuz +from sglang.kernels.ops.quantization.fp8_kernel import is_fp8_fnuz _IS_FNUZ = is_fp8_fnuz() _FP8_MAX = 240.0 if _IS_FNUZ else 448.0 diff --git a/python/sglang/srt/layers/attention/dsa_backend.py b/python/sglang/srt/layers/attention/dsa_backend.py index 093578e08..f3e637d6c 100644 --- a/python/sglang/srt/layers/attention/dsa_backend.py +++ b/python/sglang/srt/layers/attention/dsa_backend.py @@ -102,8 +102,8 @@ def _all_gather_dsa_trtllm_fp8_kv( _is_hip = is_hip() if _is_hip: + from sglang.kernels.ops.quantization.fp8_kernel import fp8_dtype from sglang.srt.layers.attention.dsa.triton_kernel import get_valid_kv_indices - from sglang.srt.layers.quantization.fp8_kernel import fp8_dtype try: from aiter import ( # noqa: F401 diff --git a/python/sglang/srt/layers/attention/dsv4/dequant_k_cache.py b/python/sglang/srt/layers/attention/dsv4/dequant_k_cache.py index 110b7e26e..01ad58aad 100644 --- a/python/sglang/srt/layers/attention/dsv4/dequant_k_cache.py +++ b/python/sglang/srt/layers/attention/dsv4/dequant_k_cache.py @@ -4,7 +4,7 @@ import torch import triton import triton.language as tl -from sglang.srt.layers.quantization.fp8_kernel import is_fp8_fnuz +from sglang.kernels.ops.quantization.fp8_kernel import is_fp8_fnuz fp8_dtype = torch.float8_e4m3fnuz if is_fp8_fnuz() else torch.float8_e4m3fn diff --git a/python/sglang/srt/layers/attention/dsv4/index_buf_accessor.py b/python/sglang/srt/layers/attention/dsv4/index_buf_accessor.py index d9fdbf1aa..8536e18a9 100644 --- a/python/sglang/srt/layers/attention/dsv4/index_buf_accessor.py +++ b/python/sglang/srt/layers/attention/dsv4/index_buf_accessor.py @@ -7,7 +7,7 @@ import torch import triton import triton.language as tl -from sglang.srt.layers.quantization.fp8_kernel import is_fp8_fnuz +from sglang.kernels.ops.quantization.fp8_kernel import is_fp8_fnuz fp8_dtype = torch.float8_e4m3fnuz if is_fp8_fnuz() else torch.float8_e4m3fn diff --git a/python/sglang/srt/layers/attention/dsv4/indexer.py b/python/sglang/srt/layers/attention/dsv4/indexer.py index d86f59038..93f026a5c 100644 --- a/python/sglang/srt/layers/attention/dsv4/indexer.py +++ b/python/sglang/srt/layers/attention/dsv4/indexer.py @@ -14,6 +14,7 @@ from sglang.jit_kernel.dsv4 import ( topk_transform_512, topk_transform_512_v2, ) +from sglang.kernels.ops.quantization.fp8_kernel import is_fp8_fnuz from sglang.srt.configs.deepseek_v4 import DeepSeekV4Config from sglang.srt.environ import envs from sglang.srt.layers.attention.dsv4.compressor import Compressor @@ -22,7 +23,6 @@ from sglang.srt.layers.attention.dsv4.metadata import ( PagedIndexerMetadata, ) from sglang.srt.layers.linear import ReplicatedLinear -from sglang.srt.layers.quantization.fp8_kernel import is_fp8_fnuz from sglang.srt.model_executor.forward_batch_info import ForwardMode from sglang.srt.model_executor.runner_backend_utils.breakable_cuda_graph.context import ( is_in_breakable_cuda_graph, diff --git a/python/sglang/srt/layers/attention/dsv4/quant_k_cache.py b/python/sglang/srt/layers/attention/dsv4/quant_k_cache.py index 6370bcb8d..8f50df84b 100644 --- a/python/sglang/srt/layers/attention/dsv4/quant_k_cache.py +++ b/python/sglang/srt/layers/attention/dsv4/quant_k_cache.py @@ -2,8 +2,8 @@ import torch import triton import triton.language as tl +from sglang.kernels.ops.quantization.fp8_kernel import is_fp8_fnuz from sglang.srt.layers.attention.dsv4.index_buf_accessor import NopeFp8RopeBf16Pack -from sglang.srt.layers.quantization.fp8_kernel import is_fp8_fnuz fp8_dtype = torch.float8_e4m3fnuz if is_fp8_fnuz() else torch.float8_e4m3fn diff --git a/python/sglang/srt/layers/attention/dsv4/unified_kv_kernels/paged_decode.py b/python/sglang/srt/layers/attention/dsv4/unified_kv_kernels/paged_decode.py index e04338275..fc3f83db7 100644 --- a/python/sglang/srt/layers/attention/dsv4/unified_kv_kernels/paged_decode.py +++ b/python/sglang/srt/layers/attention/dsv4/unified_kv_kernels/paged_decode.py @@ -58,7 +58,7 @@ import triton import triton.language as tl from aiter.ops.triton.utils.device_info import get_num_sms -from sglang.srt.layers.quantization.fp8_kernel import is_fp8_fnuz +from sglang.kernels.ops.quantization.fp8_kernel import is_fp8_fnuz LOG2E = 1.4426950408889634 # log2(e); folded into qk_scale so softmax can use exp2. _MAX_KV_SPLITS = 64 # Hard cap on kv_splits (see _kv_splits_heuristic). diff --git a/python/sglang/srt/layers/attention/flashmla_backend.py b/python/sglang/srt/layers/attention/flashmla_backend.py index d38e19ee4..484f06a25 100644 --- a/python/sglang/srt/layers/attention/flashmla_backend.py +++ b/python/sglang/srt/layers/attention/flashmla_backend.py @@ -12,12 +12,12 @@ import torch import triton from sgl_kernel.flash_mla import flash_mla_with_kvcache, get_mla_metadata +from sglang.kernels.ops.quantization.fp8_kernel import scaled_fp8_quant from sglang.srt.layers.attention.flashinfer_mla_backend import FlashInferMLAAttnBackend from sglang.srt.layers.attention.utils import ( create_flashmla_kv_indices_triton, get_num_kv_index_blocks_flashmla, ) -from sglang.srt.layers.quantization.fp8_kernel import scaled_fp8_quant from sglang.srt.model_executor.forward_batch_info import ForwardBatch, ForwardMode from sglang.srt.runtime_context import get_parallel diff --git a/python/sglang/srt/layers/attention/hip_flash_mla.py b/python/sglang/srt/layers/attention/hip_flash_mla.py index 460a8ebf6..d771926cc 100644 --- a/python/sglang/srt/layers/attention/hip_flash_mla.py +++ b/python/sglang/srt/layers/attention/hip_flash_mla.py @@ -2,8 +2,8 @@ from typing import Any, Optional import torch +from sglang.kernels.ops.quantization.fp8_kernel import is_fp8_fnuz from sglang.srt.environ import envs -from sglang.srt.layers.quantization.fp8_kernel import is_fp8_fnuz from sglang.srt.utils import is_hip FP8_DTYPE = torch.float8_e4m3fnuz if is_fp8_fnuz() else torch.float8_e4m3fn diff --git a/python/sglang/srt/layers/attention/trtllm_mla_backend.py b/python/sglang/srt/layers/attention/trtllm_mla_backend.py index 125d811ca..7a53dd277 100755 --- a/python/sglang/srt/layers/attention/trtllm_mla_backend.py +++ b/python/sglang/srt/layers/attention/trtllm_mla_backend.py @@ -24,6 +24,7 @@ from sglang.kernels.ops.kvcache.kv_indices import ( get_num_kv_index_blocks_flashmla, get_num_page_per_block_flashmla, ) +from sglang.kernels.ops.quantization.fp8_kernel import scaled_fp8_quant from sglang.srt.environ import envs from sglang.srt.layers.attention.flashinfer_mla_backend import ( FlashInferMLAAttnBackend, @@ -33,7 +34,6 @@ from sglang.srt.layers.attention.utils import ( concat_mla_absorb_q_general, mla_quantize_and_rope_for_fp8, ) -from sglang.srt.layers.quantization.fp8_kernel import scaled_fp8_quant from sglang.srt.model_executor.forward_batch_info import ForwardBatch, ForwardMode from sglang.srt.model_executor.runner_backend_utils.tc_piecewise_cuda_graph import ( is_in_tc_piecewise_cuda_graph, diff --git a/python/sglang/srt/layers/communicator.py b/python/sglang/srt/layers/communicator.py index 03d558748..3271b7c84 100644 --- a/python/sglang/srt/layers/communicator.py +++ b/python/sglang/srt/layers/communicator.py @@ -98,7 +98,7 @@ if _use_aiter: from aiter.ops.rmsnorm import add_rmsnorm_quant as _aiter_add_rmsnorm_quant from aiter.ops.rmsnorm import rmsnorm_quant as _aiter_rmsnorm_quant - from sglang.srt.layers.quantization.fp8_kernel import fp8_dtype as _aiter_fp8_dtype + from sglang.kernels.ops.quantization.fp8_kernel import fp8_dtype as _aiter_fp8_dtype if _is_gfx95_supported: from aiter.ops.triton.fused_fp8_quant import fused_rms_fp8_group_quant diff --git a/python/sglang/srt/layers/fused_qk_norm_rope_store.py b/python/sglang/srt/layers/fused_qk_norm_rope_store.py index 1aa19ede5..1624aafeb 100644 --- a/python/sglang/srt/layers/fused_qk_norm_rope_store.py +++ b/python/sglang/srt/layers/fused_qk_norm_rope_store.py @@ -15,7 +15,7 @@ import torch import triton import triton.language as tl -from sglang.srt.layers.quantization.fp8_kernel import is_fp8_fnuz +from sglang.kernels.ops.quantization.fp8_kernel import is_fp8_fnuz _fp8_fnuz = is_fp8_fnuz() diff --git a/python/sglang/srt/layers/moe/cutlass_moe.py b/python/sglang/srt/layers/moe/cutlass_moe.py index 0a0136316..b48653b11 100755 --- a/python/sglang/srt/layers/moe/cutlass_moe.py +++ b/python/sglang/srt/layers/moe/cutlass_moe.py @@ -130,7 +130,7 @@ def cutlass_fused_experts_fp8( assert a.dtype in [torch.half, torch.bfloat16], "Invalid output dtype" if is_cuda: - from sglang.srt.layers.quantization.fp8_kernel import ( + from sglang.kernels.ops.quantization.fp8_kernel import ( sglang_per_token_group_quant_fp8, ) es_up, es_down = enable_es diff --git a/python/sglang/srt/layers/moe/ep_moe/kernels.py b/python/sglang/srt/layers/moe/ep_moe/kernels.py index 4226ebb48..4c3dced36 100644 --- a/python/sglang/srt/layers/moe/ep_moe/kernels.py +++ b/python/sglang/srt/layers/moe/ep_moe/kernels.py @@ -12,7 +12,7 @@ _is_cuda = is_cuda() _is_musa = is_musa() if _is_cuda or _is_musa: - from sglang.srt.layers.quantization.fp8_kernel import ( + from sglang.kernels.ops.quantization.fp8_kernel import ( sglang_per_token_group_quant_fp8 as per_token_group_quant_fp8, ) diff --git a/python/sglang/srt/layers/moe/ep_moe/layer.py b/python/sglang/srt/layers/moe/ep_moe/layer.py index d54d79364..98012bfcd 100644 --- a/python/sglang/srt/layers/moe/ep_moe/layer.py +++ b/python/sglang/srt/layers/moe/ep_moe/layer.py @@ -5,6 +5,7 @@ from typing import TYPE_CHECKING, Any, Dict, Optional import torch +from sglang.kernels.ops.quantization.fp8_kernel import is_fp8_fnuz from sglang.srt.environ import envs from sglang.srt.layers import deep_gemm_wrapper from sglang.srt.layers.moe import ( @@ -23,7 +24,6 @@ from sglang.srt.layers.moe.token_dispatcher.deepep import ( from sglang.srt.layers.moe.topk import TopKOutput, TopKOutputChecker from sglang.srt.layers.quantization.base_config import QuantizationConfig from sglang.srt.layers.quantization.fp8 import Fp8Config -from sglang.srt.layers.quantization.fp8_kernel import is_fp8_fnuz from sglang.srt.layers.quantization.w4afp8 import W4AFp8Config, W4AFp8MoEMethod from sglang.srt.model_executor.runner_backend_utils.tc_piecewise_cuda_graph import ( is_in_tc_piecewise_cuda_graph, diff --git a/python/sglang/srt/layers/moe/moe_runner/deep_gemm.py b/python/sglang/srt/layers/moe/moe_runner/deep_gemm.py index 36d388421..f75ee5ebf 100644 --- a/python/sglang/srt/layers/moe/moe_runner/deep_gemm.py +++ b/python/sglang/srt/layers/moe/moe_runner/deep_gemm.py @@ -179,10 +179,10 @@ class DeepGemmRunnerCore(MoeRunnerCore): running_state: dict, ) -> torch.Tensor: from sglang.jit_kernel.dsv4 import silu_and_mul_contig_post_quant - from sglang.srt.layers.moe.ep_moe.kernels import tma_align_input_scale - from sglang.srt.layers.quantization.fp8_kernel import ( + from sglang.kernels.ops.quantization.fp8_kernel import ( create_per_token_group_quant_fp8_output_scale, ) + from sglang.srt.layers.moe.ep_moe.kernels import tma_align_input_scale hidden_states = runner_input.hidden_states hidden_states_scale = runner_input.hidden_states_scale @@ -257,7 +257,7 @@ class DeepGemmRunnerCore(MoeRunnerCore): # Hacky byte-equal fallback that reproduces the optimize-branch # code path exactly: bf16 silu_and_mul then a separate per-token # group fp8 quant. Kept behind the mega-moe-memory flag. - from sglang.srt.layers.quantization.fp8_kernel import ( + from sglang.kernels.ops.quantization.fp8_kernel import ( sglang_per_token_group_quant_fp8, ) @@ -908,10 +908,10 @@ def _varlen_deep_gemm_silu_mul_quant( gemm1_clamp_limit: Optional[float] = None, num_real_tokens: Optional[int] = None, ) -> Tuple[torch.Tensor, torch.Tensor]: - from sglang.srt.layers.moe.ep_moe.kernels import silu_and_mul_masked_post_quant_fwd - from sglang.srt.layers.quantization.fp8_kernel import ( + from sglang.kernels.ops.quantization.fp8_kernel import ( sglang_per_token_group_quant_8bit, ) + from sglang.srt.layers.moe.ep_moe.kernels import silu_and_mul_masked_post_quant_fwd if _MASKED_GEMM_FAST_ACT: assert ( diff --git a/python/sglang/srt/layers/moe/moe_runner/flashinfer_cutlass.py b/python/sglang/srt/layers/moe/moe_runner/flashinfer_cutlass.py index 4bed63dbb..a57b5593b 100644 --- a/python/sglang/srt/layers/moe/moe_runner/flashinfer_cutlass.py +++ b/python/sglang/srt/layers/moe/moe_runner/flashinfer_cutlass.py @@ -13,6 +13,7 @@ from typing import TYPE_CHECKING, Optional import torch +from sglang.kernels.ops.quantization.fp8_kernel import scaled_fp8_quant from sglang.srt.distributed import get_tp_group from sglang.srt.distributed.device_communicators.pynccl_allocator import ( use_symmetric_memory, @@ -23,7 +24,6 @@ from sglang.srt.layers.moe.moe_runner.base import ( MoeRunnerConfig, register_fused_func, ) -from sglang.srt.layers.quantization.fp8_kernel import scaled_fp8_quant from sglang.srt.utils import is_flashinfer_available from sglang.srt.utils.common import next_power_of_2 diff --git a/python/sglang/srt/layers/moe/moe_runner/flashinfer_trtllm.py b/python/sglang/srt/layers/moe/moe_runner/flashinfer_trtllm.py index a9d9c15e8..477263bb6 100644 --- a/python/sglang/srt/layers/moe/moe_runner/flashinfer_trtllm.py +++ b/python/sglang/srt/layers/moe/moe_runner/flashinfer_trtllm.py @@ -9,6 +9,12 @@ import torch from torch.nn import Module from torch.nn.parameter import Parameter +from sglang.kernels.ops.moe.pack_topk_ids import PackTopkIds +from sglang.kernels.ops.quantization.fp8_kernel import ( + per_token_group_quant_fp8, + scaled_fp8_quant, +) + # Import to register custom ops for torch.compile compatibility from sglang.srt.distributed import get_tp_group from sglang.srt.distributed.device_communicators.pynccl_allocator import ( @@ -28,11 +34,6 @@ from sglang.srt.layers.moe.moe_runner.base import ( MoeRunnerConfig, register_fused_func, ) -from sglang.srt.layers.quantization.fp8_kernel import ( - per_token_group_quant_fp8, - scaled_fp8_quant, -) -from sglang.srt.layers.quantization.mxfp4_flashinfer_trtllm_moe import PackTopkIds from sglang.srt.layers.utils import copy_or_rebind_param from sglang.srt.utils.common import ( is_cuda_alike, diff --git a/python/sglang/srt/layers/moe/moe_runner/triton_utils/fused_moe_triton_kernels.py b/python/sglang/srt/layers/moe/moe_runner/triton_utils/fused_moe_triton_kernels.py index 82f88e465..234157516 100644 --- a/python/sglang/srt/layers/moe/moe_runner/triton_utils/fused_moe_triton_kernels.py +++ b/python/sglang/srt/layers/moe/moe_runner/triton_utils/fused_moe_triton_kernels.py @@ -8,18 +8,18 @@ import torch import triton import triton.language as tl -from sglang.srt.batch_invariant_ops import is_batch_invariant_mode_enabled -from sglang.srt.layers.moe.utils import get_moe_padding_size -from sglang.srt.layers.quantization.fp8_kernel import ( +from sglang.kernels.ops.quantization.fp8_kernel import ( per_token_group_quant_fp8, scaled_fp8_quant, sglang_per_token_group_quant_fp8, ) -from sglang.srt.layers.quantization.int8_kernel import ( +from sglang.kernels.ops.quantization.int8_kernel import ( per_token_group_quant_int8, per_token_quant_int8, sglang_per_token_group_quant_int8, ) +from sglang.srt.batch_invariant_ops import is_batch_invariant_mode_enabled +from sglang.srt.layers.moe.utils import get_moe_padding_size from sglang.srt.utils import ( cpu_has_amx_support, get_bool_env_var, diff --git a/python/sglang/srt/layers/moe/moe_runner/triton_utils/mxfp8_moe_amd_gfx95.py b/python/sglang/srt/layers/moe/moe_runner/triton_utils/mxfp8_moe_amd_gfx95.py index de900e57c..a60e32448 100644 --- a/python/sglang/srt/layers/moe/moe_runner/triton_utils/mxfp8_moe_amd_gfx95.py +++ b/python/sglang/srt/layers/moe/moe_runner/triton_utils/mxfp8_moe_amd_gfx95.py @@ -22,11 +22,11 @@ import torch import triton import triton.language as tl +from sglang.kernels.ops.quantization.mxfp8_amd_gfx95 import mxfp8_e4m3_quantize from sglang.srt.environ import envs from sglang.srt.layers.moe.moe_runner.triton_utils.moe_align_block_size import ( moe_align_block_size, ) -from sglang.srt.layers.quantization.mxfp8_amd_gfx95 import mxfp8_e4m3_quantize @triton.jit diff --git a/python/sglang/srt/layers/moe/token_dispatcher/deepep.py b/python/sglang/srt/layers/moe/token_dispatcher/deepep.py index f0fdfe270..40d4786b2 100644 --- a/python/sglang/srt/layers/moe/token_dispatcher/deepep.py +++ b/python/sglang/srt/layers/moe/token_dispatcher/deepep.py @@ -50,7 +50,7 @@ try: from deep_ep import Buffer, Config if not _is_npu: - from sglang.srt.layers.quantization.fp8_kernel import ( + from sglang.kernels.ops.quantization.fp8_kernel import ( sglang_per_token_group_quant_fp8, ) diff --git a/python/sglang/srt/layers/moe/token_dispatcher/moriep.py b/python/sglang/srt/layers/moe/token_dispatcher/moriep.py index 82f13643c..e3fe29abf 100644 --- a/python/sglang/srt/layers/moe/token_dispatcher/moriep.py +++ b/python/sglang/srt/layers/moe/token_dispatcher/moriep.py @@ -39,7 +39,7 @@ from functools import lru_cache import torch -from sglang.srt.layers.quantization.fp8_kernel import fp8_dtype +from sglang.kernels.ops.quantization.fp8_kernel import fp8_dtype # Blockwise quantization group sizes: number of elements sharing one scale factor FP8_BLOCK_SIZE = 128 diff --git a/python/sglang/srt/layers/quantization/awq/__init__.py b/python/sglang/srt/layers/quantization/awq/__init__.py index f54a5eab8..87f0387ce 100644 --- a/python/sglang/srt/layers/quantization/awq/__init__.py +++ b/python/sglang/srt/layers/quantization/awq/__init__.py @@ -1,5 +1,10 @@ # SPDX-License-Identifier: Apache-2.0 +from sglang.kernels.ops.quantization.awq_triton import ( + awq_dequantize_decomposition, + awq_dequantize_triton, +) + from .awq import ( AWQConfig, AWQCPUConfig, @@ -7,7 +12,6 @@ from .awq import ( AWQMarlinConfig, AWQMoEMethod, ) -from .awq_triton import awq_dequantize_decomposition, awq_dequantize_triton from .schemes import ( AWQAscendLinearScheme, AWQAscendMoEScheme, diff --git a/python/sglang/srt/layers/quantization/compressed_tensors/schemes/compressed_tensors_w8a8_fp8.py b/python/sglang/srt/layers/quantization/compressed_tensors/schemes/compressed_tensors_w8a8_fp8.py index 59530433c..edc720f2a 100644 --- a/python/sglang/srt/layers/quantization/compressed_tensors/schemes/compressed_tensors_w8a8_fp8.py +++ b/python/sglang/srt/layers/quantization/compressed_tensors/schemes/compressed_tensors_w8a8_fp8.py @@ -8,6 +8,7 @@ import torch from compressed_tensors.quantization import QuantizationArgs, QuantizationStrategy from torch.nn import Parameter +from sglang.kernels.ops.quantization.fp8_kernel import is_fp8_fnuz from sglang.srt.layers.parameter import ( BlockQuantScaleParameter, ChannelQuantScaleParameter, @@ -17,7 +18,6 @@ from sglang.srt.layers.parameter import ( from sglang.srt.layers.quantization.compressed_tensors.schemes import ( CompressedTensorsLinearScheme, ) -from sglang.srt.layers.quantization.fp8_kernel import is_fp8_fnuz from sglang.srt.layers.quantization.fp8_utils import ( apply_fp8_linear, apply_fp8_ptpc_linear, diff --git a/python/sglang/srt/layers/quantization/compressed_tensors/schemes/compressed_tensors_w8a8_fp8_moe.py b/python/sglang/srt/layers/quantization/compressed_tensors/schemes/compressed_tensors_w8a8_fp8_moe.py index b36e28f21..6a2e23cb3 100644 --- a/python/sglang/srt/layers/quantization/compressed_tensors/schemes/compressed_tensors_w8a8_fp8_moe.py +++ b/python/sglang/srt/layers/quantization/compressed_tensors/schemes/compressed_tensors_w8a8_fp8_moe.py @@ -6,6 +6,7 @@ from typing import TYPE_CHECKING import torch from compressed_tensors.quantization import QuantizationStrategy +from sglang.kernels.ops.quantization.fp8_kernel import is_fp8_fnuz, scaled_fp8_quant from sglang.srt.layers.moe import MoeRunner, MoeRunnerBackend, MoeRunnerConfig from sglang.srt.layers.moe.moe_runner.flashinfer_trtllm import ( FlashInferTrtllmFp8MoeQuantInfo, @@ -19,7 +20,6 @@ from sglang.srt.layers.moe.utils import ( from sglang.srt.layers.quantization.compressed_tensors.schemes import ( CompressedTensorsMoEScheme, ) -from sglang.srt.layers.quantization.fp8_kernel import is_fp8_fnuz, scaled_fp8_quant from sglang.srt.layers.quantization.fp8_utils import normalize_e4m3fn_to_e4m3fnuz from sglang.srt.layers.quantization.utils import ( all_close_1d, diff --git a/python/sglang/srt/layers/quantization/compressed_tensors/schemes/compressed_tensors_w8a8_int8.py b/python/sglang/srt/layers/quantization/compressed_tensors/schemes/compressed_tensors_w8a8_int8.py index ff74f45e4..7634e8197 100644 --- a/python/sglang/srt/layers/quantization/compressed_tensors/schemes/compressed_tensors_w8a8_int8.py +++ b/python/sglang/srt/layers/quantization/compressed_tensors/schemes/compressed_tensors_w8a8_int8.py @@ -8,6 +8,7 @@ import torch from compressed_tensors.quantization import QuantizationStrategy from torch.nn import Parameter +from sglang.kernels.ops.quantization.int8_kernel import per_token_quant_int8 from sglang.srt.hardware_backend.npu.quantization.linear_method_npu import ( NPUW8A8Int8DynamicLinearMethod, ) @@ -19,7 +20,6 @@ from sglang.srt.layers.parameter import ( from sglang.srt.layers.quantization.compressed_tensors.schemes import ( CompressedTensorsLinearScheme, ) -from sglang.srt.layers.quantization.int8_kernel import per_token_quant_int8 from sglang.srt.layers.quantization.utils import requantize_with_max_scale from sglang.srt.utils import is_cuda diff --git a/python/sglang/srt/layers/quantization/fp8.py b/python/sglang/srt/layers/quantization/fp8.py index 34d9d5539..df54095c2 100644 --- a/python/sglang/srt/layers/quantization/fp8.py +++ b/python/sglang/srt/layers/quantization/fp8.py @@ -12,6 +12,12 @@ import torch.nn.functional as F from torch.nn import Module from torch.nn.parameter import Parameter +from sglang.kernels.ops.quantization.fp8_kernel import ( + fp8_dtype, + is_fp8_fnuz, + per_token_group_quant_fp8, + scaled_fp8_quant, +) from sglang.srt.distributed import get_tp_group from sglang.srt.distributed.device_communicators.pynccl_allocator import ( use_symmetric_memory, @@ -46,12 +52,6 @@ from sglang.srt.layers.quantization.base_config import ( QuantizationConfig, QuantizeMethodBase, ) -from sglang.srt.layers.quantization.fp8_kernel import ( - fp8_dtype, - is_fp8_fnuz, - per_token_group_quant_fp8, - scaled_fp8_quant, -) from sglang.srt.layers.quantization.fp8_utils import ( _use_aiter_bpreshuffle_gfx95, apply_fp8_linear, diff --git a/python/sglang/srt/layers/quantization/fp8_utils.py b/python/sglang/srt/layers/quantization/fp8_utils.py index 3e6ee25d2..31cffa226 100755 --- a/python/sglang/srt/layers/quantization/fp8_utils.py +++ b/python/sglang/srt/layers/quantization/fp8_utils.py @@ -7,11 +7,11 @@ from typing import TYPE_CHECKING, Callable, List, Optional, Tuple, Union import torch -from sglang.srt.layers import deep_gemm_wrapper -from sglang.srt.layers.quantization.fp8_kernel import ( +from sglang.kernels.ops.quantization.fp8_kernel import ( sglang_per_token_group_quant_fp8, sglang_per_token_group_quant_fp8_row_padded, ) +from sglang.srt.layers import deep_gemm_wrapper from sglang.srt.layers.quantization.mxfp4_tensor import MXFP4QuantizeUtil from sglang.srt.runtime_context import get_parallel from sglang.srt.utils.common import torch_release @@ -19,7 +19,7 @@ from sglang.srt.utils.common import torch_release if TYPE_CHECKING: from sglang.srt.server_args import ServerArgs -from sglang.srt.layers.quantization.fp8_kernel import ( +from sglang.kernels.ops.quantization.fp8_kernel import ( fp8_dtype, fp8_max, fp8_min, @@ -457,7 +457,7 @@ def dispatch_w8a8_mxfp8_linear() -> Callable: elif backend.is_triton(): return triton_mxfp8_blockscaled_linear elif _is_hip and _is_gfx95_supported: - from sglang.srt.layers.quantization.mxfp8_amd_gfx95 import ( + from sglang.kernels.ops.quantization.mxfp8_amd_gfx95 import ( dot_scaled_mxfp8_blockscaled_linear, ) @@ -473,7 +473,7 @@ def _deepgemm_w8a8_mxfp8_linear_with_fallback( bias: Optional[torch.Tensor] = None, weight_scale_fallback: Optional[torch.Tensor] = None, ) -> torch.Tensor: - from sglang.srt.layers.quantization.fp8_kernel import ( + from sglang.kernels.ops.quantization.fp8_kernel import ( sglang_per_token_group_quant_fp8, w8a8_mxfp8_matmul_deepgemm, ) diff --git a/python/sglang/srt/layers/quantization/fpgemm_fp8.py b/python/sglang/srt/layers/quantization/fpgemm_fp8.py index 352d74628..df72a8966 100644 --- a/python/sglang/srt/layers/quantization/fpgemm_fp8.py +++ b/python/sglang/srt/layers/quantization/fpgemm_fp8.py @@ -8,6 +8,7 @@ import torch from torch.nn import Module from torch.nn.parameter import Parameter +from sglang.kernels.ops.quantization.fp8_kernel import is_fp8_fnuz from sglang.srt.layers.linear import LinearBase from sglang.srt.layers.parameter import ChannelQuantScaleParameter, ModelWeightParameter from sglang.srt.layers.quantization.base_config import ( @@ -15,7 +16,6 @@ from sglang.srt.layers.quantization.base_config import ( QuantizationConfig, QuantizeMethodBase, ) -from sglang.srt.layers.quantization.fp8_kernel import is_fp8_fnuz from sglang.srt.layers.quantization.fp8_utils import ( apply_fp8_linear, can_auto_enable_marlin_fp8, diff --git a/python/sglang/srt/layers/quantization/int8_utils.py b/python/sglang/srt/layers/quantization/int8_utils.py index 9a7aa6d82..4658471cd 100644 --- a/python/sglang/srt/layers/quantization/int8_utils.py +++ b/python/sglang/srt/layers/quantization/int8_utils.py @@ -2,7 +2,7 @@ from typing import List, Optional, Tuple import torch -from sglang.srt.layers.quantization.int8_kernel import ( +from sglang.kernels.ops.quantization.int8_kernel import ( per_token_group_quant_int8, w8a8_block_int8_matmul, ) diff --git a/python/sglang/srt/layers/quantization/kv_cache.py b/python/sglang/srt/layers/quantization/kv_cache.py index 6415733ba..105cb9839 100644 --- a/python/sglang/srt/layers/quantization/kv_cache.py +++ b/python/sglang/srt/layers/quantization/kv_cache.py @@ -6,11 +6,11 @@ import logging import torch +from sglang.kernels.ops.quantization.fp8_kernel import is_fp8_fnuz from sglang.srt.layers.quantization.base_config import ( QuantizationConfig, QuantizeMethodBase, ) -from sglang.srt.layers.quantization.fp8_kernel import is_fp8_fnuz logger = logging.getLogger(__name__) diff --git a/python/sglang/srt/layers/quantization/modelopt_quant.py b/python/sglang/srt/layers/quantization/modelopt_quant.py index 0a497f571..3e2a0bedc 100755 --- a/python/sglang/srt/layers/quantization/modelopt_quant.py +++ b/python/sglang/srt/layers/quantization/modelopt_quant.py @@ -10,6 +10,7 @@ import regex as re import torch from torch.nn.parameter import Parameter +from sglang.kernels.ops.quantization.fp8_kernel import scaled_fp8_quant from sglang.srt.environ import envs from sglang.srt.layers.moe import ( MoeRunner, @@ -35,7 +36,6 @@ from sglang.srt.layers.quantization.fp4_utils import ( get_fp4_gemm_runner_backend, ) from sglang.srt.layers.quantization.fp8 import Fp8Config -from sglang.srt.layers.quantization.fp8_kernel import scaled_fp8_quant from sglang.srt.layers.quantization.fp8_utils import ( apply_fp8_linear, apply_fp8_linear_bmm_flashinfer, @@ -1620,7 +1620,7 @@ class ModelOptFp4LinearMethod(LinearMethodBase): ) if getattr(layer, "_interleave_for_swiglu_fusion", False): - from sglang.srt.layers.quantization.nvfp4_gemm_swiglu_nvfp4_quant import ( + from sglang.kernels.ops.quantization.nvfp4_gemm_swiglu_nvfp4_quant import ( interleave_linear_and_gate, swizzle_blockscale_2d, ) diff --git a/python/sglang/srt/layers/quantization/mxfp4_flashinfer_trtllm_moe.py b/python/sglang/srt/layers/quantization/mxfp4_flashinfer_trtllm_moe.py index c318b5f8c..36f79d628 100644 --- a/python/sglang/srt/layers/quantization/mxfp4_flashinfer_trtllm_moe.py +++ b/python/sglang/srt/layers/quantization/mxfp4_flashinfer_trtllm_moe.py @@ -4,11 +4,10 @@ import logging from typing import TYPE_CHECKING import torch -import triton -import triton.language as tl from torch.nn import Module from torch.nn.parameter import Parameter +from sglang.kernels.ops.moe.pack_topk_ids import PackTopkIds from sglang.srt.distributed import get_tp_group from sglang.srt.distributed.device_communicators.pynccl_allocator import ( use_symmetric_memory, @@ -46,82 +45,6 @@ _USE_OFFICIAL_SHUFFLE = get_bool_env_var( ) -class PackTopkIds: - - @classmethod - def execute( - cls, topk_ids: torch.Tensor, topk_weights: torch.Tensor - ) -> torch.Tensor: - return cls.triton(topk_ids, topk_weights) - - @classmethod - def vanilla( - cls, topk_ids: torch.Tensor, topk_weights: torch.Tensor - ) -> torch.Tensor: - weight_bits = ( - topk_weights.to(torch.bfloat16).view(torch.int16).to(torch.int32) & 0xFFFF - ) - return (topk_ids.to(torch.int32) << 16) | weight_bits - - @classmethod - def triton(cls, topk_ids: torch.Tensor, topk_weights: torch.Tensor) -> torch.Tensor: - assert ( - topk_ids.shape == topk_weights.shape - ), f"shape mismatch: {topk_ids.shape=} vs {topk_weights.shape=}" - assert topk_ids.ndim >= 1, f"expected >=1D, got {topk_ids.shape=}" - - assert ( - topk_ids.dtype == torch.int32 - ), f"topk_ids must be int32, got {topk_ids.dtype}" - assert ( - topk_weights.dtype == torch.float32 - ), f"topk_weights must be float32, got {topk_weights.dtype}" - - assert topk_ids.is_contiguous(), "topk_ids must be contiguous" - assert topk_weights.is_contiguous(), "topk_weights must be contiguous" - - out = torch.empty_like(topk_ids, dtype=torch.int32) - numel = out.numel() - if numel == 0: - return out - - BLOCK_SIZE = 1024 - grid = (triton.cdiv(numel, BLOCK_SIZE),) - _pack_topk_ids_triton_kernel[grid]( - topk_ids, - topk_weights, - out, - numel, - BLOCK_SIZE=BLOCK_SIZE, - ) - return out - - -@triton.jit -def _pack_topk_ids_triton_kernel( - topk_ids_ptr, - topk_weights_ptr, - out_ptr, - numel, - BLOCK_SIZE: tl.constexpr, -): - pid = tl.program_id(0) - offsets = pid * BLOCK_SIZE + tl.arange(0, BLOCK_SIZE) - mask = offsets < numel - - ids = tl.load(topk_ids_ptr + offsets, mask=mask, other=0) - w = tl.load(topk_weights_ptr + offsets, mask=mask, other=0.0) - - w_bf16 = w.to(tl.bfloat16) - w_i16 = w_bf16.to(tl.int16, bitcast=True) - w_i32 = w_i16.to(tl.int32) & 0xFFFF - - ids_i32 = ids.to(tl.int32) - packed = (ids_i32 << 16) | w_i32 - - tl.store(out_ptr + offsets, packed, mask=mask) - - class Mxfp4FlashinferTrtllmMoEMethod: def __init__(self, fp8_method, prefix: str): diff --git a/python/sglang/srt/layers/quantization/qoq.py b/python/sglang/srt/layers/quantization/qoq.py index ec0fda482..665211a8b 100644 --- a/python/sglang/srt/layers/quantization/qoq.py +++ b/python/sglang/srt/layers/quantization/qoq.py @@ -5,6 +5,7 @@ from typing import Any, Dict, List, Optional import torch from torch.nn.parameter import Parameter +from sglang.kernels.ops.quantization.int8_kernel import per_token_quant_int8 from sglang.srt.layers.parameter import ( ChannelQuantScaleParameter, GroupQuantScaleParameter, @@ -15,7 +16,6 @@ from sglang.srt.layers.quantization.base_config import ( QuantizationConfig, QuantizeMethodBase, ) -from sglang.srt.layers.quantization.int8_kernel import per_token_quant_int8 from sglang.srt.utils import is_cuda _is_cuda = is_cuda() diff --git a/python/sglang/srt/layers/quantization/quark/schemes/quark_w8a8_fp8.py b/python/sglang/srt/layers/quantization/quark/schemes/quark_w8a8_fp8.py index c8b1dde59..2cfd9d423 100644 --- a/python/sglang/srt/layers/quantization/quark/schemes/quark_w8a8_fp8.py +++ b/python/sglang/srt/layers/quantization/quark/schemes/quark_w8a8_fp8.py @@ -5,12 +5,12 @@ from typing import Any, Callable, Optional, cast import torch from torch.nn import Parameter +from sglang.kernels.ops.quantization.fp8_kernel import is_fp8_fnuz from sglang.srt.layers.parameter import ( ChannelQuantScaleParameter, ModelWeightParameter, PerTensorScaleParameter, ) -from sglang.srt.layers.quantization.fp8_kernel import is_fp8_fnuz from sglang.srt.layers.quantization.fp8_utils import ( apply_fp8_linear, cutlass_fp8_supported, diff --git a/python/sglang/srt/layers/quantization/quark/schemes/quark_w8a8_fp8_moe.py b/python/sglang/srt/layers/quantization/quark/schemes/quark_w8a8_fp8_moe.py index d55c9816b..2735e0bbb 100644 --- a/python/sglang/srt/layers/quantization/quark/schemes/quark_w8a8_fp8_moe.py +++ b/python/sglang/srt/layers/quantization/quark/schemes/quark_w8a8_fp8_moe.py @@ -7,9 +7,9 @@ from typing import TYPE_CHECKING, Any import torch +from sglang.kernels.ops.quantization.fp8_kernel import is_fp8_fnuz, scaled_fp8_quant from sglang.srt.layers.moe import MoeRunner, MoeRunnerBackend, MoeRunnerConfig from sglang.srt.layers.moe.moe_runner.triton import TritonMoeQuantInfo -from sglang.srt.layers.quantization.fp8_kernel import is_fp8_fnuz, scaled_fp8_quant from sglang.srt.layers.quantization.fp8_utils import normalize_e4m3fn_to_e4m3fnuz from sglang.srt.layers.quantization.quark.schemes import QuarkMoEScheme from sglang.srt.layers.quantization.utils import all_close_1d, per_tensor_dequantize diff --git a/python/sglang/srt/layers/quantization/utils.py b/python/sglang/srt/layers/quantization/utils.py index 6c5aed185..c1e56460e 100644 --- a/python/sglang/srt/layers/quantization/utils.py +++ b/python/sglang/srt/layers/quantization/utils.py @@ -12,7 +12,7 @@ from typing import TYPE_CHECKING, Dict, List, Mapping, Optional, Tuple, Union import numpy import torch -from sglang.srt.layers.quantization.fp8_kernel import scaled_fp8_quant +from sglang.kernels.ops.quantization.fp8_kernel import scaled_fp8_quant if TYPE_CHECKING: from sglang.srt.layers.quantization.base_config import QuantizationConfig diff --git a/python/sglang/srt/layers/quantization/w8a8_fp8.py b/python/sglang/srt/layers/quantization/w8a8_fp8.py index aeea826cd..30ed7ddb8 100644 --- a/python/sglang/srt/layers/quantization/w8a8_fp8.py +++ b/python/sglang/srt/layers/quantization/w8a8_fp8.py @@ -5,6 +5,11 @@ from typing import TYPE_CHECKING, Any, Dict, List, Optional import torch from torch.nn.parameter import Parameter +from sglang.kernels.ops.quantization.fp8_kernel import ( + fp8_dtype, + is_fp8_fnuz, + per_token_group_quant_fp8, +) from sglang.srt.layers.moe import MoeRunner, MoeRunnerBackend, MoeRunnerConfig from sglang.srt.layers.moe.moe_runner.triton import TritonMoeQuantInfo from sglang.srt.layers.parameter import ChannelQuantScaleParameter, ModelWeightParameter @@ -14,11 +19,6 @@ from sglang.srt.layers.quantization.base_config import ( QuantizationConfig, QuantizeMethodBase, ) -from sglang.srt.layers.quantization.fp8_kernel import ( - fp8_dtype, - is_fp8_fnuz, - per_token_group_quant_fp8, -) from sglang.srt.layers.quantization.fp8_utils import ( apply_fp8_linear, cutlass_fp8_supported, diff --git a/python/sglang/srt/layers/quantization/w8a8_int8.py b/python/sglang/srt/layers/quantization/w8a8_int8.py index 18fcb184e..6bcc3549f 100644 --- a/python/sglang/srt/layers/quantization/w8a8_int8.py +++ b/python/sglang/srt/layers/quantization/w8a8_int8.py @@ -7,6 +7,7 @@ from typing import TYPE_CHECKING, Any, Dict, List, Mapping, Optional, cast import torch from torch.nn.parameter import Parameter +from sglang.kernels.ops.quantization.int8_kernel import per_token_quant_int8 from sglang.srt.layers.amx_utils import ( CPUQuantMethod, _amx_process_weight_after_loading, @@ -21,7 +22,6 @@ from sglang.srt.layers.quantization.base_config import ( QuantizeMethodBase, ) from sglang.srt.layers.quantization.compressed_tensors.utils import should_ignore_layer -from sglang.srt.layers.quantization.int8_kernel import per_token_quant_int8 from sglang.srt.layers.quantization.unquant import UnquantizedLinearMethod from sglang.srt.runtime_context import get_parallel from sglang.srt.utils import ( diff --git a/python/sglang/srt/lora/trtllm_lora_temp/lora_dispatch.py b/python/sglang/srt/lora/trtllm_lora_temp/lora_dispatch.py index a361d9af4..30522854d 100644 --- a/python/sglang/srt/lora/trtllm_lora_temp/lora_dispatch.py +++ b/python/sglang/srt/lora/trtllm_lora_temp/lora_dispatch.py @@ -18,12 +18,12 @@ from typing import TYPE_CHECKING import torch +from sglang.kernels.ops.quantization.fp8_kernel import per_token_group_quant_fp8 from sglang.srt.distributed import get_tp_group from sglang.srt.distributed.device_communicators.pynccl_allocator import ( use_symmetric_memory, ) from sglang.srt.layers.dp_attention import is_allocation_symmetric -from sglang.srt.layers.quantization.fp8_kernel import per_token_group_quant_fp8 from sglang.srt.utils.common import next_power_of_2 if TYPE_CHECKING: diff --git a/python/sglang/srt/lora/trtllm_lora_temp/moe_overlap.py b/python/sglang/srt/lora/trtllm_lora_temp/moe_overlap.py index b21ff0378..328c526c3 100644 --- a/python/sglang/srt/lora/trtllm_lora_temp/moe_overlap.py +++ b/python/sglang/srt/lora/trtllm_lora_temp/moe_overlap.py @@ -61,6 +61,7 @@ def fused_experts_none_to_experimental_sgl_trtllm_fp8_lora_two_stream( from sglang.kernels.ops.moe.trtllm_lora_temp.virtual_experts import ( merged_experts_fused_moe_lora_add, ) + from sglang.kernels.ops.quantization.fp8_kernel import per_token_group_quant_fp8 from sglang.srt.distributed import get_tp_group from sglang.srt.distributed.device_communicators.pynccl_allocator import ( use_symmetric_memory, @@ -69,7 +70,6 @@ def fused_experts_none_to_experimental_sgl_trtllm_fp8_lora_two_stream( from sglang.srt.layers.moe.token_dispatcher.standard import StandardCombineInput from sglang.srt.layers.moe.topk import TopKOutputChecker from sglang.srt.layers.moe.utils import RoutingMethodType - from sglang.srt.layers.quantization.fp8_kernel import per_token_group_quant_fp8 from sglang.srt.lora.trtllm_lora_temp.shared_add_overlap import ( maybe_overlap_staged_shared_add, ) diff --git a/python/sglang/srt/mem_cache/memory_pool.py b/python/sglang/srt/mem_cache/memory_pool.py index 7f4d5810e..e863151c3 100644 --- a/python/sglang/srt/mem_cache/memory_pool.py +++ b/python/sglang/srt/mem_cache/memory_pool.py @@ -41,6 +41,7 @@ from sglang.kernels.ops.kvcache.cache_move import ( set_kv_buffer_prefix_valid_tiled, store_cache_4d, ) +from sglang.kernels.ops.quantization.fp8_kernel import fp8_dtype, is_fp8_fnuz from sglang.srt.configs.mamba_utils import BaseLinearStateParams from sglang.srt.constants import GPU_MEMORY_TYPE_KV_CACHE from sglang.srt.environ import envs @@ -50,7 +51,6 @@ from sglang.srt.layers.attention.dsa.quant_k_cache import ( quantize_k_cache_separate, ) from sglang.srt.layers.attention.dsa.utils import aiter_can_use_preshuffle_paged_mqa -from sglang.srt.layers.quantization.fp8_kernel import fp8_dtype, is_fp8_fnuz from sglang.srt.layers.radix_attention import RadixAttention from sglang.srt.mem_cache.allocator.mamba import MambaSlotAllocator from sglang.srt.mem_cache.kv_vmm_backing import KvVmmBufferOwner diff --git a/python/sglang/srt/model_executor/model_runner.py b/python/sglang/srt/model_executor/model_runner.py index 1ffad3397..0716f0267 100644 --- a/python/sglang/srt/model_executor/model_runner.py +++ b/python/sglang/srt/model_executor/model_runner.py @@ -32,6 +32,7 @@ import torch import torch.distributed as dist from torch import nn +from sglang.kernels.ops.quantization.fp8_kernel import fp8_dtype from sglang.srt.configs import ( BailingHybridConfig, FalconH1Config, @@ -133,7 +134,6 @@ from sglang.srt.layers.dp_attention import ( from sglang.srt.layers.logits_processor import LogitsProcessorOutput from sglang.srt.layers.moe.hash_topk import HashTopK from sglang.srt.layers.moe.topk import TopK -from sglang.srt.layers.quantization.fp8_kernel import fp8_dtype from sglang.srt.layers.sampler import create_sampler from sglang.srt.layers.torchao_utils import apply_torchao_config_to_model from sglang.srt.layers.utils.cp_utils import is_mla_prefill_cp_enabled diff --git a/python/sglang/srt/model_loader/loader.py b/python/sglang/srt/model_loader/loader.py index e11563564..e9a8038b1 100644 --- a/python/sglang/srt/model_loader/loader.py +++ b/python/sglang/srt/model_loader/loader.py @@ -1255,7 +1255,7 @@ class QuantizedRLModelLoader(DefaultModelLoader): def quantize_weights_iterator(weights_iter): """Quantize individual shards before weight_loader stacks them.""" - from sglang.srt.layers.quantization.fp8_kernel import ( + from sglang.kernels.ops.quantization.fp8_kernel import ( per_token_group_quant_fp8, ) diff --git a/python/sglang/srt/models/bailing_moe_linear.py b/python/sglang/srt/models/bailing_moe_linear.py index be78a26d0..2877a155e 100644 --- a/python/sglang/srt/models/bailing_moe_linear.py +++ b/python/sglang/srt/models/bailing_moe_linear.py @@ -9,6 +9,7 @@ import torch.nn.functional as F from torch import nn from transformers import PretrainedConfig +from sglang.kernels.ops.quantization.fp8_kernel import is_fp8_fnuz from sglang.srt.distributed import ( get_pp_group, tensor_model_parallel_all_reduce, @@ -35,7 +36,6 @@ from sglang.srt.layers.moe.ep_moe.layer import DeepEPMoE, get_moe_impl_class from sglang.srt.layers.moe.fused_moe_triton.layer import FusedMoE from sglang.srt.layers.moe.topk import TopK from sglang.srt.layers.quantization.base_config import QuantizationConfig -from sglang.srt.layers.quantization.fp8_kernel import is_fp8_fnuz from sglang.srt.layers.quantization.fp8_utils import ( block_quant_dequant, block_quant_to_tensor_quant, @@ -102,7 +102,7 @@ if _is_cuda: elif _is_cpu and _is_cpu_amx_available: pass elif _is_hip: - from sglang.srt.layers.quantization.awq.awq_triton import ( + from sglang.kernels.ops.quantization.awq_triton import ( awq_dequantize_triton as awq_dequantize, ) else: diff --git a/python/sglang/srt/models/deepseek_common/attention_forward_methods/forward_mha.py b/python/sglang/srt/models/deepseek_common/attention_forward_methods/forward_mha.py index a9afa738b..6f2e3747b 100644 --- a/python/sglang/srt/models/deepseek_common/attention_forward_methods/forward_mha.py +++ b/python/sglang/srt/models/deepseek_common/attention_forward_methods/forward_mha.py @@ -50,7 +50,7 @@ elif _is_musa: if _use_aiter_gfx95: from aiter.ops.triton.fused_fp8_quant import fused_rms_fp8_group_quant - from sglang.srt.layers.quantization.fp8_kernel import fp8_dtype + from sglang.kernels.ops.quantization.fp8_kernel import fp8_dtype from sglang.srt.layers.quantization.rocm_mxfp4_utils import fused_rms_mxfp4_quant diff --git a/python/sglang/srt/models/deepseek_common/attention_forward_methods/forward_mla.py b/python/sglang/srt/models/deepseek_common/attention_forward_methods/forward_mla.py index 4ea168a5a..8cfcec83e 100644 --- a/python/sglang/srt/models/deepseek_common/attention_forward_methods/forward_mla.py +++ b/python/sglang/srt/models/deepseek_common/attention_forward_methods/forward_mla.py @@ -6,6 +6,11 @@ from typing import TYPE_CHECKING, Optional import torch +from sglang.kernels.ops.quantization.fp8_kernel import ( + fp8_dtype, + per_tensor_quant_mla_fp8, + per_token_group_quant_mla_deep_gemm_masked_fp8, +) from sglang.srt.compilation.compilation_config import register_split_op from sglang.srt.environ import envs from sglang.srt.layers import deep_gemm_wrapper @@ -19,11 +24,6 @@ from sglang.srt.layers.dcp import ( all_gather_q_for_mla_decode, cp_lse_ag_out_rs_mla, ) -from sglang.srt.layers.quantization.fp8_kernel import ( - fp8_dtype, - per_tensor_quant_mla_fp8, - per_token_group_quant_mla_deep_gemm_masked_fp8, -) from sglang.srt.layers.quantization.fp8_utils import ( materialize_bpreshuffle_fp8_scale_tuple, ) diff --git a/python/sglang/srt/models/deepseek_common/attention_forward_methods/forward_mla_fused_rope_rocm.py b/python/sglang/srt/models/deepseek_common/attention_forward_methods/forward_mla_fused_rope_rocm.py index f46e49c1d..e3ee27a48 100644 --- a/python/sglang/srt/models/deepseek_common/attention_forward_methods/forward_mla_fused_rope_rocm.py +++ b/python/sglang/srt/models/deepseek_common/attention_forward_methods/forward_mla_fused_rope_rocm.py @@ -5,7 +5,7 @@ from typing import TYPE_CHECKING import torch -from sglang.srt.layers.quantization.fp8_kernel import per_tensor_quant_mla_fp8 +from sglang.kernels.ops.quantization.fp8_kernel import per_tensor_quant_mla_fp8 from sglang.srt.model_executor.forward_batch_info import ForwardBatch from sglang.srt.model_executor.forward_context import ( get_attn_backend, diff --git a/python/sglang/srt/models/deepseek_common/utils.py b/python/sglang/srt/models/deepseek_common/utils.py index a23c13978..8db799f1f 100644 --- a/python/sglang/srt/models/deepseek_common/utils.py +++ b/python/sglang/srt/models/deepseek_common/utils.py @@ -17,10 +17,10 @@ from typing import Optional import torch +from sglang.kernels.ops.quantization.fp8_kernel import is_fp8_fnuz from sglang.srt.environ import envs from sglang.srt.layers.moe.fused_moe_triton.layer import get_moe_runner_backend from sglang.srt.layers.quantization.base_config import QuantizationConfig -from sglang.srt.layers.quantization.fp8_kernel import is_fp8_fnuz from sglang.srt.utils import ( cpu_has_amx_support, get_bool_env_var, @@ -85,14 +85,14 @@ def awq_dequantize_func(): return awq_dequantize elif _is_hip: from sglang.kernel_api_logging import debug_kernel_api - from sglang.srt.layers.quantization.awq.awq_triton import ( + from sglang.kernels.ops.quantization.awq_triton import ( awq_dequantize_triton as awq_dequantize, ) return debug_kernel_api(awq_dequantize, op_name="DeepseekCommon.awq_dequantize") elif _is_npu: from sglang.kernel_api_logging import debug_kernel_api - from sglang.srt.layers.quantization.awq.awq_triton import ( + from sglang.kernels.ops.quantization.awq_triton import ( awq_dequantize_decomposition as awq_dequantize, ) diff --git a/python/sglang/srt/models/deepseek_v2.py b/python/sglang/srt/models/deepseek_v2.py index baeeda717..6eb96aadf 100644 --- a/python/sglang/srt/models/deepseek_v2.py +++ b/python/sglang/srt/models/deepseek_v2.py @@ -33,6 +33,9 @@ from sglang.jit_kernel.dsv4 import ( silu_and_mul_clamp, silu_and_mul_contig_post_quant, ) +from sglang.kernels.ops.quantization.fp8_kernel import ( + create_per_token_group_quant_fp8_output_scale, +) from sglang.srt.batch_overlap.single_batch_overlap import SboFlags, compute_overlap_args from sglang.srt.batch_overlap.two_batch_overlap import ( MaybeTboDeepEPDispatcher, @@ -111,9 +114,6 @@ from sglang.srt.layers.moe.utils import ( ) from sglang.srt.layers.quantization.base_config import QuantizationConfig from sglang.srt.layers.quantization.fp8 import Fp8Config -from sglang.srt.layers.quantization.fp8_kernel import ( - create_per_token_group_quant_fp8_output_scale, -) from sglang.srt.layers.quantization.fp8_utils import ( materialize_bpreshuffle_fp8_scale, ) @@ -306,10 +306,10 @@ class DeepseekV2MLP(nn.Module): and self.swiglu_limit is None and not isinstance(x, tuple) ): - from sglang.srt.layers.quantization.fp4_utils import fp4_quantize - from sglang.srt.layers.quantization.nvfp4_gemm_swiglu_nvfp4_quant import ( + from sglang.kernels.ops.quantization.nvfp4_gemm_swiglu_nvfp4_quant import ( nvfp4_gemm_swiglu_nvfp4_quant, ) + from sglang.srt.layers.quantization.fp4_utils import fp4_quantize x_fp4, x_scale = fp4_quantize( x, self.gate_up_proj.input_scale_inv, enable_pdl=True diff --git a/python/sglang/srt/models/glm4_moe.py b/python/sglang/srt/models/glm4_moe.py index 1484ab467..758aeaa52 100644 --- a/python/sglang/srt/models/glm4_moe.py +++ b/python/sglang/srt/models/glm4_moe.py @@ -23,6 +23,7 @@ import torch.nn.functional as F from torch import nn from transformers import PretrainedConfig +from sglang.kernels.ops.quantization.fp8_kernel import is_fp8_fnuz from sglang.srt.batch_overlap.single_batch_overlap import SboFlags from sglang.srt.batch_overlap.two_batch_overlap import model_forward_maybe_tbo from sglang.srt.distributed import ( @@ -69,7 +70,6 @@ from sglang.srt.layers.moe.utils import ( filter_moe_weight_param_global_expert, ) from sglang.srt.layers.quantization.base_config import QuantizationConfig -from sglang.srt.layers.quantization.fp8_kernel import is_fp8_fnuz from sglang.srt.layers.radix_attention import RadixAttention from sglang.srt.layers.rotary_embedding import get_rope from sglang.srt.layers.utils import PPMissingLayer diff --git a/python/sglang/srt/models/longcat_flash.py b/python/sglang/srt/models/longcat_flash.py index 5221c8388..a22ea9e85 100644 --- a/python/sglang/srt/models/longcat_flash.py +++ b/python/sglang/srt/models/longcat_flash.py @@ -37,6 +37,7 @@ from typing import Iterable, List, Optional, Tuple import torch from torch import nn +from sglang.kernels.ops.quantization.fp8_kernel import is_fp8_fnuz from sglang.srt.configs import LongcatFlashConfig from sglang.srt.distributed import ( tensor_model_parallel_all_reduce, @@ -63,7 +64,6 @@ from sglang.srt.layers.moe.topk import StandardTopKOutput, TopK from sglang.srt.layers.moe.utils import filter_moe_weight_param_global_expert from sglang.srt.layers.n_gram_embedding import NgramEmbedding from sglang.srt.layers.quantization.base_config import QuantizationConfig -from sglang.srt.layers.quantization.fp8_kernel import is_fp8_fnuz from sglang.srt.layers.quantization.fp8_utils import ( block_quant_dequant, block_quant_to_tensor_quant, @@ -114,7 +114,7 @@ if _is_cuda: elif _is_cpu and _is_cpu_amx_available: pass elif _is_hip: - from sglang.srt.layers.quantization.awq.awq_triton import ( + from sglang.kernels.ops.quantization.awq_triton import ( awq_dequantize_triton as awq_dequantize, ) else: diff --git a/python/sglang/srt/models/longcat_flash_nextn.py b/python/sglang/srt/models/longcat_flash_nextn.py index 234f70a79..abea8a2d5 100644 --- a/python/sglang/srt/models/longcat_flash_nextn.py +++ b/python/sglang/srt/models/longcat_flash_nextn.py @@ -37,6 +37,7 @@ from typing import Iterable, Optional, Tuple import torch from torch import nn +from sglang.kernels.ops.quantization.fp8_kernel import is_fp8_fnuz from sglang.srt.configs import LongcatFlashConfig from sglang.srt.eplb.expert_distribution import get_global_expert_distribution_recorder from sglang.srt.layers import deep_gemm_wrapper @@ -48,7 +49,6 @@ from sglang.srt.layers.layernorm import RMSNorm from sglang.srt.layers.linear import ReplicatedLinear from sglang.srt.layers.logits_processor import LogitsProcessor from sglang.srt.layers.quantization.base_config import QuantizationConfig -from sglang.srt.layers.quantization.fp8_kernel import is_fp8_fnuz from sglang.srt.layers.quantization.fp8_utils import ( block_quant_dequant, block_quant_to_tensor_quant, @@ -96,7 +96,7 @@ if _is_cuda: elif _is_cpu and _is_cpu_amx_available: pass elif _is_hip: - from sglang.srt.layers.quantization.awq.awq_triton import ( + from sglang.kernels.ops.quantization.awq_triton import ( awq_dequantize_triton as awq_dequantize, ) else: diff --git a/python/sglang/srt/models/sarvam_moe.py b/python/sglang/srt/models/sarvam_moe.py index 0767d8865..4a343a13f 100644 --- a/python/sglang/srt/models/sarvam_moe.py +++ b/python/sglang/srt/models/sarvam_moe.py @@ -84,7 +84,7 @@ if _is_cuda: from sgl_kernel import bmm_fp8, merge_state_v2 from sglang.jit_kernel.concat_mla import concat_mla_k - from sglang.srt.layers.quantization.fp8_kernel import per_tensor_quant_mla_fp8 + from sglang.kernels.ops.quantization.fp8_kernel import per_tensor_quant_mla_fp8 _has_fp8_support = True _has_concat_mla_k = True diff --git a/test/manual/quant/test_block_fp8.py b/test/manual/quant/test_block_fp8.py index a4f26d500..6d6202dfb 100644 --- a/test/manual/quant/test_block_fp8.py +++ b/test/manual/quant/test_block_fp8.py @@ -4,16 +4,16 @@ from functools import lru_cache import torch -from sglang.srt.layers.activation import SiluAndMul -from sglang.srt.layers.moe.moe_runner.triton_utils.fused_moe import fused_moe -from sglang.srt.layers.moe.topk import TopKConfig, select_experts -from sglang.srt.layers.quantization.fp8_kernel import ( +from sglang.kernels.ops.quantization.fp8_kernel import ( per_tensor_quant_mla_fp8, per_token_group_quant_fp8, per_token_group_quant_mla_deep_gemm_masked_fp8, static_quant_fp8, w8a8_block_fp8_matmul, ) +from sglang.srt.layers.activation import SiluAndMul +from sglang.srt.layers.moe.moe_runner.triton_utils.fused_moe import fused_moe +from sglang.srt.layers.moe.topk import TopKConfig, select_experts from sglang.srt.layers.quantization.fp8_utils import ( input_to_float8, mxfp8_group_quantize, diff --git a/test/manual/quant/test_custom_ops.py b/test/manual/quant/test_custom_ops.py index 12a326f9b..52f004dc6 100644 --- a/test/manual/quant/test_custom_ops.py +++ b/test/manual/quant/test_custom_ops.py @@ -7,7 +7,7 @@ import sys import pytest import torch -from sglang.srt.layers.quantization.fp8_kernel import is_fp8_fnuz, scaled_fp8_quant +from sglang.kernels.ops.quantization.fp8_kernel import is_fp8_fnuz, scaled_fp8_quant from sglang.srt.utils import is_cuda, is_hip _is_cuda = is_cuda() diff --git a/test/registered/jit/benchmark/bench_per_token_group_quant_8bit.py b/test/registered/jit/benchmark/bench_per_token_group_quant_8bit.py index e724c197d..6ca882442 100644 --- a/test/registered/jit/benchmark/bench_per_token_group_quant_8bit.py +++ b/test/registered/jit/benchmark/bench_per_token_group_quant_8bit.py @@ -9,10 +9,10 @@ from sglang.jit_kernel.benchmark.utils import get_benchmark_range from sglang.jit_kernel.per_token_group_quant_8bit import ( per_token_group_quant_8bit as sglang_per_token_group_quant_8bit, ) -from sglang.srt.layers.quantization.fp8_kernel import ( +from sglang.kernels.ops.quantization.fp8_kernel import ( create_per_token_group_quant_fp8_output_scale, ) -from sglang.srt.layers.quantization.fp8_kernel import ( +from sglang.kernels.ops.quantization.fp8_kernel import ( per_token_group_quant_8bit as triton_per_token_group_quant_8bit, ) from sglang.srt.utils import is_hip diff --git a/test/registered/jit/benchmark/bench_per_token_group_quant_8bit_v2.py b/test/registered/jit/benchmark/bench_per_token_group_quant_8bit_v2.py index fbae57b77..af2efd29f 100644 --- a/test/registered/jit/benchmark/bench_per_token_group_quant_8bit_v2.py +++ b/test/registered/jit/benchmark/bench_per_token_group_quant_8bit_v2.py @@ -6,7 +6,7 @@ from sglang.jit_kernel.benchmark.utils import create_random from sglang.jit_kernel.per_token_group_quant_8bit_v2 import ( per_token_group_quant_8bit_v2, ) -from sglang.srt.layers.quantization.fp8_kernel import ( +from sglang.kernels.ops.quantization.fp8_kernel import ( create_per_token_group_quant_fp8_output_scale, fp8_dtype, fp8_max, diff --git a/test/registered/jit/deepseek_v4/test_fp8_wo_a.py b/test/registered/jit/deepseek_v4/test_fp8_wo_a.py index 96139aa3a..f3f1e4fab 100644 --- a/test/registered/jit/deepseek_v4/test_fp8_wo_a.py +++ b/test/registered/jit/deepseek_v4/test_fp8_wo_a.py @@ -11,7 +11,7 @@ import torch import sglang.jit_kernel.dsv4.fp8_wo_a as fp8_wo_a_module from sglang.jit_kernel.dsv4 import sglang_per_token_group_quant_fp8_dsv4_wo_a -from sglang.srt.layers.quantization.fp8_kernel import ( +from sglang.kernels.ops.quantization.fp8_kernel import ( fp8_dtype, sglang_per_token_group_quant_fp8, ) diff --git a/test/registered/jit/diffusion/test_diffusion_modelopt_fp8_scaled_mm.py b/test/registered/jit/diffusion/test_diffusion_modelopt_fp8_scaled_mm.py index d3c474984..689720003 100644 --- a/test/registered/jit/diffusion/test_diffusion_modelopt_fp8_scaled_mm.py +++ b/test/registered/jit/diffusion/test_diffusion_modelopt_fp8_scaled_mm.py @@ -3,11 +3,11 @@ import sys import pytest import torch +from sglang.kernels.ops.quantization.fp8_kernel import static_quant_fp8 from sglang.multimodal_gen.runtime.layers.quantization.modelopt_quant import ( ModelOptFp8Config, ModelOptFp8LinearMethod, ) -from sglang.srt.layers.quantization.fp8_kernel import static_quant_fp8 from sglang.srt.layers.quantization.fp8_utils import ( cutlass_fp8_supported, input_to_float8, diff --git a/test/registered/jit/test_fused_store_index_cache.py b/test/registered/jit/test_fused_store_index_cache.py index a7cc1b4f7..7b4ceb0b4 100644 --- a/test/registered/jit/test_fused_store_index_cache.py +++ b/test/registered/jit/test_fused_store_index_cache.py @@ -42,7 +42,7 @@ except ImportError: _is_hip = False try: - from sglang.srt.layers.quantization.fp8_kernel import is_fp8_fnuz + from sglang.kernels.ops.quantization.fp8_kernel import is_fp8_fnuz _is_fp8_fnuz = is_fp8_fnuz() except ImportError: diff --git a/test/registered/jit/test_per_token_group_quant_8bit.py b/test/registered/jit/test_per_token_group_quant_8bit.py index 6f5073960..41bf4280d 100644 --- a/test/registered/jit/test_per_token_group_quant_8bit.py +++ b/test/registered/jit/test_per_token_group_quant_8bit.py @@ -28,10 +28,10 @@ from sgl_kernel.test_utils import ( # noqa: E402 from sglang.jit_kernel.per_token_group_quant_8bit import ( # noqa: E402 per_token_group_quant_8bit as jit_per_token_group_quant_8bit, ) -from sglang.srt.layers.quantization.fp8_kernel import ( # noqa: E402 +from sglang.kernels.ops.quantization.fp8_kernel import ( # noqa: E402 create_per_token_group_quant_fp8_output_scale, ) -from sglang.srt.layers.quantization.fp8_kernel import ( # noqa: E402 +from sglang.kernels.ops.quantization.fp8_kernel import ( # noqa: E402 per_token_group_quant_8bit as triton_per_token_group_quant_8bit, ) diff --git a/test/registered/jit/test_per_token_group_quant_8bit_v2.py b/test/registered/jit/test_per_token_group_quant_8bit_v2.py index fcb4e29f5..e87adeb7e 100644 --- a/test/registered/jit/test_per_token_group_quant_8bit_v2.py +++ b/test/registered/jit/test_per_token_group_quant_8bit_v2.py @@ -21,7 +21,7 @@ if sgl_per_token_group_quant_8bit is None and not torch.cuda.is_available(): if sgl_per_token_group_quant_8bit is None: raise ImportError("sgl_kernel AOT reference op is unavailable") -from sglang.srt.layers.quantization.fp8_kernel import ( # noqa: E402 +from sglang.kernels.ops.quantization.fp8_kernel import ( # noqa: E402 create_per_token_group_quant_fp8_output_scale, fp8_dtype, fp8_max, diff --git a/test/registered/kernels/test_kernels_namespace.py b/test/registered/kernels/test_kernels_namespace.py index 954ca94c9..1837db8e2 100644 --- a/test/registered/kernels/test_kernels_namespace.py +++ b/test/registered/kernels/test_kernels_namespace.py @@ -45,6 +45,12 @@ EXPECTED_OPS = { "moe.moe_align_block_size": {"cuda_aot", "cuda_jit"}, "moe.topk_softmax": {"cuda_aot"}, "quantization.sgl_per_token_quant_fp8": {"cuda_aot"}, + # migrated from srt/layers/quantization (Phase 2.5) + "quantization.w8a8_block_fp8_matmul": {"triton"}, + "quantization.per_token_quant_int8": {"triton"}, + "quantization.awq_dequantize_triton": {"triton"}, + "quantization.nvfp4_gemm_swiglu_nvfp4_quant": {"cute_dsl"}, + "moe.pack_topk_ids": {"triton"}, "quantization.sgl_per_token_group_quant_8bit": {"cuda_aot", "cuda_jit"}, "quantization.sgl_per_token_group_quant_fp8": {"cuda_aot"}, "quantization.sgl_per_token_group_quant_int8": {"cuda_aot"}, diff --git a/test/registered/moe/test_fused_moe.py b/test/registered/moe/test_fused_moe.py index e832255f4..d7f22c2c6 100644 --- a/test/registered/moe/test_fused_moe.py +++ b/test/registered/moe/test_fused_moe.py @@ -3,11 +3,11 @@ import unittest import torch from tqdm import tqdm +from sglang.kernels.ops.quantization.fp8_kernel import is_fp8_fnuz from sglang.srt.layers.activation import SiluAndMul from sglang.srt.layers.moe.moe_runner import MoeRunnerConfig from sglang.srt.layers.moe.moe_runner.triton_utils.fused_moe import fused_moe from sglang.srt.layers.moe.topk import TopKConfig, select_experts -from sglang.srt.layers.quantization.fp8_kernel import is_fp8_fnuz from sglang.srt.layers.quantization.fp8_utils import normalize_e4m3fn_to_e4m3fnuz from sglang.srt.server_args import ServerArgs, set_global_server_args_for_scheduler from sglang.srt.utils import get_device, get_device_capability, is_hip diff --git a/test/registered/moe/test_triton_moe_channel_fp8_kernel.py b/test/registered/moe/test_triton_moe_channel_fp8_kernel.py index f2bf09b20..603d59b7d 100644 --- a/test/registered/moe/test_triton_moe_channel_fp8_kernel.py +++ b/test/registered/moe/test_triton_moe_channel_fp8_kernel.py @@ -3,10 +3,10 @@ import unittest import torch +from sglang.kernels.ops.quantization.fp8_kernel import scaled_fp8_quant from sglang.srt.layers.activation import SiluAndMul from sglang.srt.layers.moe.moe_runner.triton_utils.fused_moe import fused_moe from sglang.srt.layers.moe.topk import TopKConfig, select_experts -from sglang.srt.layers.quantization.fp8_kernel import scaled_fp8_quant from sglang.srt.server_args import ServerArgs, set_global_server_args_for_scheduler from sglang.test.ci.ci_register import register_cuda_ci from sglang.test.test_utils import CustomTestCase diff --git a/test/registered/quant/test_awq_dequant.py b/test/registered/quant/test_awq_dequant.py index 41f60ac74..70fc205e8 100644 --- a/test/registered/quant/test_awq_dequant.py +++ b/test/registered/quant/test_awq_dequant.py @@ -12,7 +12,7 @@ import unittest import torch -from sglang.srt.layers.quantization.awq.awq_triton import ( +from sglang.kernels.ops.quantization.awq_triton import ( AWQ_TRITON_SUPPORTED_GROUP_SIZES, awq_dequantize_triton, awq_gemm_triton, diff --git a/test/registered/quant/test_fp8_blockwise_row_padding.py b/test/registered/quant/test_fp8_blockwise_row_padding.py index b7951e54b..43b49b5ec 100644 --- a/test/registered/quant/test_fp8_blockwise_row_padding.py +++ b/test/registered/quant/test_fp8_blockwise_row_padding.py @@ -11,7 +11,7 @@ import unittest import torch -from sglang.srt.layers.quantization.fp8_kernel import ( +from sglang.kernels.ops.quantization.fp8_kernel import ( fp8_dtype, per_token_group_quant_fp8, sglang_per_token_group_quant_fp8_row_padded, diff --git a/test/registered/quant/test_fp8_kernel.py b/test/registered/quant/test_fp8_kernel.py index 9379bc257..7765fa33c 100644 --- a/test/registered/quant/test_fp8_kernel.py +++ b/test/registered/quant/test_fp8_kernel.py @@ -2,7 +2,7 @@ import unittest import torch -from sglang.srt.layers.quantization.fp8_kernel import ( +from sglang.kernels.ops.quantization.fp8_kernel import ( per_token_group_quant_fp8, w8a8_block_fp8_matmul, ) diff --git a/test/registered/quant/test_int8_kernel.py b/test/registered/quant/test_int8_kernel.py index 3b1c06e1c..85cc9ca41 100644 --- a/test/registered/quant/test_int8_kernel.py +++ b/test/registered/quant/test_int8_kernel.py @@ -3,10 +3,10 @@ import unittest import torch +from sglang.kernels.ops.quantization.int8_kernel import per_token_quant_int8 from sglang.srt.layers.activation import SiluAndMul from sglang.srt.layers.moe.moe_runner.triton_utils.fused_moe import fused_moe from sglang.srt.layers.moe.topk import TopKConfig, select_experts -from sglang.srt.layers.quantization.int8_kernel import per_token_quant_int8 from sglang.srt.server_args import ServerArgs, set_global_server_args_for_scheduler from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci from sglang.test.test_utils import CustomTestCase diff --git a/test/registered/quant/test_triton_scaled_mm.py b/test/registered/quant/test_triton_scaled_mm.py index c00a7459a..910aab6ff 100644 --- a/test/registered/quant/test_triton_scaled_mm.py +++ b/test/registered/quant/test_triton_scaled_mm.py @@ -4,7 +4,7 @@ from typing import Optional import torch import torch.testing -from sglang.srt.layers.quantization.fp8_kernel import triton_scaled_mm +from sglang.kernels.ops.quantization.fp8_kernel import triton_scaled_mm from sglang.srt.utils.common import get_device from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci from sglang.test.test_utils import CustomTestCase