WebGPU Harness And Smoke#
After ONNX export, package browser assets and run smoke verification.
Ownership boundary#
Public facade API:
MLX::ONNX::WebGPUHarness.export_onnx_webgpu_harnessandMLX::ONNX::WebGPUHarness.smoke_test_onnx_webgpu_harness.Implementation module:
MLX::ONNX::WebGPUHarness.
Package harness assets#
Use export_onnx_webgpu_harness to emit browser-ready files.
manifest = MLX::ONNX::WebGPUHarness.export_onnx_webgpu_harness(
"artifacts/web_harness",
payload,
model_name: "demo_graph",
execution_providers: %w[webgpu wasm],
benchmark_warmup_runs: 1,
benchmark_measure_runs: 5,
external_data: false
)
puts manifest.fetch("format") # => "onnx_webgpu_harness_v1"
puts manifest.fetch("execution_providers").inspect # => ["webgpu", "wasm"]
Generated files include:
model.onnxharness.manifest.jsoninputs.example.jsonindex.htmlharness.jsoptional external data file (for example
model.data)
Manifest fields include:
format(onnx_webgpu_harness_v1)model(currentlymodel.onnx)execution_providers(webgpu/wasm)benchmark(warmup_runsandmeasure_runs)inputs(name/shape/dtype for each model input)optional
external_datafile list when external-data export is enabled
Run smoke test#
Use smoke_test_onnx_webgpu_harness to validate harness wiring and runtime
selection.
telemetry = MLX::ONNX::WebGPUHarness.smoke_test_onnx_webgpu_harness(
"artifacts/web_harness",
timeout_seconds: 30,
mock_ort: false,
local_ort: true,
node_bin: "node"
)
puts telemetry.fetch("format") # => "onnx_webgpu_telemetry_v1"
puts telemetry.fetch("selected_provider", "unknown")
puts telemetry.fetch("requested_providers").inspect
puts telemetry.fetch("fallback_used")
puts telemetry.fetch("run_timings_ms").inspect
Notes#
Smoke tests require Node.js.
Real runtime checks require Playwright +
onnxruntime-webin the harness environment.bundle exec rake deps:webinstalls/checksonnxand the web runtime dependencies used by real-runtime smoke checks.Harness export only accepts
webgpuandwasmexecution providers.