14:53:53 RRSAgent has joined #webmachinelearning 14:53:53 logging to https://www.w3.org/2021/01/21-webmachinelearning-irc 14:53:55 RRSAgent, make logs Public 14:53:57 please title this meeting ("meeting: ..."), anssik 14:54:08 Meeting: WebML CG Teleconference – 21 January 2021 14:54:11 Chair: Anssi 14:54:15 Agenda: https://github.com/webmachinelearning/meetings/blob/master/telcons/2021-01-21-agenda.md 14:54:19 Scribe: Anssi 14:54:24 scribeNick: anssik 14:58:26 ningxin_hu has joined #webmachinelearning 14:58:58 Present+ Anssi_Kostiainen 14:59:00 Present+ Ningxin_Hu 14:59:52 RRSAgent, draft minutes v2 14:59:52 I have made the request to generate https://www.w3.org/2021/01/21-webmachinelearning-minutes.html anssik 14:59:57 Present+ Rafael_Cintron 15:00:11 Present+ Chai_Chaoweeraprasit 15:00:53 Present+ Ganesan_Ramalingam 15:01:42 chai has joined #webmachinelearning 15:01:54 Present+ Zoltan_Kis 15:02:06 RafaelCintron has joined #webmachinelearning 15:02:26 RRSAgent, draft minutes v2 15:02:26 I have made the request to generate https://www.w3.org/2021/01/21-webmachinelearning-minutes.html anssik 15:03:28 TOPIC: webnn-native 15:03:37 zkis has joined #webmachinelearning 15:05:11 anssik: I asked Ningxin to present the proposed standalone native implementation of the WebNN API spec called webnn-native that complements the JS implementation webnn-polyfill. Both the implementations help inform the API spec development, validate implementability atop native APIs (initial targets OpenVINO and DirectML, extensible with other backends), and provide a performance benchmark. 15:05:47 Rama has joined #webmachinelearning 15:05:58 ... Discuss the proposal to adopt webnn-native as a CG deliverable similarly to webnn-polyfill. No CG Charter changes needed, is considered "Other Software" per the existing charter text. 15:06:03 -> https://webmachinelearning.github.io/charter/#test-suites CG Charter: Test Suites and Other Software 15:06:07 "The group MAY produce test suites to support the Specifications. Please see the GitHub LICENSE file for test suite contribution licensing information." 15:06:47 ningxin_hu: I would like to add about the problems we want to solve with webnn-native 15:07:19 ... many discussions in this group are around native API implementability and compatibility, e.g. what ops can be mapped to native APIs, what params and options can be implemented 15:07:34 ... also performance prediction, what perf we can get by offloading to native APIs 15:07:59 ping_yu has joined #webmachinelearning 15:08:08 ... we haven't had a good tool to get answers to these questions, this proposal is to help get those answers and inform the API spec development 15:08:12 Present+ Ping_Yu 15:08:35 ningxin_hu: while webnn-polyfill is based on TF.js, this will be based on native APIs 15:08:59 Sandeep has joined #webmachinelearning 15:08:59 ... header file can be mapped to WebIDL from the WebNN API spec 15:09:10 ... arepresented as C/C++ interfaces 15:09:17 s/arepresented/represented 15:09:37 ... explainer enumerated backend targets, DirectML, OpenVINO initially 15:09:49 ... sample code can be written in C and C++ 15:10:06 ... we target a few important models first -- that's the basic idea 15:10:21 ... also this project should help with WebML-Wasm coordination 15:11:00 ... the plan is to have the code be compiled into Wasm 15:11:15 ... proposal here is to create a repo under the CG's GH org 15:11:27 ... this would be Apache 2.0 licensed 15:12:06 ... we can have some MVP deliverables for the first wave, e.g. minimal LeNet sample running with two backends 15:12:26 Present+ Sandeep_Gupta 15:12:35 Could a container be provided as well? 15:12:40 q? 15:13:31 zkis: Could a container be provided as well? 15:13:39 ningxin_hu: good questions, we can discuss in GH 15:13:52 ... primarily a source code release 15:14:11 zkis: asking because OpenVINO is already available as a container 15:15:07 zkis: another reason for containerization, Wasm also prefers that deployment model 15:15:24 q? 15:16:53 anssik: Chromium fork was hard to maintain, this proposal solves that issue I suppose, is these a plan to integrate this proposal with Chromium as e.g. a 3rd party dep? 15:18:03 ningxin_hu: once matured, other projects could adopt this, but that's beyond the initial goal of the project 15:18:09 q? 15:18:22 proposed RESOLUTION: Adopt webnn-native as "Other Software" deliverable, repo hosted at webmachinelearning/webnn-native 15:18:46 +1 its a good idea 15:18:53 +1 15:18:58 +1 15:19:34 RESOLUTION: Adopt webnn-native as "Other Software" deliverable, repo hosted at webmachinelearning/webnn-native 15:19:40 RRSAgent, draft minutes v2 15:19:40 I have made the request to generate https://www.w3.org/2021/01/21-webmachinelearning-minutes.html anssik 15:20:17 i can help with the reviews 15:20:44 TOPIC: WebNN conv2d layout parameter TensorFlow incompatibility 15:21:13 anssik: Discuss and gather further feedback on TF, TF Lite, and TF.js preference for input and filter layout approach in WebNN API 15:21:19 -> https://github.com/webmachinelearning/webnn/issues/125 TensorFlow conv2d expects channel_last filter layout regardless of input layout format #125 15:21:29 anssik: there seems to be a PR for this by Chai 15:21:35 -> https://github.com/webmachinelearning/webnn/pull/130 Support a separate filter layout formats and the optional bias tensor. #130 15:23:13 Chai: more flexible to have separate filter layout for conv2d, also lacks bias 1D tensor added as the last step of the output 15:23:24 ... appreciate review from folks 15:23:38 ... this is not a breaking change, adds to the existing API 15:24:10 ... would like to move optional parameters to the struct, if we need to do this in the future it'd be a breaking change 15:24:45 I will review the PR as well 15:25:25 TOPIC: Numerical precision in conformance testing 15:25:50 anssik: Discuss and solicit insights on difference between TF.js WebGL and CPU/Wasm backends 15:25:57 -> https://github.com/webmachinelearning/webnn-polyfill/pull/32 Add SqueezeNet model test 15:25:57 #32 15:26:02 Jonathan_ has joined #webmachinelearning 15:26:12 anssik: Ningxin has done some work and will give us an update? 15:26:27 Present+ Jonathan_Bingham 15:26:54 ningxin_hu: adds one 1st wave model as a test case SqueezeNet 15:27:32 ... adapts the SqueezeNet model, two opens for the group: 15:28:47 ... discussed in detail in the PR 15:29:06 https://github.com/webmachinelearning/webnn-polyfill/pull/32#issuecomment-763825323 15:30:37 ningxin_hu: second open regarding TF.js backend, supports multiple backends CPU Wasm, WebGL, but numerical precision differs 15:30:51 ... the CPU backend passes the two models in TF Lite and ONNX formats 15:31:08 ... GPU backend has some issues, leads to the failure of the two models 15:31:20 ... which backend we should use for the numeric accuracy test? 15:31:38 we have two settings, for webGL 2 epsilon set to e-3 and webGL 1 as e-1 15:31:51 ... my proposal is to use the accuracy setting, and use the CPU backend to test the numerical accuracy 15:32:02 q+ 15:32:24 Ping: Ningxin is right in that for CPU we have better accuracy 15:32:35 ... WebGL1 no float32 e.g. for iOS 15:33:23 ... leads to precision loss, for webGL 2 epsilon set to e-3 and webGL 1 as e-1 15:33:27 q? 15:33:29 ack chai 15:34:33 Chai: for the polyfill testing it might be OK, but from the spec itself, the reason to have conformance test is to ensure accuracy, there are so many frameworks using different criteria, so with multiple backends this becomes an issue 15:34:57 ... the whole point of conformance is universality, that's the statement from the principles 15:35:36 ... my second point, a data point, when we test we test on two levels: 1 model level, 2 op level 15:38:15 q+ 15:38:20 ack ningxin_hu 15:38:43 ningxin_hu: I'd like to comment about the test against the polyfill 15:39:22 1. two level conformance -- models and operators 15:39:32 ... polyfill is used as a tool to run the code, depending on the implementation of the polyfill e.g. with CPU backend accuracy satisfies the conformance test criteria 15:39:34 +1 Good to have requirement on both tolerance on op level and model level 15:40:05 2. for standard conformance, having a tolerance defined over standard double precision value ensures longevity 15:40:24 Ping: I agree with Chai we should have different tolerance level for op and model 15:40:32 ... target to have accurate output for the model 15:40:36 3. try to define tolerance in term of ULP instead of absolute distances 15:41:24 Ping: these ops may have certain tolerance, if people can not pass the conformance test, they might be in trouble 15:41:29 4. have different tolerance for different operation. dont use a single tolerance across everything -- that will be a least common denominator 15:41:42 q? 15:42:12 q? 15:42:56 ningxin_hu: I propose to merge #32 15:42:59 15:43:19 ... this PR uses different tolerance for two different models 15:43:56 ... tried to reference the respective native settings from ONNX and TF 15:44:12 15:44:39 Chai: PR#32 is fine to merged 15:44:59 I will take a closer look 15:45:19 anssik: after Ping's review, can merge 15:45:31 q? 15:45:42 TOPIC: NSNet2 sample and TF.js memory leak 15:45:58 anssik: Check TF.js upstream blocker status and discuss any other opens blocking PR 15:46:05 -> https://github.com/webmachinelearning/webnn-samples/pull/22 Add NSNet2 sample #22 15:46:17 anssik: memory leak issues seems to be solved now thanks to Ping and TF.js folks! 15:46:22 ... anything else blocking this PR? 15:46:46 yes, I will do that todya 15:46:53 sorry, I have to drop off now 15:47:04 anssik: Ping to look at PR#22, can merge once that's completed 15:47:28 TOPIC: Proposals for future work 15:47:48 anssik: Continue discuss proposals submitted for consideration for future work: 15:47:54 -> https://github.com/webmachinelearning/proposals/issues/1 Data processing by Wenhe Li 15:48:30 -> https://github.com/webmachinelearning/proposals/issues/2 Operation-specific APIs #2 by Jonathan 15:48:37 anssik: Chai had some feedback in this issue 15:49:25 Chai: I was just asking for more information so we can better understand the proposal 15:49:58 ... exactly what is the proposal, one way to clarify this is to define some samples or prototype functions 15:50:18 ... for example, looking at the WebNN graph API, there the currency is an Operand 15:50:29 ... that will eventually construct a Tensor 15:51:06 ... prototype functions would help us better understand what is the currency flowing through these functions 15:51:42 ... or are we talking of e.g. WebGL buffers? 15:52:01 Jonathan: agree pseudo code or proto example would make this clearer 15:52:14 ... started a conversation internally, we just haven't done that yet 15:52:44 ... I take an action item to deliver a pseudo code or prototype example 15:53:44 q? 15:54:53 TOPIC: Adjourn 15:54:58 RRSAgent, draft minutes v2 15:54:58 I have made the request to generate https://www.w3.org/2021/01/21-webmachinelearning-minutes.html anssik