微软于11月14日发布了ONNX Runtime的CUDA插件0.4.0版本,引入了一项新功能:当混合专家(MoE)模型无法完整加载至GPU显存时,可将使用频率较低的专家模块卸载至CPU,仅保留当前推理所需的专家在GPU上运行。该功能需要搭配ONNX Runtime 1.32.0使用。
CPU与GPU协同卸载的工作原理
混合专家模型由多个专门化子网络(即「专家」)组成。根据不同的输入,系统每次只激活其中一部分专家。CUDA 0.4.0的专家卸载功能正是利用了这一结构特性:未被激活的专家可驻留在系统内存中,仅在需要时才传输至GPU,从而显著降低了将整个模型常驻显存所需的VRAM容量。
ONNX Runtime提供两种运行模式。自动模式会在显存充足时优先将专家保留在GPU上,显存不足时自动切换为混合执行模式;强制模式则在模型不满足既定显存要求时直接终止会话创建。两种模式均通过会话选项配置,无需修改原始模型文件。
显存节省与延迟权衡
此次更新扩大了能够运行兼容MoE模型的硬件配置范围。但这并不意味着任何MoE模型都能在任意GPU上运行:该功能仅支持特定算子节点与格式,包括QMoE及兼容的量化模型。
性能权衡同样需要逐案评估。将部分计算任务转移至CPU确实可以缓解显存压力,但根据微软在GitHub上发布的Release Notes,实际延迟增幅并无统一数值,最终结果取决于模型本身、量化方式、CPU性能、系统内存容量以及所用GPU的具体规格。
版本兼容性要求
实际上,CUDA插件0.4.0与ONNX Runtime 1.32.0配套使用。其中,MoE专家卸载等部分功能依赖主运行时版本引入的新能力。微软建议用户保持两者版本一致。并指出算子schema不匹配可能导致执行错误或运行崩溃。
此次发布还包含以下新特性:支持GGUF及block-packed权重格式。量化内核优化,以及针对长上下文推理和推测解码的性能改进。对于模型开发者和部署者而言。核心价值在于:当显存成为瓶颈时。CPU与GPU的协同运行提供了一条可行路径。实际的容量提升与速度表现,仍需在目标硬件和真实模型上通过基准测试加以验证。
来源: ONNX Runtime CUDA Plugin EP 0.4.0 · ONNX Runtime 1.32.0



