ONNX Runtime发布CUDA Plugin EP 0.3.0:新增稀疏注意力与连续批处理,INT2与混合位宽QMoE可执行
该版本仍要求ONNX Runtime核心最低 1.24.4,但发布说明指出,满足最低版本不保证贡献算子的兼容性;核心与插件必须使用同一套贡献算子schema,建议从同一ONNX Runtime revision构建,匹配版本为 1.31.0。
AI解读:适用范围方面,发布说明称最低ONNX Runtime核心版本仍为 1.24.4,但满足最低版本不保证贡献算子兼容;核心与插件须使用同一套贡献算子schema,建议从同一ONNX Runtime revision构建,本版本匹配的ONNX Runtime版本是 1.31.0。
稀疏注意力新增CUDA SparsePagedAttention与DynamicSparseAttention,支持外部选定的注意力索引,用于Qwen4-Exp QSA与DeepSeek V4 CSA的注意力路径;同时新增SparseAttentionIndexer和面向打包变长连续批处理的PackedSparseAttentionIndexer。
量化MatMul与MoE方面,新增按投影的QMoE权重位宽属性,支持统一INT2以及INT2/INT4混合FC1/FC2组合 (2,2)、(2,4)、(4,2);在SM80+上对符合条件的打包INT2/混合位宽QMoE预填充默认启用,但有对齐、专家数量和工作区限制。
新增的MatMul自动调优、FP8 DeepGEMM路径以及部分GEMV实验性选项均为opt-in且默认关闭;发布说明特别提示paired-K战术为实验性,即使默认GEMV保持有限值,FP16部分和仍可能溢出,需要数值验证,而战术分析只检查速度不检查数值安全。
发布说明称本版本由 17 位人类贡献者完成,内容覆盖CUDA Plugin EP代码、共享CUDA内核、构建集成和打包;发布摘要由AI辅助基于提交历史和PR元数据起草。
ONNX Runtime CUDA Plugin EP 0.3.0已发布。据发布说明,这一版本为ONNX Runtime CUDA Plugin EP带来稀疏注意力和打包的连续批处理支持、INT2与混合位宽QMoE执行、解码内核调优以及可靠性修复。
发布说明列出的重点包括新的QSA/CSA注意力算子、扩展的paged投机解码、可选的MatMul自动调优,以及Blackwell消费级GPU上改进的MXFP4支持。
兼容性方面,发布说明称ONNX Runtime核心最低版本仍为 1.24.4,但仅仅满足最低版本并不能保证贡献算子的兼容性;核心与插件必须使用相同的贡献算子schema,建议从同一ONNX Runtime revision构建两者,本版本匹配的ONNX Runtime版本为 1.31.0。发布说明还警告schema不匹配可能导致错误执行或崩溃,而且注册插件时可能检测不到(#32855)。
稀疏注意力与连续批处理新增内容
CUDA SparsePagedAttention和DynamicSparseAttention为分页及连续KV缓存上的外部选定注意力索引提供支持。发布说明称,它们支持Qwen4-Exp QSA的选中主缓存注意力,以及DeepSeek V4 CSA的联合局部/选中辅助注意力,参与条目共享一次softmax,并可选注意力sink(#32524、#32525)。
SparseAttentionIndexer用于QSA词元选择和CSA压缩块选择,包含rotary准备、打分、确定性TopK以及缓存更新(#32526)。PackedSparseAttentionIndexer面向打包、变长的连续批处理,具有按请求元数据、固定容量状态,其选择输出与SparsePagedAttention兼容(#32618)。
发布说明称,dense和packed QSA索引获得优化,新增打包QK输入和更广泛的mask/rotary缓存支持;打包索引器还增加了可选的transactional QSA状态更新捕获,以便投机解码重放已接受的prefix(#32656)。DynamicSparseAttention在所选词元tile上并行化,工作区分割有界,用GPU bitmap替代二次重复验证,并为大上下文推理加入单分割快速路径(#32671)。
量化MatMul与MoE的适用范围及实验性选项
QMoE新增按投影的权重位宽属性,并为统一INT2以及INT2/INT4混合FC1/FC2组合 (2,2)、(2,4)、(4,2) 提供CUDA执行,包含打包解码路径,并对受支持配置提供工作区有界的反量化回退(#32697、#32743、#32761)。
发布说明称,符合条件的打包INT2/混合位宽QMoE预填充在SM80+上默认启用,要求FP16/BF16激活、对称量化和交错融合SwiGLU;覆盖块大小 32/64/128 及上述三种FC1/FC2组合,但受对齐、专家数量和工作区限制(#32963、#33045、#33005、#33092)。
另新增block-scaled FP8 QMoE(含routed-expert compaction)、NVFP4 QMoE解码直接消费schema原生打包权重与缩放,以及BF16路由支持(#32887、#32325、#32659)。
MatMul自动调优为opt-in:通过ep.cuda.enable_gemm_auto_tune=1 或ORT_CUDA_GEMM_AUTO_TUNE=1 启用,在SM90+上从cuBLAS、小N GEMV和符合条件的tinygemm2内核中选择,默认仍为cuBLAS;启用CUDA Graph的会话会先用CUDA Graph重放验证候选,再缓存胜出者,捕获前需要预热推理(#32876、#32901、#33085)。
SM90 DeepGEMM路径同样为opt-in,适用于符合条件的MatMulBlockQuantizedFp8Weight工作负载(含a_scale、块大小 128),避免FP16/BF16权重的反量化缓冲区;需在受支持的非Windows DeepGEMM构建中设置ORT_FP8_MATMUL_DEEPGEMM=1,默认禁用,且原生FP8 rounding需要模型精度验证(#32599)。
两项MatMulNBits GEMV实验也默认禁用:ep.cuda.fpa_intb_gemv_wave_aware=1 面向符合条件的SM12x FP16/INT4 M=8 tile;ep.cuda.fpa_intb_gemv_paired_k=1(或ORT_FPA_INTB_GEMV_PAIRED_K=1)面向符合条件的FP16/INT4块 32 的M=5-8 分析桶。发布说明明确称paired-K战术是实验性的:即使默认GEMV保持有限值,FP16部分和仍可能溢出,需要数值验证;战术分析只检查速度,不检查数值安全(#33186、#33188)。
- 块大小 32/64/128,以及 (2,2)、(2,4)、(4,2) 三种FC1/FC2组合,受对齐、专家数量和工作区限制。
- MatMul自动调优、FP8 DeepGEMM、fpa_intb_gemv_wave_aware和fpa_intb_gemv_paired_k均为opt-in且默认关闭。
- paired-K实验需要数值验证,因为FP16部分和可能溢出。
注意力、KV缓存与内核层面的变更
PagedAttention新增cuDNN paged SDPA解码层级,适用于符合条件的FP16/BF16 causal工作负载且KV缓存未量化;发布说明称,当XQA不是胜出者时它先于FlashAttention被选中,在SM90+上自动考虑,可通过ORT_ENABLE_CUDNN_FLASH_ATTENTION=0 禁用(#32493、#32624)。
非causal PagedAttention的使用范围扩展到FlashAttention之外,包括小缓存页的可移植路径和受支持的XQA投机路径;新增对head size 128、16/32/64 词元页和ragged批次的覆盖(#32619)。
causal paged投机XQA新增对FP16 query/output、INT8 KV缓存、head size 128、GQA group size 6和query宽度 2-8 的支持;不支持的宽度和非causal H128工作负载保留现有回退(#32740)。
发布说明记录滑动窗口GQA缓存的block-eviction布局约定,包括多词元投机或分块预填充步骤后如何索引驻留词元(#32419)。GQA可在新K/V为空且两个present-cache输出均省略时借用未量化的past K/V,不分配或复制present缓存;非融合滑动窗口边界被修正为包含当前词元(#33175)。
Gemm和DecoderAttention中的共享ones-buffer偏置广播被替换为消费CUDA流上的直接广播,常量ones缓存被移除,并修正zero-K Gemm偏置缩放(#32852)。小最内轴Split新增 2-4 输出的快速路径,按值传递元数据,消除每次调用的pinned内存分配和元数据上传(#32706)。
新算子、模型支持与兼容性行为变化
EngramGate和NGramHashMapping扩展用于Qwen4-Exp,包括归一化门控值输出、自回归历史、按头偏移以及EOS/段重置(#32285)。VarlenNGramHashMapping用于打包DeepSeek Engram批处理,保留请求本地历史并防止n-gram跨请求边界混合,随后又扩展了Qwen4-Exp哈希语义(#32358、#32467)。
GatedRMSNorm新增activation属性,支持SiLU、其别名Swish和Sigmoid门控,SiLU保持为默认(#32512)。新增无权重超连接融合算子BranchwiseRMSNorm、ScaledSiLU、HyperConnectionPreMix和HyperConnectionPostMix(#32687)。
GatherBlockQuantized扩展到FP8和FP4数据,包括全轴块和缩放广播。发布说明标注了一项行为变化:对于整数和浮点量化格式,越界索引现在产生零输出切片,而不是遵循ONNX Gather的错误语义(#32480)。
发布说明称,本版本覆盖从origin/plugin-ep-cuda/rel-0.2到origin/plugin-ep-cuda/rel-0.3的变更,涉及CUDA Plugin EP代码、共享CUDA内核、构建集成和打包;亮点聚焦用户可见变更,而非列出每项仅基础设施的更新。发布摘要由AI辅助基于提交历史和PR元数据起草,并感谢 17 位人类贡献者。