onnxruntime
e25750d8 - [WebGPU] Default non-debug validation mode set to disabled (#28679)

Commit
77 days ago
[WebGPU] Default non-debug validation mode set to disabled (#28679) ## Summary This PR updates WebGPU release behavior to improve default runtime performance while preserving explicit user control over validation. In non-debug builds, the provider enables Dawn's `skip_validation` toggle by default **only when `validationMode` is not explicitly configured or when explicitly configured to a mode weaker than strict validation**. If `validationMode` is explicitly set to a stricter validation level (> disabled), that setting is honored and `skip_validation` is not forced. Debug build behavior is unchanged. ## Motivation Release users generally prioritize performance, while advanced users need predictable diagnostic control when they explicitly request a stronger validation mode. This change provides a release-friendly default without removing configurability or forcing performance penalties when users explicitly enable validation for debugging. ## Behavior Matrix | Build Type | validationMode Explicitly Set | Behavior | |---|---|---| | Debug | No | No behavior change | | Debug | Yes | Respect explicit validationMode | | Release | No | Enable skip_validation by default | | Release | Yes (validationMode ≤ disabled) | Enable skip_validation | | Release | Yes (validationMode > disabled) | Respect explicit validationMode; do not force skip_validation | ## Implementation - Track whether `validationMode` was explicitly provided during provider option parsing. - Plumb explicitness into WebGpuContext initialization. - In non-debug builds: apply `skip_validation` default only when `validationMode` is absent or weaker than strict validation; otherwise honor explicit choice. ## Why this approach - Improves release-path defaults for performance-sensitive scenarios. - Preserves explicit override semantics for diagnostics/troubleshooting. - Respects user intent: if they explicitly enable strong validation, that choice is honored. - Keeps the change narrowly scoped and low risk. ## Related PRs - [PR](https://github.com/microsoft/onnxruntime/pull/28581) to use direct dispatch instead of indirect dispatch in the FA kernels to work-around the Dawn inefficiency with basic valiation mode - This is no longer needed - [PR](https://github.com/microsoft/onnxruntime-genai/pull/2177) fix to create the dummy ORT session with user provided device knobs is still needed for other knobs (validation mode is just one such knob) ## Motivation and Context Perf improvement on **Vulkan backend** for **Qwen3-1.7B** model on a **Windows** machine with **RTX 5060Ti** card <img width="387" height="200" alt="image" src="https://github.com/user-attachments/assets/f2d79200-f7cf-48cd-973c-3ba6bdf3c5da" /> The default state for validationMode to disabled greatly helps deocde TPS on Vulkan as it helps reduce the indirect dispatch inefficiency on Vulkan. There is a very small marginal improvement on D3D12 as well although not as marked as the inefficiency with indirect dispatch on D3D12 backend is greatly helped by D3D12's aggressive sub-allocator pooling (something Vulkan backend lacks). NOTE: The "Branch" perf improvement numbers also includes the fusion in https://github.com/microsoft/onnxruntime/pull/28484 but the fusion's decode TPS gains is under 10%. The rest are contributed by the validationMode default. --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Author
Parents
Loading