14:52:23 RRSAgent has joined #webmachinelearning 14:52:28 logging to https://www.w3.org/2026/03/26-webmachinelearning-irc 14:52:28 RRSAgent, make logs Public 14:52:29 please title this meeting ("meeting: ..."), anssik 14:52:29 Meeting: WebML WG Teleconference – 26 March 2026 14:53:09 Chair: Anssi 14:53:14 Agenda: https://github.com/webmachinelearning/meetings/blob/main/telcons/2026-03-26-wg-agenda.md 14:53:18 Scribe: Anssi 14:53:23 scribeNick: anssik 14:53:29 gb, this is webmachinelearning/webnn 14:53:30 anssik, OK. 14:53:35 Present+ Anssi_Kostiainen 14:53:41 RRSAgent, draft minutes 14:53:42 I have made the request to generate https://www.w3.org/2026/03/26-webmachinelearning-minutes.html anssik 14:57:43 Present+ Rafael_Cintron 14:57:55 RafaelCintron has joined #webmachinelearning 15:00:12 Present+ Dwayne_Robinson 15:01:20 Present+ Mike_Wyrzykowski 15:01:30 Present+ Ehsan_Toreini 15:01:42 Present+ Gregory_Terzian 15:02:18 Mike_Wyrzykowski has joined #webmachinelearning 15:03:54 Present+ Zoltan_Kis 15:04:18 Present+ Ningxin_Hu 15:04:38 zolkis has joined #webmachinelearning 15:04:46 Anssi: please welcome the new participants to the WG: 15:05:01 ningxin has joined #webmachinelearning 15:05:09 handellm has joined #webmachinelearning 15:05:10 ... Gregory Terzian as an Invited Expert, working on WebNN Servo implementation 15:05:17 ... Tarek Ziade from Hugging Face, working on RustNN implementation, transitioning from Mozilla 15:05:18 Present+ 15:05:38 Present+ Tarek_Ziade 15:05:50 Present+ Markus_Handell 15:06:15 Anssi: Chelsea Kohl from Flying Okole 15:06:16 ... Joan Leon, David Mulder as an individual contributors 15:06:21 ... welcome all! 15:06:32 Present+ RafaelCintron 15:06:40 ... I'm pleased to new diverse implementation experience 15:06:53 ... this broader implementation feedback continues to further strengthen and validate the WebNN API spec design 15:07:03 tarek has joined #webmachinelearning 15:07:10 Topic: Web Neural Network API 15:07:17 Subtopic: MLComputePolicy-driven device selection 15:07:25 Anssi: PR #923 15:07:26 https://github.com/webmachinelearning/webnn/pull/923 -> Pull Request 923 Refactor device selection: Rename to computePolicy, remove accelerated, and add fallback (by mingmingtasd) [device selection] 15:07:38 ... we'll review the PR that executes the resolution: 15:07:48 -> Resolution https://www.w3.org/2026/03/12-webmachinelearning-minutes.html#61df 15:07:53 Anssi: last time we resolved to convert the MLComputePolicy IDL proposal into a spec PR 15:08:19 ... Mingming has submitted a PR #923 for review that refactors the device selection preference API to establish a more extensible framework by replacing MLPowerPreference with MLComputePolicy in MLContextOptions 15:08:24 ... thank you Mingming for this contribution 15:08:33 ... key changes proposed: 15:08:41 ... - renamed preference enum MLPowerPreference -> MLComputePolicy 15:08:46 ... - clarified extensibility 15:08:53 ... - removed "accelerated" option 15:08:58 ... - introduced "fallback" policy 15:09:05 ... there's a corresponding Chromium CL providing implementation experience: 15:09:09 -> https://chromium-review.googlesource.com/c/chromium/src/+/7513189 15:09:17 Anssi: spec PR review was requested from Rafael, Dwayne, Ningxin and Reilly 15:09:23 ... any questions or comments? 15:09:33 q+ 15:09:40 ack zolkis 15:10:45 Zoltan: this is expressing developer preference when context is created 15:10:51 q? 15:11:04 Zoltan: I gave thumbs up 15:11:52 I will take a look but it looks good to me so far. 15:12:03 ... up to MikeW and Markus to say whether they're happy 15:12:34 Looks good, I'll follow up on the PR 15:12:38 q? 15:12:40 Subtopic: Bounded dynamic dimension 15:12:44 Anssi: issue #883 15:12:45 https://github.com/webmachinelearning/webnn/issues/883 -> Issue 883 Support flexible input sizes (by huningxin) [feature request] [operator specific] [Agenda+] 15:13:03 Anssi: next we'll discuss the proposed new bounded dynamic dimension mechanism for MLDynamicDimension 15:13:19 ... MarkusT suggested to add minSize to complement maxSize 15:13:36 ... maxSize use case is to inform the implementation of memory allocation 15:13:42 ... minSize use case would be similar, Dwayne gave thumbs up 15:13:53 tarek8 has joined #webmachinelearning 15:13:55 ... Ningxin proposed minSize to be optional with 1 as default 15:14:18 ... Ningxin conducted a survey for bounded dynamic dimensions, notes "supported by CoreML, TensorRT and OpenVINO" 15:14:39 ... but notes ONNX model cannot represent dimension bounds 15:14:45 ... also JS ML frameworks don't support dimension bounds 15:14:58 ... ONNX model cannot pass dimension bounds info to EPs 15:15:25 ... MarkusT notes min/max bounds are just hints 15:15:29 ... this allows implementations to accept any size 15:16:39 Ningxin: I got the task to create the PR, we're still exploring framework support, specifically ORT Web, looking to define session options, e.g. freeDimensionBounds 15:16:48 ... similar to freeDimensionOverride 15:17:14 ... with this mechanism we can satisfy the WebNN change proposal, freeDimension will require maxSize 15:17:49 ... we're prototyping this and making good progress, testing with various models 15:18:22 ... on the WebNN backend side, MarkusT shared we can inform the underlying runtime via some mechanism, but haven't yet prototyped that and will explore it 15:19:02 ... another open issue is, TF.js models are more flexibly wrt free dimensions. e.g. shape op can capture tensor shape at runtime followed by e.g. gather and squeeze to construct a shape at inference time 15:19:31 ... and also have dynamic ops like reshape, where new shape is defined by dynamic tensor, like a dynamic slice 15:19:58 ... not sure yet if we should introduce such new ops, their output would be defined by tensor rather than something that can be inferred at model build time 15:20:33 ... we have WebNN tensor element count validation at build time, with dynamic ops it is challenging to do shape inference and validation at build time 15:20:34 q? 15:20:52 Ningxin: I can append the issue accordingly 15:22:10 q? 15:22:42 Subtopic: Tensor element count limit 15:22:56 Anssi: issue #924 and PR #926 15:22:57 https://github.com/webmachinelearning/webnn/pull/926 -> Pull Request 926 Specify element count limit (by philloooo) 15:22:57 https://github.com/webmachinelearning/webnn/issues/924 -> Issue 924 Consider specifying tensor element count limit (by philloooo) [feature request] [Agenda+] 15:23:03 ... a proposal from Phillis to spec tensor element count limit 15:23:19 ... WebNN API currently reports the maximum supported length of tensors in bytes via MLOpSupportLimits.maxTensorByteLength 15:23:21 -> https://www.w3.org/TR/webnn/#dom-mlopsupportlimits-maxtensorbytelength 15:23:40 Anssi: but tensor element count is not exposed and there's are apparently use cases that require both maxTensorByteLength and total element count 15:23:50 ... Chromium implementation already checks for the tensor element count limit 15:23:54 -> https://chromium-review.git.corp.google.com/c/chromium/src/+/7682064 15:24:34 Anssi: PR #926 updates the "check dimensions" algorithm to test that the tensor element count is within the range of long, ~2B elements 15:24:42 q? 15:25:33 Dwayne: this seems reasonable, in some cases element count can be different from max byte count, e.g. something fits in memory but exceeds max indexing size for the API 15:25:41 ... we say 32 max is the limit for this 15:27:04 DwayneR has joined #webmachinelearning 15:27:32 q+ 15:27:42 Dwayne: I did not see any dissent about this in the issue or PR discussions 15:27:49 ack RafaelCintron 15:28:16 Rafael: I think this is fine for now, later on we may add a context attribute so developer knows what the limit is 15:28:54 ... it helps to give web developers less than what you have 15:29:20 Dwayne: opSupportsLimits could have that as a complement 15:31:28 Subtopic: Security considerations for out-of-bounds access 15:31:42 Anssi: we have the following inline issue in the security considerations: 15:31:55 ... "Document operations susceptible to out-of-bounds access as a guidance to implementers" 15:32:02 -> https://www.w3.org/TR/webnn/#security 15:32:23 Anssi: with further implementation experience across backends I believe the group is in a good position to make progress with this issue 15:32:44 ... the proposed path forward is to document ops the group believes are susceptible to out-of-bounds access 15:33:01 ... and propose mitigations as a guidance to implementers 15:33:33 ... the mitigations are most likely implementation-defined to allow each implementation to use the mitigation techniques best suited for them, thus generic language is appropriate 15:33:40 -> https://infra.spec.whatwg.org/#implementation-defined 15:33:53 q? 15:34:32 q+ 15:34:37 ack RafaelCintron 15:34:55 Rafael: what's in the spec seems fine to me, the browser should be secure by default 15:34:57 +1 15:35:32 q+ 15:36:10 Rafael: I consider all ops as important in terms of security 15:36:13 ack ningxin 15:37:01 Ningxin: I think the spec already has text about bounds, for e.g. scatter and gather we have text that talks about OOB mitigation, how to use clamp to sanitize 15:37:49 ... another related thing, some ops are more compute intensive than others e.g. conv* and may allocate a buffer for layout as an optimization 15:38:09 ... such a buffer may be larger than the conv weights, for example 15:39:00 ... in such cases we should do overflow checks, not sure if WebNN can impose that, it would be implementation-defined check 15:39:09 ... to make sure the pointer does not overflow 15:39:29 ... web spec should have non-normative section to inform the implementations 15:39:30 q? 15:40:44 q? 15:41:33 MikeW: in general, anything resulting in undefined behaviour is not good, we should, as best we can, limit undefined behaviour, have default action 15:41:59 ... e.g. in WebGPU OOB read would still be defined and you get no zero but some random data instead 15:42:28 -> https://www.w3.org/TR/webgpu/#security-shader 15:43:09 MikeW: this section was produced based on looking at the three major graphics APIs and observing how they behave 15:43:52 https://registry.khronos.org/webgl/specs/latest/1.0/#4.5 has WebGL position. Similar to WebGPU. 15:43:57 Evidently Metal and DirectML have the same clamping behavior (clamped to buffer length rather than returning 0). 15:44:29 Rafael: WebGL has similar text to what happens when you index OOB 15:44:50 ... you get a value in a buffer or all zeros, it won't be able to access data that belongs to another domain 15:47:12 +1 15:47:30 +1 15:47:35 RESOLUTION: Open a meta issue to discuss out-of-bounds access issue in general and other security considerations. 15:47:47 Subtopic: WPT runners for testing on GPU devices 15:48:02 Anssi: in this topic, I wanted to discuss possible WPT runner improvements for GPUs 15:48:18 ... and also check if our WebGPU folks have learning from the WebGPU CTS work 15:48:24 -> https://github.com/gpuweb/cts/issues/2252 15:48:25 https://github.com/gpuweb/cts/issues/2252 -> Issue 2252 Export or move the WebGPU CTS into WPT (by kainino0x) 15:48:42 Anssi: I provided as background material cost estimate from RustNN perspective drafted by Tarek 15:48:54 ... I expect us to be in the same ballpark for the other implementers 15:49:22 ... Tarek's cost estimate is 6k USD / year for RustNN across Linux/Windows/macOS if usage is capped to 1 hour/day 15:49:26 ... if we add Chromium into the mix, and relax the daily cap, we'd multiply that with some number 15:49:51 -> GitHub-hosted GPU runners cost estimate for rustnn https://docs.google.com/document/d/1zz1bc_RUpfM9uGzRH2AWWz5YDBZkRBbSAvU1iA8QFwo/ 15:50:13 Tarek: renting a box would be probably cheaper than renting GPUs per time unit 15:50:50 ... if there are many projects that would use this infra, e.g. WebGPU, would be good to know if partners would like to have use their e.g. H100 GPU clusters to run these tests 15:50:51 q? 15:51:55 Ningxin: I think we don't have dedicated GPU bots in Chromium, we use SW only 15:52:00 q+ 15:52:14 ack tarek 15:52:47 Tarek: we also may want to consider multi-GPU environments, moving data from GPU from another GPU, test with WebNN and WebGPU together 15:52:47 q? 15:53:43 Anssi: I will check if W3C has budget for this WPT infra improvement 15:53:48 ... I think this would be a sponsorship opportunity for interested W3C members 15:55:20 Dwayne: I think Kai's post notes WebGPU CTS is its own island, and Kai thinks WebGPU CTS should be put to WPT, WebGL is the same, part of Khronos Group 15:55:22 q? 15:56:52 Tarek: Mozilla has boxes that could be used, I can also ask Hugging Face if they'd be interested in donating 15:57:09 ... we want to have more projects to use this testing infra 15:58:07 +1 15:58:16 RESOLUTION: Inform the W3C team about the suggested WPT runner infra improvements to support GPUs. Share cost estimates to understand the sponsorship opportunity for W3C members. 15:59:00 RRSAgent, draft minutes 15:59:02 I have made the request to generate https://www.w3.org/2026/03/26-webmachinelearning-minutes.html anssik 16:02:09 servo fork: https://github.com/rustnn/servo-ml 16:02:52 RRSAgent, draft minutes 16:02:53 I have made the request to generate https://www.w3.org/2026/03/26-webmachinelearning-minutes.html anssik 16:04:13 s/pleased to new/pleased to see new 16:06:28 s/freeDimensionOverride/freeDimensionOverrides 16:08:31 s/flexibly/flexible 16:09:59 s/there's are/there are 16:11:40 s/and may/may 16:13:06 s/learning from/learnings from 16:13:53 s/e.g. WebGPU/e.g. also WebGPU 16:14:45 s/have use/share 16:16:23 s/Dwayne: I think Kai's/Rafael: I think Kai's 16:16:53 RRSAgent, draft minutes 16:16:55 I have made the request to generate https://www.w3.org/2026/03/26-webmachinelearning-minutes.html anssik 18:01:11 Zakim has left #webmachinelearning