mirror of
https://github.com/saymrwulf/onnxruntime.git
synced 2026-05-18 21:21:17 +00:00
### Description WebNN only supports test mode, so we don't care about other inputs or attributes about training mode, use WebNN's identity op to implement the Dropout op directly.
94 lines
7.8 KiB
Markdown
94 lines
7.8 KiB
Markdown
## Operators Support Table
|
|
|
|
The following table shows ONNX
|
|
operators and the supported opset domain/versions in **WebNN EP** by ONNX Runtime Web. For example,
|
|
`7-12, 13+` means ONNX Runtime Web currently supports opset version 7 to 12, 13 and above.
|
|
|
|
(**Note**: ONNX Runtime only *guarantees* support for models stamped with opset version 7 or above for opset domain 'ai.onnx'.)
|
|
|
|
[WebNN API](https://webmachinelearning.github.io/webnn) provides two device types `cpu` and `gpu` to leverage different on-device accelerators. WebNN API implementation in Chromium uses TFLite XNNPack delegate backend for `cpu` device type and DirectML backend for `gpu` device type. [The op support status](https://webmachinelearning.github.io/webnn-status/) behind these two backends is inconsistent.
|
|
|
|
|
|
| Operator | Opset | WebNN API | WebNN CPU | WebNN GPU | Comments |
|
|
|:------:|:------:|:------:|:-:|:-:|:------|
|
|
| Abs | ai.onnx(7-12, 13+) | abs | ✓ | ✓ | |
|
|
| Add | ai.onnx(7-12, 13, 14+) | add | ✓ | ✓ | |
|
|
| ArgMax | ai.onnx(7-10, 11, 12, 13+) | argMax | ✓ | ✓ | |
|
|
| ArgMin | ai.onnx(7-10, 11, 12, 13+) | argMin | ✓ | ✓ | |
|
|
| AveragePool | ai.onnx(7-9, 10, 11, 12-18, 19+) | averagePool2d | ✓ | ✓ | Only supports 4-D input, 2-D 'kernel_shape', 'count_include_pad' value is 0 |
|
|
| BatchNormalization | ai.onnx(7-8, 9-13, 14, 15+) | batchNormalization | ✓ | ✓ | Only supports 'training_mode' value is 0, one output |
|
|
| Cast | ai.onnx(7-8, 9-12, 13-18, 19-20, 21+) | cast | ✓ | ✓ | WebNN CPU backend doesn't support casting to uint64 data type |
|
|
| Ceil | ai.onnx(7-12, 13+) | ceil | ✓ | ✓ | |
|
|
| Clip | ai.onnx(7-10, 11, 12, 13+) | clamp | ✓ | ✓ | WebNN CPU backend only supports 3 specific ranges: [0.0, infinity], [-1.0, 1.0], [0.0, 6.0] (Chromium issue: https://issues.chromium.org/issues/326156496) |
|
|
| Concat | ai.onnx(7-10, 11-12, 13+) | concat | ✓ | ✓ | |
|
|
| Conv | ai.onnx(7-10, 11+) | conv2d | ✓ | ✓ | Only supports 3-D or 4-D input and 'W' (weight) |
|
|
| ConvTranspose | ai.onnx(7-10, 11+) | convTranspose2d | ✓ | ✓ | Only supports 3-D or 4-D input and 'W' (weight). WebNN CPU backend only supports default dilations and group |
|
|
| Cos | ai.onnx(7+) | cos | ✓ | ✓ | |
|
|
| Div | ai.onnx(7-12, 13, 14+) | div | ✓ | ✓ | |
|
|
| Dropout | ai.onnx(7-9, 10-11, 12, 13-21, 22+) | identity | ✓ | ✓ | Only supports test mode |
|
|
| Elu | ai.onnx(7+) | elu | ✓ | ✓ | WebNN CPU backend only supports 'alpha' value is 1.0 |
|
|
| Equal | ai.onnx(7-10, 11-12, 13-18, 19+) | equal | ✓ | ✓ | |
|
|
| Erf | ai.onnx(7-9, 10-12, 13+) | erf | ✗ | ✓ | |
|
|
| Exp | ai.onnx(7-12, 13+) | exp | ✓ | ✓ | |
|
|
| Expand | ai.onnx(8-12, 13+) | expand | ✓ | ✓ | 'shape' input should be a constant |
|
|
| Flatten | ai.onnx(7-8, 9-10, 11-12, 13-20, 21+) | reshape | ✓ | ✓ | |
|
|
| Floor | ai.onnx(7-12, 13+) | floor | ✓ | ✓ | |
|
|
| Gather | ai.onnx(7-10, 11-12, 13+) | gather | ✓ | ✓ | |
|
|
| Gelu | ai.onnx(20+) | gelu | ✓ | ✓ | |
|
|
| Gemm | ai.onnx(7-8, 9-10, 11-12, 13+) | gemm | ✓ | ✓ | Only supports 1-D 'C' input |
|
|
| GlobalAveragePool | ai.onnx(7+) | averagePool2d | ✓ | ✓ | Only supports 4-D input |
|
|
| GlobalMaxPool | ai.onnx(7+) | maxPool2d | ✓ | ✓ | Only supports 4-D input |
|
|
| GlobalLpPool| ai.onnx(7+) | l2Pool2d | ✗ | ✓ | Only supports 4-D input, 'p' value is 2 |
|
|
| Greater | ai.onnx(7-8, 9-12, 13+) | greater | ✓ | ✓ | |
|
|
| GreaterOrEqual | ai.onnx(12-15, 16+) | greaterOrEqual | ✓ | ✓ | |
|
|
| HardSigmoid | ai.onnx(7+) | hardSigmoid | ✓ | ✓ | |
|
|
| HardSwish | ai.onnx(14+) | hardSwish | ✓ | ✓ | |
|
|
| Identity | ai.onnx(7-13, 14-15, 16-18, 19-20, 21+) | identity | ✓ | ✓ | |
|
|
| InstanceNormalization | ai.onnx(7+) | instanceNormalization | ✓ | ✓ | |
|
|
| LayerNormalization | ai.onnx(7-16, 17+) | layerNormalization | ✓ | ✓ | |
|
|
| LeakyRelu | ai.onnx(7-15, 16+) | leakyRelu | ✓ | ✓ | |
|
|
| Less | ai.onnx(7-8, 9-12, 13+) | lesser | ✓ | ✓ | |
|
|
| LessOrEqual | ai.onnx(12-15, 16+) | lesserOrEqual | ✓ | ✓ | |
|
|
| Log | ai.onnx(7-12, 13+) | log | ✓ | ✓ | |
|
|
| LpPool | ai.onnx(7-10, 11-17, 18+) | l2Pool2d | ✗ | ✓ | Only supports 4-D input, 2-D 'kernel_shape', 'p' value is 2 |
|
|
| MatMul | ai.onnx(7-8, 9-12, 13+) | matmul | ✓ | ✓ | |
|
|
| Max | ai.onnx(7, 8-11, 12, 13+) | max | ✓ | ✓ | |
|
|
| MaxPool | ai.onnx(7, 8-9, 10, 11, 12+) | maxPool2d | ✓ | ✓ | Only supports 4-D input, 2-D 'kernel_shape', 'storage_order' != 1, one output |
|
|
| Min | ai.onnx(7, 8-11, 12, 13+) | min | ✓ | ✓ | |
|
|
| Mul | ai.onnx(7-12, 13, 14+) | mul | ✓ | ✓ | |
|
|
| Neg | ai.onnx(7-12, 13+) | neg | ✓ | ✓ | |
|
|
| Not | ai.onnx(7+) | logicalnot | ✓ | ✓ | |
|
|
| Pad | ai.onnx(7-10, 11-12, 13-17, 18, 19-20, 21+) | pad | ✓ | ✓ | modes == 'wrap' is not supported |
|
|
| Pow | ai.onnx(7-11, 12, 13-14, 15+) | pow | ✓ | ✓ | |
|
|
| PRelu | ai.onnx(7-8, 9-15, 16+) | prelu | ✓ | ✓ | WebNN CPU backend restricts the last dimension of input and slope to be same (Chromium issue: https://issues.chromium.org/issues/335517470) |
|
|
| Reciprocal | ai.onnx(7-12, 13+) | reciprocal | ✓ | ✓ | |
|
|
| ReduceL1 | ai.onnx(7-10, 11-12, 13-17, 18+) | reduceL1 | ✓ | ✓ | Input 'axes' if present should be a constant |
|
|
| ReduceL2 | ai.onnx(7-10, 11-12, 13-17, 18+) | reduceL2 | ✓ | ✓ | Input 'axes' if present should be a constant |
|
|
| ReduceLogSum| ai.onnx(7-10, 11-12, 13-17, 18+) | reduceLogSum| ✓ | ✓ | Input 'axes' if present should be a constant |
|
|
| ReduceLogSumExp | ai.onnx(7-10, 11-12, 13-17, 18+) | reduceLogSumExp | ✓ | ✓ | Input 'axes' if present should be a constant |
|
|
| ReduceMax | ai.onnx(7-10, 11, 12, 13-17, 18-19, 20+) | reduceMax | ✓ | ✓ | Input 'axes' if present should be a constant |
|
|
| ReduceMean | ai.onnx(7-10, 11-12, 13-17, 18+) | reduceMean | ✓ | ✓ | Input 'axes' if present should be a constant |
|
|
| ReduceMin | ai.onnx(7-10, 11, 12, 13-17, 18-19, 20+) | reduceMin | ✓ | ✓ | Input 'axes' if present should be a constant |
|
|
| ReduceProd | ai.onnx(7-10, 11-12, 13-17, 18+) | reduceProduct | ✓ | ✓ | Input 'axes' if present should be a constant |
|
|
| ReduceSum | ai.onnx(7-10, 11-12, 13+) | reduceSum | ✓ | ✓ | Input 'axes' if present should be a constant |
|
|
| ReduceSumSquare | ai.onnx(7-10, 11-12, 13-17, 18+) | reduceSumSquare | ✓ | ✓ | Input 'axes' if present should be a constant |
|
|
| Relu | ai.onnx(7-12, 13, 14+) | relu | ✓ | ✓ | |
|
|
| Reshape | ai.onnx(7-12, 13, 14-18, 19-20, 21+) | reshape | ✓ | ✓ | Input 'shape' should be a constant, 0 dimension value in 'shape' is not supported |
|
|
| Resize | ai.onnx(11-12, 13-17, 18, 19+) | resample2d | ✓ | ✓ | Only supports 4-D input, exclude_outside != 0, input 'scales' and 'sizes' if present must be a constant, 'linear' and 'nearest' modes |
|
|
| Shape | ai.onnx(7-12, 13-14, 15-18, 19-20, 21+) | slice | ✓ | ✓ | |
|
|
| Sigmoid | ai.onnx(7-12, 13+) | sigmoid | ✓ | ✓ | |
|
|
| Softplus | ai.onnx(7+) | softplus | ✓ | ✓ | |
|
|
| Softsign | ai.onnx(7+) | softsign | ✓ | ✓ | |
|
|
| Sin | ai.onnx(7+) | sin | ✓ | ✓ | |
|
|
| Slice | ai.onnx(7-9, 10, 11-12, 13+) | slice | ✓ | ✓ | Input 'starts', 'ends', 'axes', and 'steps' if present must be a constant, only supports 'steps' value 1 |
|
|
| Softmax | ai.onnx(7-10, 11-12, 13+) | softmax | ✓ | ✓ | |
|
|
| Split | ai.onnx(7-10, 11-12, 13-17, 18+) | split | ✓ | ✓ | Input 'split' if present should be a constant |
|
|
| Sqrt | ai.onnx(7-12, 13+) | sqrt | ✓ | ✓ | |
|
|
| Squeeze | ai.onnx(7-10, 11-12, 13-20, 21+) | reshape | ✓ | ✓ | Input 'axes' if present should be a constant |
|
|
| Sub | ai.onnx(7-12, 13, 14+) | sub | ✓ | ✓ | |
|
|
| Tan | ai.onnx(7+) | tan | ✓ | ✓ | |
|
|
| Tanh | ai.onnx(7-12, 13+) | tanh | ✓ | ✓ | |
|
|
| Transpose | ai.onnx(7-12, 13-20, 21+) | transpose | ✓ | ✓ | |
|
|
| Trilu | ai.onnx(14+) | triangular | ✗ | ✓ | Input 'k' (option 'diagonal' for WebNN) if present should be a constant |
|
|
| Unsqueeze | ai.onnx(7-10, 11-12, 13-20, 21+) | reshape | ✓ | ✓ | |
|
|
| Where | ai.onnx(7-8, 9-15, 16+) | where | ✓ | ✓ | |
|