Browser Compatibility

Core ML Backend / macOS

WebNNCPUGPUNPU
macOSβœ… Core MLβœ… Core MLβœ… Core ML
iOS❌ Core ML❌ Core ML❌ Core ML

The WebNN Core ML backend mainly supported on macOS.

WebNN SpecOperationsChromium Version
argMaxβœ… reduce_argmaxM128
argMinβœ… reduce_argminM128
batchNormalizationβœ… batch_normM126
castβœ… castM124
clampβœ… clipM125
concatβœ… concatM125
conv2dβœ… convM125
convTranspose2dβœ… conv_transposeM126
cumulativeSumβœ… cumsumM132
dequantizeLinearπŸš€ dequantize_linear
element-wise binary / addβœ… addM122
element-wise binary / divβœ… real_divM124
element-wise binary / maxβœ… maximumM124
element-wise binary / minβœ… minimumM124
element-wise binary / mulβœ… mulM124
element-wise binary / notEqualβœ… not_equalM134
element-wise binary / powβœ… powM124
element-wise binary / subβœ… subM124
element-wise logical / equalβœ… equalM125
element-wise logical / greaterβœ… greaterM125
element-wise logical / greaterOrEqualβœ… greater_equalM125
element-wise logical / lesserβœ… lessM125
element-wise logical / lesserOrEqualβœ… less_equalM125
element-wise logical / logicalAndβœ… logical_andM132
element-wise logical / logicalOrβœ… logical_orM132
element-wise logical / logicalXorβœ… logical_xorM132
element-wise logical / notβœ… logical_notM128
element-wise unary / absβœ… absM126
element-wise unary / ceilβœ… ceilM126
element-wise unary / identityβœ… identityM126
element-wise unary / cosβœ… cosM126
element-wise unary / erfβœ… erfM126
element-wise unary / expβœ… expM126
element-wise unary / floorβœ… floorM126
element-wise unary / logβœ… logM126
element-wise unary / negβœ… Emulated with mul(a, -1)M127
element-wise unary / reciprocalβœ… inverseM126
element-wise unary / sinβœ… sinM126
element-wise unary / sqrtβœ… sqrtM126
element-wise unary / tanβœ… tanM126
eluβœ… eluM126
expandβœ… tileM128
gatherβœ… gatherM126
gatherElementsβœ… gather_along_axisM132
gatherNDβœ… gather_ndM132
geluβœ… geluM132
gemmβœ… Emulated with add(mul(alpha, matmul(A, B)), mul(beta, C))M126
gruβœ… gruM133
gruCellβœ… gruM133
hardSigmoidβœ… sigmoid_hardM126
hardSwishβœ… Emulated by mul(x, hardsigmoid(x, alpha=1.0/6, beta=0.5))M126
instanceNormalizationβœ… instance_normM126
layerNormalizationβœ… layer_normM129
leakyReluβœ… leaky_reluM126
linearEmulated with add(mul(alpha, a), beta)M126
lstmβœ… lstmM133
lstmCellβœ… lstmM133
matmulβœ… matmulM126
padβœ… padM129
pooling / averagePool2dβœ… avg_poolM126
pooling / l2Pool2dβœ… l2_poolM126
pooling / maxPool2dβœ… max_poolM126
preluπŸš€ prelu
quantizeLinearπŸš€ quantize_linear
reduction / reduceL1βœ… reduce_l1_normM126
reduction / reduceL2βœ… reduce_l2_normM126
reduction / reduceLogSumβœ… reduce_log_sumM126
reduction / reduceLogSumExpβœ… reduce_log_sum_expM126
reduction / reduceMaxβœ… reduce_maxM126
reduction / reduceMeanβœ… reduce_meanM126
reduction / reduceMinβœ… reduce_minM126
reduction / reduceProductβœ… reduce_prodM126
reduction / reduceSumβœ… reduce_sumM126
reduction / reduceSumSquareβœ… reduce_sum_squareM126
reluβœ… reluM125
resample2dβœ… upsample_bilinear βœ… upsample_nearest_neighborM126
reshapeβœ… reshapeM126
reverseπŸš€ reverse
scatterElementsβœ… scatter_along_axisM132
scatterNDβœ… scatter_ndM132
sigmoidβœ… sigmoidM126
signπŸš€ sign
sliceβœ… slice_by_sizeM126
softmaxβœ… softmaxM127
softplusβœ… softplusM126
softsignβœ… softsignM125
splitβœ… splitM130
tanhβœ… tanhM126
tileβœ… tileM131
transposeβœ… transposeM125
triangularβœ… band_partM132
whereβœ… selectM126