1. ONNX Runtime Web 的 InferenceSession.create() 与 executionProvider(WebNN/WebGPU/WebGL/WebCPU)回退链设计
ONNX Runtime Web 的 InferenceSession.create() 与 executionProvider(WebNN/WebGPU/WebGL/WebCPU)如何设计回退链?
- InferenceSession.create() 初始化与执行提供者配置
- executionProvider 优先级与回退链原理
- 跨设备能力探测与降级策略
ONNX Runtime Web(ORT Web)通过 InferenceSession.create() 加载模型并创建推理会话,可在配置中指定 executionProviders 列表,按优先级尝试使用。各提供者用途不同:WebCPU 通用兜底、WebGL 兼容性好、WebGPU 性能高、WebNN 可访问 NPU/GPU 硬件加速。ORT 会按声明顺序尝试使用,若某提供者不可用或算子不支持则回退到下一个。
回退链设计: 工程上应遵循"性能优先、稳定兜底"顺序,如 [WebGPU, WebGL, WebCPU] 或 [WebNN, WebGPU, WebCPU],并依据 navigator.gpu 与 WebNN 可用性动态构造列表;通过获取实际使用的 provider 或检查支持情况,做性能与兼容性的动态选择。回退链能保证高端设备用硬件加速、低端设备也能用 CPU 运行,兼顾性能与覆盖率。
本题考察 ORT Web 的执行提供者机制。答题需说明 create() 与 executionProviders 的优先级语义、各提供者定位,并给出"动态探测 + 性能优先 + CPU 兜底"的回退链设计,体现跨设备推理的工程健壮性。