WebNN backend and TFLite inference runtime for MoonBit
Dependencies
moon add mizchi/webnnimport {
"mizchi/webnn",
}
supported_targets = "js"pub async fn add_bias() -> Array[Float] {
let graph = @webnn.WebNNGraphBuilder::new(
@webnn.DevicePreference::Npu,
)
let input = graph.input("input", @webnn.Shape::new([1, 2]))
let bias = graph.constant(@webnn.Shape::new([1, 2]), [10.0, 20.0])
let output = input.tensor().add(bias)
let program = graph.compile_program_single(input, "output", output)
defer program.destroy()
program.run([1.0, 2.0])
}--enable-features=WebMachineLearningNeuralNetworkjust install
just checkjust unit
just build
just e2e
just fixture-bert
just bench
just bench-mnist
just bench-mnist-cache
just bench-mnist-pool
just bench-named-io
just bench-tiny-cnn
just bench-transformer
just bench-attention
just bench-encoder
just bench-encoder-stack
just bench-bert-encoder
just bench-litert
just bench-tflite
just bench-tflite-runner-cache
just bench-mobilenet-v2import {
"mizchi/webnn",
}pnpm exec playwright install --only-shell chromium-tip-of-tree
WEBNN_BROWSER_CHANNEL=chromium-tip-of-tree just ci-e2ejust bench 64,128,256 10 30
just bench-mnist 1,16,100 10 30
just bench-mnist-cache 1,16,100 10 30
just bench-mnist-pool 1,2,4,8 256 10 30
just bench-named-io 64,1024,16384 10 30
just bench-tiny-cnn 1,2,4,8,16,32,64 10 30 nchw,nhwc
just bench-transformer 32,64,128,256 16 10 30
just bench-attention 32,64,128,256 16 4 causal 10 30
just bench-encoder 32,64,128,256 2 16 4 causal-padding 10 30
just bench-encoder-stack 1,2,4 2 16 64 4 causal-padding 10 30
just bench-bert-encoder 1,2,4 2 16 64 4 padding 10 30
just bench-litert 10 30
just bench-tflite 10 30
just bench-tflite-runner-cache 10 30
just bench-mobilenet-v2 3 10model/Linear
|
v
tensor/TensorOps
|---------------------|
v v
backend/cpu backend/webnn
eager execution builds MLOperands
|
v
compile / dispatch / readSelfAttentionConfig / TransformerEncoderConfig / TransformerEncoderStackConfig
+ Parameters (owned float32 arrays per layer)
+ AttentionMask
|
|----------------|----------------|
v v
@cpu.materialize_transformer_encoder_stack builder.materialize_transformer_encoder_stack
| |
v v
TransformerEncoderStack[CpuTensor] TransformerEncoderStack[WebNNTensor]fn dequantize_int8(values : Array[Int], scale : Float, zero_point : Int) -> Array[Float] raise LiteRtErrorfn dequantize_uint8(values : Array[Int], scale : Float, zero_point : Int) -> Array[Float] raise LiteRtErrorfn requantize_int8(values : Array[Float], scale : Float, zero_point : Int) -> Array[Int] raise LiteRtErrorfn requantize_uint8(values : Array[Float], scale : Float, zero_point : Int) -> Array[Int] raise LiteRtErrorWebNN backend and TFLite inference runtime for MoonBit
Dependencies