14:47:43 RRSAgent has joined #webmachinelearning 14:47:47 logging to https://www.w3.org/2025/08/28-webmachinelearning-irc 14:47:47 RRSAgent, make logs Public 14:47:48 please title this meeting ("meeting: ..."), anssik 14:47:50 Meeting: WebML WG Teleconference – 28 August 2025 14:47:54 Chair: Anssi 14:47:59 Agenda: https://github.com/webmachinelearning/meetings/blob/main/telcons/2025-08-28-wg-agenda.md 14:48:03 Scribe: Anssi 14:48:08 scribeNick: anssik 14:48:17 Present+ Anssi_Kostiainen 14:48:21 Regrets+ Mike_Wyrzykowski 14:48:37 RRSAgent, draft minutes 14:48:38 I have made the request to generate https://www.w3.org/2025/08/28-webmachinelearning-minutes.html anssik 14:59:14 zkis has joined #webmachinelearning 15:01:15 ningxin has joined #webmachinelearning 15:01:20 Present+ Tarek_Ziade 15:01:30 Present+ Ningxin_Hu 15:01:38 Present+ Dwayne_Robinson 15:01:46 Present+ Zoltan_Kis 15:01:59 Present+ David_Bokan 15:02:01 DwayneR has joined #webmachinelearning 15:02:16 Present+ Markus_Handell 15:02:44 RafaelCintron has joined #webmachinelearning 15:02:50 Present+ Hannah_Van_Opstal 15:03:11 Present+ Ehsan_Toreini 15:03:15 handellm has joined #webmachinelearning 15:03:19 dbokan has joined #webmachinelearning 15:03:20 Present+ Reilly_Grant 15:03:41 RRSAgent, draft minutes 15:03:43 I have made the request to generate https://www.w3.org/2025/08/28-webmachinelearning-minutes.html anssik 15:04:08 anssik: we'll start by welcoming our new participants 15:04:09 Ehsan has joined #webmachinelearning 15:04:14 ... please welcome to the WebML WG: 15:04:35 ... Joshua Lochner from Hugging Face! Joshua and HF crew is upgrading from an Invited Expert status to a full W3C member 15:04:48 ... Markus Tavenrath from NVIDIA 15:04:53 ... and please welcome new participants to the WebML CG: 15:05:18 ... Alex Nahas and Jason McGhee as individual contributors, bringing in wealth of implementation experience from OSS projects to the WebMCP effort 15:05:19 ... Vincent Scheib from Google 15:05:24 ... Leonard Rosenthol from Adobe 15:05:29 ... Wei Ding and Michael Zhou from Huawei 15:05:33 ... Kenneth Christiansen from Intel 15:05:37 ... Joon Park from Target Corporation 15:05:42 ... Jd Fiscus and Jax Qian as individual contributors 15:06:00 ... with mixed emotions, we say goodbye to Domenic Denicola from Google who announced his retirement earlier this week 15:06:34 ... Domenic has made foundational contributions to the Built-in AI APIs and to the core of the web platform over the years 15:07:18 David: long-time Blink engineer, primary focus on WebMCP 15:07:44 Hannah: work with David on Script Tools and WebMCP, looking forward to working with you all 15:07:59 Present+ Rafael_Cintron 15:08:28 Topic: Incubations: Built-in AI APIs & agentic web 15:08:35 anssik: an update on the recent WebML Community Group developments 15:08:46 Subtopic: CG charter update 15:09:03 anssik: a call for review of the WebML CG Charter update initiated 15:09:11 ... this change update proposes to make the WebMCP API a new WebML CG deliverable 15:09:41 ... the WebMCP proposal is shaping up nicely and I'm pleased to see broad support and excitement around this proposal in the ecosystem 15:09:54 ... please review the charter update by 2025-09-18, instructions: 15:10:03 -> WebML CG Charter update, review by 2025-09-18 https://lists.w3.org/Archives/Public/public-webmachinelearning/2025Aug/0005.html 15:10:05 Tarek has joined #webmachinelearning 15:10:51 Subtopic: WebMCP next steps 15:10:55 gb, this is webmachinelearning/webmcp 15:10:55 anssik, OK. 15:11:00 -> WebMCP explainer https://github.com/webmachinelearning/webmcp/ 15:11:23 -> WebMCP proposal https://github.com/webmachinelearning/webmcp/blob/main/docs/proposal.md 15:11:32 anssik: explainer landed, next steps: 15:11:40 ... agree on the API design approach, issue #15 15:11:40 https://github.com/webmachinelearning/webmcp/issues/15 -> Issue 15 API design (by bwalderman) 15:11:56 ... another important issue to discuss early is how to mitigate prompt injection, see issue #11 15:11:57 https://github.com/webmachinelearning/webmcp/issues/11 -> Issue 11 Prompt injection (by bwalderman) 15:12:05 ... see also other open issues: 15:12:09 -> https://github.com/webmachinelearning/webmcp/issues 15:13:07 David: I filed a few additional issues for WebMCP to be able to list execution tools, to open the API up to 3rd parties 15:13:31 anssik: this is issue #16 15:13:33 https://github.com/webmachinelearning/webmcp/issues/16 -> Issue 16 Add API to list / execute tools? (by bokand) 15:13:44 q? 15:14:34 Topic: Query supported devices 15:14:38 gb, this is webmachinelearning/webnn 15:14:38 anssik, OK. 15:14:42 anssik: now switching from incubations to the WebML WG and WebNN API topics 15:14:51 Subtopic: Before graph compilation 15:14:59 anssik: after extensive discussion we're converging on a design proposal, issue comment: 15:15:03 -> https://github.com/webmachinelearning/webnn/issues/815#issuecomment-3198261369 15:15:04 https://github.com/webmachinelearning/webnn/issues/815 -> Issue 815 Query supported devices before graph compilation (by anssiko) [device selection] 15:15:12 ... there's a PR #884 for the explainer update (thanks Zoltan!) 15:15:12 https://github.com/webmachinelearning/webnn/pull/884 -> Pull Request 884 Update explainer with new proposal for simple accelerator mapping (by zolkis) 15:15:23 ... the spec update will arrive in a separate PR 15:15:41 ... this proposal introduces the following changes to the API surface: 15:15:53 ... 1) getter to expose if CPU fallback is active for the current context 15:16:04 ... 2) a new "accelerated" MLPowerPreference hint 15:16:18 ... 3) getter to expose if "accelerated" context is available for the current context 15:16:28 ... MikeW gave +1 for the proposal 15:17:00 Zoltan: good summary, MikeW has provided feedback, further feedback from other browser vendors welcome 15:17:28 ... we'll change the naming, MikeW prefers "accelerated" as the name, I'll update the PR accordingly 15:17:57 q+ 15:18:02 ack RafaelCintron 15:18:30 RafaelCintron: are we saying we want to take away the MLDeviceType? Or MLPowerPreference 15:18:31 handellm has joined #webmachinelearning 15:18:37 Zoltan: no, we don't take anything away 15:18:57 ... the intent of the hint is to signal the app wants the workload to be accelerated 15:19:09 RafaelCintron: you want this to be the input, rather than return? 15:19:59 ... it can plainly say no acceleration available 15:20:17 s/it can plainly/Zoltan: it can plainly 15:21:00 RafaelCintron: "probably", "maybe", "no" is slightly confusing 15:21:52 ... would prefer to see examples of real-world platforms and frameworks that return similar values to the proposal 15:23:14 Markus: I didn't understand whether this helps us to understand if there's a CPU fallback or not? 15:23:40 Zoltan: CPU fallback cannot be avoided on CoreML? 15:24:14 Markus: is the earlier query support idea is still considered? 15:24:30 ... both query support and CPU fallback active, we can live with those 15:25:08 ... think background blur, runs well on hardware, we'd like to avoid a situation where we compile the model and find out it falls back 15:25:36 q+ 15:25:39 q? 15:27:48 ack reillyg 15:28:24 Reilly: wanted to say the problem with an API that allows checking model compatibility before loading it, it is not implementable on top of any of the backends we currently use 15:29:00 ... CoreML, TFLite, presumably ONNX Runtime supports that 15:29:27 Markus: I'm considering a specific platform like CoreML, there are known ways to not be able to execute on GPU or NPU 15:29:47 Reilly: that'd require reverse-engineering 15:30:23 Zoltan: can have context option that considers this use case 15:31:10 q? 15:31:12 Subtopic: After graph compilation 15:31:19 anssik: issue #836 and PR #854 15:31:19 https://github.com/webmachinelearning/webnn/issues/836 -> Issue 836 Get devices used for a graph after graph compilation (by philloooo) [device selection] 15:31:19 https://github.com/webmachinelearning/webnn/pull/854 -> Pull Request 854 define graph.devices (by philloooo) 15:31:43 ... this feature proposes to extend MLGraph, a compiled immutable graph, with a new property that exposes which device(s) will be used to execute the graph 15:31:53 ... we agreed to await for a demo app to identify and validate the use cases 15:31:58 ... wanted to check if this is still our plan of record? 15:32:27 q+ 15:32:32 Reilly: we haven't had time to do the demo yet, probably best to push this conversation forward with use case documentation 15:32:37 ack zkis 15:32:52 Zoltan: the PR needs to be updated in the light of latest discussion 15:35:50 q? 15:36:17 Topic: Operator specific issues 15:36:23 -> [operator specific] issues https://github.com/webmachinelearning/webnn/labels/operator%20specific 15:36:27 Subtopic: Flexible input sizes 15:36:34 anssik: issue #883 15:36:35 https://github.com/webmachinelearning/webnn/issues/883 -> Issue 883 Support flexible input sizes (by huningxin) [feature request] [operator specific] 15:36:55 ... a new feature request to support models whose input sizes are only known at inference time 15:37:14 ... for example, certain vision models, transformers with varying input lengths and increasing KV cache e.g. speech recognition and language models 15:37:40 ... without this feature app developers needs to modify the model to fix the input size, or add padding 15:37:47 ... flexible input size is supported by native frameworks 15:38:02 anssik: Dwayne shared an extensive list of considerations in his issue comment (thanks!): 15:38:20 ... API role 15:38:20 ... API impact 15:38:20 ... execution speed 15:38:20 ... memory sharing 15:38:20 ... latency of stages 15:38:20 ... graph construction overhead 15:38:21 ... internal complexity 15:38:49 ... per this, Dwayne's suggestion is to add an intermediate step between build() and dispatch() where full shape computation and memory planning can occur 15:38:53 ... this intermediate step in terms of an API shape is: 15:38:59 const knownShapeGraph = await potentiallyDynamicShapeGraph.computeShapes(inputs, outputs); 15:38:59 // knownShapeGraph is just an MLGraph where all inputs/outputs are resolved concretely. 15:38:59 // If all input shapes were already known, then the original MLGraph is already such a graph that can be 15:38:59 // passed directly to dispatch. This knownShapeGraph can be held onto by the caller for later 15:39:00 // iterations, and multiple known-shape-graphs of differing input shapes can be held. 15:39:00 15:39:00 context.dispatch(knownShapeGraph, inputs, outputs); 15:39:01 // Dispatch requires the MLGraph to have well defined shapes on its outputs, otherwise it's an error. 15:39:50 Dwayne: intermediate step because I want dispatch to be light-weight, not have shape inference or memory planning dependencies 15:40:09 ... from the same original graph, you can create multiple instantiations of different sizes and have control over that 15:40:35 ... LLM with a single execution the inputs change, but you want to use that LLM later, naming is subject to change 15:41:09 q+ 15:41:10 anssik: is this an intrusive change to the implementation? 15:41:11 ack ningxin 15:42:01 ningxin: this proposal makes sense, I haven't seen this step in native frameworks, but I feel this makes sense for the WebNN API abstraction however 15:42:47 ... MLOperatorDescriptor should be able to be defined at creation time 15:43:20 ... many algorithms are to compute shape so we need to move that to the compute stage from build stage, not a trivial change so need more preparation and discussion perhaps 15:43:57 ... I heard this requirement from ONNX Runtime team at TPAC 2024, also Transformers.js had this requirement 15:44:06 Present+ Christian_Liebel 15:45:09 q? 15:45:59 Subtopic: Support uint8/int8 input for resample2d 15:46:03 anssik: issue #872 15:46:04 https://github.com/webmachinelearning/webnn/issues/872 -> Issue 872 Support uint8/int8 input for resample2d (by huningxin) [operator specific] 15:46:09 ... to recap, this is a proposal from Dwayne to add uint8 to resample2d() allowed input data types 15:46:22 ... we wanted to survey native ML API support, and Ningxin provided us the data, thanks! 15:46:28 -> ONNX's Resize supports int8/uint8 input https://onnx.ai/onnx/operators/onnx__Resize.html#type-constraints 15:46:34 -> CoreML's iOS17 resize supports int32 input https://apple.github.io/coremltools/source/coremltools.converters.mil.mil.ops.defs.html#coremltools.converters.mil.mil.ops.defs.iOS17.image_resizing.resize 15:46:44 -> TFLite's resize_bilinear doesn't support integers input https://www.tensorflow.org/mlir/tfl_ops#tflresize_bilinear_tflresizebilinearop 15:46:48 anssik: and Dwayne notes there may be a workaround to TFLite's limitation 15:47:08 anssik: with this data at hand, are we ready to add uint8/int8 input support to resample2d, any concerns? 15:47:10 q? 15:47:57 Dwayne: this could be an optional data type? 15:48:09 sgtm 15:48:42 RafaelCintron: no objections 15:48:57 Reilly: if two backends support this, it is good enough to make it optional 15:49:19 q? 15:49:36 Subtopic: Normalize the behavior when NaN is used for minValue or maxValue of clamp operator 15:49:45 anssik: issue #874 15:49:46 https://github.com/webmachinelearning/webnn/issues/874 -> Issue 874 Normalize the behavior when NaN is used for minValue or maxValue of clamp operator (by wangw-1991) [operator specific] 15:49:55 anssik: this is already implemented in Chromium 15:49:59 ... we agreed last time to make the corresponding spec change 15:50:06 ... we can skip discussion today and await the PR 15:50:24 Dwayne: correct 15:50:29 Topic: Wide review closure 15:50:38 Subtopic: Privacy review: opSupportLimits() privacy considerations 15:50:48 anssik: issue #875 and PR #881 15:50:49 https://github.com/webmachinelearning/webnn/pull/881 -> Pull Request 881 Add opSupportLimits() privacy considerations for fingerprinting (by anssiko) 15:50:49 https://github.com/webmachinelearning/webnn/issues/875 -> Issue 875 Future-proofing privacy considerations of New API feature to identify feature support per operator (by sandandsnow) [privacy-tracker] 15:51:02 ... this PR is in response to Privacy group's review feedback regarding opSupportLimits() and its fingerprinting impact 15:51:13 ... thanks Phillis and Reilly for your review and comments, PR updated 15:51:17 ... the group's proposed response is to add the following informative note to opSupportLimits() spec: 15:51:21 "NOTE: The opSupportLimits() API is not intended to provide additional entropy for browser fingerprinting. In current implementations this feature support information can be inferred from the OS and browser version alone. If the diversity of future implementations warrants it, this API allows future implementations to add new privacy mitigations e.g. to bucket capabilities similar to WebGPU to reduce entropy." 15:51:43 anssik: I'd welcome review from Rafael and/or MikeW for WebGPU perspective 15:52:25 RafaelCintron: will take a look 15:52:30 Subtopic: Security review 15:52:49 -> https://github.com/w3c/security-request/issues/85 15:52:50 https://github.com/w3c/security-request/issues/85 -> Issue 85 Web Neural Network API 2025-03-20 > 2025-06-20 (by anssiko) [REVIEW REQUESTED] [pending] [CR] 15:53:02 anssik: this is the only review request with no response from the security reviewers 15:53:15 ... I updated the review request to note if we don't hear from them we consider this review non-blocking for our spec progress 15:53:42 ... once we close on these two, I'll initiate the process to publish a new Candidate Recommendation Snapshot so we keep our annual cadence 15:53:48 q? 15:55:31 Topic: Open PRs 15:55:40 ningxin: I think #882 is ready to merge 15:55:41 https://github.com/webmachinelearning/webnn/pull/882 -> Pull Request 882 Bugfix: Only allow 1 to N rank input for operators that take 1 axis (by huningxin) 15:56:18 anssik: issue #857 15:56:18 https://github.com/webmachinelearning/webnn/pull/857 -> Pull Request 857 Support rankRange for op output tensors in opSupportLimits (by huningxin) 15:56:34 q+ 15:56:48 Dwayne: that's pretty mature right now? 15:57:15 ningxin: while prototyping I figured out the change is more than expected, still considering whether to go Phillis' way with a simpler solution 15:57:24 ... I'll revisit this PR 15:57:29 ack reillyg 15:57:57 Reilly: I think the PR update is that w-p-t has been updated with required and optional test cases 15:58:23 ... we should start a PR to add minimum data type set to the spec 15:59:26 RRSAgent, draft minutes 15:59:27 I have made the request to generate https://www.w3.org/2025/08/28-webmachinelearning-minutes.html anssik 15:59:46 q? 16:04:09 s/idea is still/idea still 16:04:52 s/supports that/does not support that 16:09:15 s/issue #857/PR #857 16:09:42 RRSAgent, draft minutes 16:09:44 I have made the request to generate https://www.w3.org/2025/08/28-webmachinelearning-minutes.html anssik 16:10:09 s/#882/PR #882 16:10:11 RRSAgent, draft minutes 16:10:12 I have made the request to generate https://www.w3.org/2025/08/28-webmachinelearning-minutes.html anssik 17:35:51 gb has joined #webmachinelearning