diff --git a/onnxruntime/core/providers/webgpu/webgpu_execution_provider.cc b/onnxruntime/core/providers/webgpu/webgpu_execution_provider.cc index 3df194217933e..15b2d2ece137e 100644 --- a/onnxruntime/core/providers/webgpu/webgpu_execution_provider.cc +++ b/onnxruntime/core/providers/webgpu/webgpu_execution_provider.cc @@ -935,13 +935,14 @@ std::unique_ptr WebGpuExecutionProvider::GetEx std::optional WebGpuExecutionProvider::ShouldConvertDataLayoutForOp(std::string_view node_domain, std::string_view node_op_type, DataLayout target_data_layout) const { - if (target_data_layout != DataLayout::NHWC) { - return std::nullopt; - } - // NHWC for Resize operator is not implemented on kWebGpuExecutionProvider if (node_domain == kOnnxDomain && node_op_type == "Resize") { - return false; + return target_data_layout != DataLayout::NHWC; + } + + // WebGPU perfer NCHW for InstanceNormalization due to a better performance + if (node_domain == kOnnxDomain && node_op_type == "InstanceNormalization") { + return target_data_layout != DataLayout::NHWC; } return std::nullopt;