14:50:23 RRSAgent has joined #webmachinelearning 14:50:27 logging to https://www.w3.org/2026/04/23-webmachinelearning-irc 14:50:27 inviting RRSAgent 14:50:27 RRSAgent, make logs Public 14:50:28 please title this meeting ("meeting: ..."), anssik 14:50:30 Meeting: WebML WG Teleconference – 23 April 2026 14:50:36 Chair: Anssi 14:50:41 Agenda: https://github.com/webmachinelearning/meetings/blob/main/telcons/2026-04-23-wg-agenda.md 14:50:46 Scribe: Anssi 14:50:50 scribeNick: anssik 14:50:58 gb, this is webmachinelearning/webnn 14:50:58 anssik, OK. 14:51:02 Present+ Anssi_Kostiainen 14:51:06 Regrets+ Christian_Liebel 14:51:28 RRSAgent, draft minutes 14:51:29 I have made the request to generate https://www.w3.org/2026/04/23-webmachinelearning-minutes.html anssik 14:55:26 DwayneR has joined #webmachinelearning 14:55:42 Present+ Dwayne_Robinson 14:57:42 Winstonc has joined #webmachinelearning 14:58:27 Present+ Winston_Chen 14:58:32 lgombos has joined #webmachinelearning 14:59:49 Present+ Markus_Tavenrath 15:00:32 Present+ Bryan_Bernhart 15:00:54 Present+ Rafael_Cintron 15:01:13 Present+ Ehsan_Toreini 15:01:18 Present+ Ningxin_Hu 15:01:34 RafaelCintron has joined #webmachinelearning 15:01:38 RRSAgent, draft minutes 15:01:39 I have made the request to generate https://www.w3.org/2026/04/23-webmachinelearning-minutes.html anssik 15:02:34 phillis has joined #webmachinelearning 15:02:46 ningxin has joined #webmachinelearning 15:02:56 Present+ Phillis_Tang 15:03:03 RRSAgent, draft minutes 15:03:04 I have made the request to generate https://www.w3.org/2026/04/23-webmachinelearning-minutes.html anssik 15:03:12 Present+ Laszlo_Gombos 15:03:14 Anssi: please join me in welcoming the latest new participants to the WG: 15:03:18 ... Yoav Weiss from Shopify 15:03:23 ... Fidel Tian from Zoom 15:03:29 ... Ali Spivak from Google 15:03:33 Topic: Web Neural Network API 15:03:51 Subtopic: Lower limit for conv2d/pool2d kernel sizes, dilations, strides 15:04:02 Anssi: issue #928 15:04:03 https://github.com/webmachinelearning/webnn/issues/928 -> Issue 928 Consider specify lower limit for conv2d/pool2d kernel sizes, dilations, strides (by philloooo) [security-tracker] [Agenda+] 15:04:10 handellm has joined #webmachinelearning 15:04:19 ... I'd like to have a group discussion on the edge cases reported in the issue that may cause integer overflows 15:04:30 ... and also discuss the proposed mitigations to be codified in the specification 15:04:36 mtavenrath has joined #webmachinelearning 15:04:57 ... Phillis reports she found edge cases in pool2d and conv2d when "unreasonably large" sizes for the parameters are used 15:05:07 ... this may cause integer overflows in some backends 15:05:10 zolkis has joined #webmachinelearning 15:05:17 ... Phillis notes in real-life use cases these parameters never have such large values 15:05:29 ... and thus proposes as mitigations parameter upper bounds that are "reasonable for all use cases" 15:05:36 ... this helps with fuzz testing by limiting scope 15:05:40 ... initial proposal suggests the following size limits: 15:05:44 ... kernel size 1024 15:05:51 ... strides and dilations 256 15:07:18 Phillis: Dillon works for TFLite and proposed checks to fix "fishy" parameter sizes 15:07:31 -> https://github.com/webmachinelearning/webnn/issues/928#issuecomment-4284066424 15:07:31 https://github.com/webmachinelearning/webnn/issues/928 -> Issue 928 Consider specify lower limit for conv2d/pool2d kernel sizes, dilations, strides (by philloooo) [security-tracker] [Agenda+] 15:08:29 tarek has joined #webmachinelearning 15:08:51 Sorry I am late. 15:08:55 Dwayne: I agree with limits on the high level, I want to be cautious picking arbitrary ranges that we feel should be safe 15:09:30 ... express in terms of inputs instead, some of our samples e.g. SD use more than the initially proposed limits 15:09:42 ... want to be careful to not break things with these limits 15:09:54 ... Dillon's statements are in terms of input sizes and as such relative metrics 15:10:31 Anssi: "these rules would catch some valid graphs, but [...] unlikely that "real" graphs would violate these checks" 15:11:09 Dwayne: would help to have collection of cases where we have int overflows in backends 15:11:31 Anssi: Phillis, can that information we shared in public? 15:12:02 Phillis: will check with the team 15:12:10 Present+ Tarek_Ziade 15:12:14 q+ 15:12:38 Ningxin: I haven't yet received an update from investigation from my side 15:12:39 q? 15:12:42 ack mtavenrath 15:12:47 Present+ Zoltan_Kis 15:12:55 Present+ Markus_Handell 15:13:42 MarkusT: should WebNN do this, or should different backends do this? Can we expose underlying limits of the backend, would this cause fragmentation 15:13:44 handellm has joined #webmachinelearning 15:14:48 q? 15:15:36 Dwayne: I'll review Dillon's checks with additional information provided 15:16:18 Subtopic: conv2d output channels validation 15:16:22 Anssi: issue #925 15:16:22 https://github.com/webmachinelearning/webnn/issues/925 -> Issue 925 Mandate `output_channels % groups == 0` validation for conv2d (by lynne0326) [security-tracker] [Agenda+] 15:16:54 Phillis: Lynne from Google works on WebNN 15:17:09 Anssi: let's discuss the issue and review the proposed spec change 15:18:20 Phillis: this issue also triggers some errors in the backends and we'd like to the proposed validation to the spec for conv2d 15:18:39 ... proposed spec change: "The specification must mandate that the total number of output channels is a multiple of the groups attribute." 15:19:25 Anssi: motivation: "This eliminates an entire class of potential buffer overflows before the graph is ever compiled." 15:19:57 handellm has joined #webmachinelearning 15:20:05 Anssi: as future work, add the same validation to convTranspose2d if it adds support for groups > 1 that'd cause OOB write 15:20:06 +q 15:20:09 ack ningxin 15:20:15 I think this restriction should be okay. 15:20:52 Ningxin: I think this is a good addition, looking at conv2d groups attribute, it also mentions channels are divided in two, just need to add this to the validation step, +1 from me 15:20:54 q? 15:21:17 MarkusT: it is a good change, +1 from me 15:23:24 Anssi: Dwayne +1'd 15:23:30 RESOLUTION: Add the proposed mitigation to conv2d spec to eliminate potential buffer overflows. (issue #925) 15:23:55 Subtopic: MLComputePolicy naming 15:24:01 Anssi: PR #923 15:24:01 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] [Agenda+] 15:24:15 ... we are close to landing this PR 15:24:22 ... the remaining thing we need to agree on is naming 15:24:29 ... MikeW approved with "fallback" as the name 15:24:45 ... I see Dwayne's "compatible" alternative name has merit and warrants discussion 15:24:50 ... the staged PR has the following names for the MLComputePolicy: 15:24:57 [[ 15:24:57 enum MLComputePolicy { 15:24:57 "default", 15:24:57 "high-performance", 15:24:57 "low-power", 15:24:57 "fallback" 15:24:57 }; 15:24:58 ]] 15:25:02 Anssi: the proposed alternative is "fallback" -> "compatible": 15:25:08 [[ 15:25:08 enum MLComputePolicy { 15:25:08 "default", 15:25:08 "high-performance", 15:25:08 "low-power", 15:25:08 "compatible" 15:25:08 }; 15:25:09 ]] 15:25:24 Anssi: Web Platform Design Principles that has a section called "Naming principles" to help spec authors choose names: 15:25:28 -> https://www.w3.org/TR/design-principles/#naming-is-hard 15:25:41 Anssi: I put these two names, "fallback" and "compatible", through this test to inform the naming decision: 15:26:00 ... - 12.1 Use common words - both "fallback" and "compatible" are readable US English 15:26:07 ... - 12.2 Use ASCII names - both "fallback" and "compatible" pass this test with flying colors 15:26:27 ... - 12.3 Consult others on naming - "fallback" in more common name on the web platform 15:26:31 -> "fallback" name in WebGPU and CSS https://dontcallmedom.github.io/webdex/f.html#[[fallback]]@@adapter@attribute 15:26:36 -> "compatMode" name in DOM https://dontcallmedom.github.io/webdex/c.html#compatMode@@Document@attribute 15:27:01 ... - 12.4 Use names that describe a purpose - "compatible" seems better aligned with TAG principles 15:27:12 ... TAG says "Name things for what they do, not how they do it." 15:27:22 ... "fallback" tells how to do it ("use fallback device") 15:27:30 ... "compatible" describes behavior ("use device that provides maximum compatibility") 15:27:51 ... - 12.5 Name things consistently - "compatible" seems more consistent within MLComputePolicy names 15:28:00 ... TAG says "Naming schemes should aim for consistency, to avoid confusion" 15:28:14 ... "compatible", "high-performance" and "low-power" all describe what is to be prioritized 15:28:20 ... "fallback" describes how to do it 15:28:33 ... the non-scientific TAG naming principles test score, using equal weight for all tests: 15:28:37 ... - "fallback" 3/5 - fails tests 12.4 and 12.5 15:28:41 ... - "compatible" 4/5 - fails test 12.3 15:28:53 ... if we give more weight to naming consistency within the web platform APIs it is a tie 15:29:08 ... my gut feeling is folks who try WebNN are also familiar with WebGPU 15:29:21 q? 15:29:47 +q 15:29:47 ... I see preference from Dwayne and Zoltan for the "compatible" name, Markus seems indifferent? 15:29:53 ack handellm 15:30:27 MarkusH: I was wondering, as a follow up, would be nice to have an effective compute policy on Graph.devices 15:30:29 q+ 15:30:48 ... slight preference for "fallback" 15:31:02 ack zolkis 15:31:20 mtavenrath has joined #webmachinelearning 15:31:31 Zoltan: an original issue connected to this PR, used "fallback" as the name 15:31:52 ... argument for fallback was then that WebGPU is also using it, but WebGPU prefers an adapter concept that does not exist in WebNN 15:32:12 ... so adapter and ComputePolicy do not go so well together 15:32:51 ... ComputePolicy being fallback is not too far from WebGPU fallback adapter 15:32:57 ... adding more consideration 15:33:21 q? 15:34:25 +1 15:34:32 +q 15:34:37 ack RafaelCintron 15:34:56 Rafael: we prefer "fallback" to keep aligned with WebGPU naming 15:35:27 Ehsan has joined #webmachinelearning 15:36:18 Dwayne: I can live with "fallback" 15:38:15 MarkusT: should we have a priority list of devices? 15:38:31 we started long ago with a priority list 15:39:54 Zoltan: we have an explainer with background discussion 15:40:14 RESOLUTION: Use MLComputePolicy "fallback" as the name for maximum compatibility preference. (PR #923) 15:40:28 Anssi: other enhancements from this PR, to be addressed in a separate PR: 15:40:38 ... - "low-latency" MLComputePolicy, example use case audio processing 15:40:59 ... - "precision" MLContextOptions, to signal chopping off low bits is not preferred for this context 15:41:40 q? 15:41:42 Subtopic: Bounded dynamic dimension 15:41:50 Anssi: issue #883 15:41:50 https://github.com/webmachinelearning/webnn/issues/883 -> Issue 883 Support flexible input sizes (by huningxin) [feature request] [operator specific] [Agenda+] 15:41:57 ... thanks Ningxin and Markus for providing new information for this consideration 15:42:10 ... first, ORT Web does not currently support dimension bounds 15:42:23 ... Ningxin proposed to add freeDimensionBounds similar to freeDimensionOverrides in WebNN EP session options, Guenther was pinged 15:42:53 Ningxin: I will catch up with Guenther 15:43:15 Anssi: Markus notes some backends could accept any shape size, thus min/max bounds are to be considered as hints 15:43:42 ... this is backend specific, questions to ONNX team how to handle this in a compatible manner across all backends 15:44:11 s/questions to/question to 15:45:26 Ningxin: two aspects, ONNX Runtime API, another is EP interface, for the EP interface we can talk with a person in ONNX team with Rafael 15:45:58 ... Ningxin reports SOTA image generation model Z-Image-Turbo, cannot be supported by only having input dynamic dimension as in the previous proposal shared on Feb 11: 15:46:01 -> https://github.com/webmachinelearning/webnn/issues/883#issuecomment-3885459576 15:46:01 https://github.com/webmachinelearning/webnn/issues/883 -> https://github.com/webmachinelearning/webnn/issues/883 15:46:20 Anssi: to address this limitation, Bin and Wanming prototyped 9 new ops to enable Z-Image-Turbo successfully: 15:46:29 [[ 15:46:29 + MLOperand mod(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); 15:46:29 15:46:29 + MLOperand shape(MLOperand input, optional MLOperatorOptions options = {}); 15:46:29 15:46:30 + MLOperand range(MLOperand start, MLOperand limit, MLOperand delta, optional MLOperatorOptions options = {}); 15:46:30 15:46:30 + MLOperand dynamicReshape(MLOperand input, MLOperand newShape, optional MLOperatorOptions options = {}); 15:46:31 15:46:31 + MLOperand dynamicExpand(MLOperand input, MLOperand newShape, optional MLOperatorOptions options = {}); 15:46:31 15:46:32 + MLOperand dynamicSlice(MLOperand input, MLOperand starts, MLOperand ends, optional MLOperatorOptions options = {}); 15:46:32 15:46:32 + MLOperand dynamicPad(MLOperand input, MLOperand pads, optional MLOperatorOptions options = {}); 15:46:33 15:46:33 + sequence dynamicSplit(MLOperand input, MLOperand splits, unsigned long numOutputs, optional MLOperatorOptions options = {}); 15:46:33 15:46:34 + MLOperand dynamicResample2d(MLOperand input, MLOperand sizes, optional MLDynamicResample2dOptions options = {}); 15:46:34 ]] 15:46:40 -> https://github.com/webmachinelearning/webnn/issues/883#issuecomment-4302848951 15:46:41 https://github.com/webmachinelearning/webnn/issues/883 -> Issue 883 Support flexible input sizes (by huningxin) [feature request] [operator specific] [Agenda+] 15:47:06 Ningxin: I want to get the group's feedback for there new proposed ops 15:47:44 ... dynamic size calculation required within the graph, initial proposal allows develop to define dynamic dimensions at input, placeholder with name and bounds 15:48:22 ... this new model and other Transformers.js models require share calculation, using pad-to-chunks algorithm 15:48:41 ... later we want to pad the input to multiple chunks, padding size need to be calculated at runtime 15:49:02 ... must get shape at runtime and return tensor shape in another tensor, int64 or uint32 15:49:23 ... tensor size used by other calculations to calculate e.g. padding to chunk size value 15:49:31 ... only static padding supported currently 15:50:03 ... dynamic size should be accepted, that's why we proposed dynamicPad 15:50:43 ... 9 proposed ops, one missing, sample element-wise unary op 15:51:21 ... they are dynamic versions of existing ops, e.g. dynamicReshape 15:51:43 ... range is a tensor generation op 15:51:57 ... Z-Image-Turbo has three models 15:52:40 ... this proposal to add 9 new ops is in addition to the previous proposal that is also required, both are required 15:53:08 ... we can validate tensor shape, dynamic version of this op, you don't know what the output tensor size is at build time 15:53:25 ... next step to explore dispatch-time shape validation when all tensors' sizes are specified or can be inferred 15:54:02 q? 15:54:49 Anssi: multiple new models require these new features? 15:54:55 Ningxin: correct 15:55:11 q? 15:56:21 MarkusT: thank you Ningxin for this work 15:57:21 q+ 15:57:24 Anssi: everyone happy with the direction and the proposed next steps? 15:57:27 ack RafaelCintron 15:58:19 Rafael: I'm supportive of this work if we can do this, given some platforms are more challenging wrt dynamic shapes 15:59:13 MarkusT: some NPUs may have problems supporting this, in those cases GPU or CPU could be used as a fallback 15:59:52 Ningxin: I think fallback compute policy provides a solution to that issue 15:59:53 q? 16:00:51 RRSAgent, draft minutes 16:00:53 I have made the request to generate https://www.w3.org/2026/04/23-webmachinelearning-minutes.html anssik 16:09:57 s/Ningxin reports // 16:10:36 s/develop to/developer to 16:10:57 s/share calculation/shape calculation 16:11:14 s/need to be/needs to be 16:11:59 s/proposal to add/proposal is to add 16:12:16 s/is in addition/in addition 16:13:00 RRSAgent, draft minutes 16:13:02 I have made the request to generate https://www.w3.org/2026/04/23-webmachinelearning-minutes.html anssik 18:30:31 Zakim has left #webmachinelearning 19:48:12 gb has joined #webmachinelearning