14:47:49 RRSAgent has joined #webmachinelearning 14:47:49 logging to https://www.w3.org/2020/03/05-webmachinelearning-irc 14:47:54 Zakim has joined #webmachinelearning 14:48:08 RRSAgent, make logs public 14:48:10 Meeting: WebML CG Teleconference – 5 March 2020 14:48:15 Chair: Anssi 14:48:20 Agenda: https://github.com/webmachinelearning/meetings/blob/master/telcons/2020-03-05-agenda.md 14:48:26 Scribe: Anssi 14:48:37 scribeNick: anssik 14:48:40 Present+ Anssi_Kostiainen 14:48:57 RRSAgent, draft minutes v2 14:48:57 I have made the request to generate https://www.w3.org/2020/03/05-webmachinelearning-minutes.html anssik 14:56:35 Rafael has joined #webmachinelearning 14:58:44 Present+ Rafael_Cintron 15:00:21 Present+ Ningxin_Hu 15:00:31 Rama has joined #webmachinelearning 15:00:47 ningxin_hu has joined #webmachinelearning 15:01:03 Present+ Ganesan_Ramalingam 15:01:09 Present+ Ningxin_Hu 15:02:44 Jonathan has joined #webmachinelearning 15:03:02 Present+ Chai_Chaoweeraprasit 15:03:13 Present+ Jonathan_Bingham 15:03:43 TOPIC: conv2d op definition 15:03:46 daniel_smilkov has joined #webmachinelearning 15:03:49 PR reviewed and ready to land 15:03:55 Present+ Daniel_Smilkov 15:04:05 -> https://github.com/webmachinelearning/webnn/pull/43 Add conv2d (PR #43) 15:04:10 PROPOSED RESOLUTION: Merge PR#43 to add conv2d definition to the spec 15:04:13 Chai has joined #webmachinelearning 15:05:18 ningxin_hu: I see daniel and nikhil online, want to check the signature looks good 15:06:06 HTML preview of conv2d: https://pr-preview.s3.amazonaws.com/huningxin/webnn/pull/43.html#api-neuralnetworkcontext-conv2d 15:06:59 Nikhil: we haven't had time yet to look at this 15:07:09 anssik: ok to merge and evolve in subsequent PRs? 15:07:16 Nikhil: sounds good 15:07:42 Daniel: the same, looks good, will review the details later 15:07:55 RESOLUTION: Merge PR#43 to add conv2d definition to the spec 15:08:04 TOPIC: matMul op definition 15:08:13 -> https://github.com/webmachinelearning/webnn/issues/27 [op compatibility] matMul (issue #27) 15:08:27 -> https://github.com/webmachinelearning/webnn/blob/master/op_compatibility/matmul.md matMul compat table 15:10:05 ningxin_hu: the compat table for matMul op in GitHub in a familiar location at https://github.com/webmachinelearning/webnn/blob/master/op_compatibility/matmul.md 15:10:16 ... Chai helped with DirectML mapping 15:11:12 ... NNAPI does not have matMul defined, so looked at TF Lite matMul, references found in the doc 15:12:31 [discussing details of dimensionality] 15:13:23 ningxin_hu: NNAPI open question: NNAPI: for N-D output when N >2, is it correct to map TF-Lite Pack op to NNAPI ANEURALNETWORKS_RESHAPE and ANEURALNETWORKS_CONCATENATION ops? 15:14:25 q+ 15:15:03 anssik: can Nikhil find someone from Google to help with NNAPI specifics? 15:15:09 Nikhil: can look for a contact 15:15:15 ack Chai 15:16:04 Chai: ningxin starts from numpy, but not sure if that maps nicely to all these APIs 15:17:05 ... to multiply matrices, DNNL takes multiply-add approach 15:17:29 ... question to all, whether this would be considered instead or in addition 15:18:19 ... also does this group want single matMul that can handle N-dim tensors, or do genetic matMul and generic Gem 15:18:46 s/would be/should be 15:19:59 ningxin_hu: Chai's right re DNNL, but want to hear Nikhil's feedback 15:20:16 Daniel: the reason for not fusing things on the op level is we want to reduce the level of ops in the spec 15:20:27 ... if we allow fusion capability we might have more ops than we want 15:20:41 ... we want ops to do less things, and let compiler fuse things under the hood 15:20:41 s/gem/gemm/ 15:21:16 ... if we allow fusing on a logical level, we're leaking hw optimizations 15:21:25 should keep bias as its own op 15:21:37 .../should keep bias as its own op/... should keep bias as its own op 15:21:46 q+ 15:22:30 ack Chai 15:22:54 Chai: agree with Daniel's philosophy, a great topic 15:23:19 ... the context in which the compiler is able to use auto fusion, if not careful, hard to discover 15:23:44 ... say you have a graph that has multiply-add as to different ops, most hw able to fuse this bias piggybacking on it 15:23:56 ... question is how does the sw level know this context can be fused 15:24:12 ... in this struggle one idea in ONNX is called ONNX function 15:25:16 ... in that you define the whole op as a multiple-add function(?), then if the hw is not able to support mad that gets broken down to two ops it is able to support 15:25:45 ... wanted to make a data point, a great topic, everyone trying to address this problem on a native level 15:26:01 Nikhil: MLIR approach takes the function approach, pushing it entirely to the compiler 15:26:45 ... when downleveled, there are two components, folding weights and doing fusing, happens in the compiler entirely 15:26:56 ... I want to also throw another thing out there 15:27:02 ... something we've been thinking about at Google 15:27:45 ... op-level is the CG's current approach, another project we should pay attention to is XLA 15:28:09 ... lower level than ops, higher than hardware 15:28:18 ... designed to GPUs, has around 80 ops 15:28:45 ... people on XLA team say they can run every NN with this op set 15:29:17 ... a lot of backends for XLA 15:29:39 ... currently a Google project: https://www.tensorflow.org/xla/architecture 15:30:35 https://www.tensorflow.org/xla/architecture 15:30:43 https://www.tensorflow.org/xla/operation_semantics 15:31:36 Daniel: the primary motivation we're starting to be interested in XLA HLO, it is trying to remove reliance on custom ops 15:31:49 ... something around that level can likely stand the test of time 15:32:00 ... these ~80 ops haven't grown 15:32:15 ... much more stable than ONNX or TF Lite ops that grow faster 15:32:39 Nikhil: also want to bring some caveats of XLA HLO 15:32:54 ... the binary format not backwards compatible 15:33:01 ... this is clearly an issue for the Web 15:34:27 Chai: I believe, issue #41 has extensive discussion on the topic, XLA also discussed in it, see https://github.com/webmachinelearning/webnn/issues/41 15:35:51 ningxin: back to compat study findings 15:36:42 ... remaining opens in addition to NNAPI are MPS and BNNS 15:37:21 ... in MPS support matMul through FullyConnected 15:37:56 ... also MPSNDArrayMatrixMultiplication can handle matMul on MPS 15:38:14 ... help from Apple requested 15:39:19 anssik: any other comments or feedback? 15:39:21 [none] 15:39:33 TOPIC: Handling unsupported OperandType 15:39:40 -> https://github.com/webmachinelearning/webnn/issues/36 Handling unsupported OperandType (issue #36) 15:39:47 anssik: Discuss how to surface "datatype not supported by underlying platform" errors through the API 15:41:14 ningxin_hu: initial idea is to throw exception at compile time 15:41:35 Chai: I have another proposal, I believe in this case it should be error code instead of an exception 15:41:43 ... feedback provided on the issue 15:42:06 ... essentially, you don't want everything to be exception, only unrecoverable errors 15:42:19 ... everything errors should be signaled using error codes 15:42:56 ... the caller should fall back to compile the model with different options, that is recoverable error 15:43:07 ... do we need an error code, or simply return null? 15:43:20 ... no preference there, but prefer not to have it as an exception 15:43:55 Rafael: I agree with Chai, exceptions should be thrown when develop has done something totally wrong, in this case this is not the case 15:44:45 anssik: any prior examples from WebGL or WebGPU? 15:45:01 Rafael: yes, there's a bunch of those 15:46:54 https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2.1. You need to scroll down a little bit before you get to the failIfMajorPerformanceCaveat context attribute. 15:47:12 Chai: I'll look at WebGL examples and see how to adopt those patterns in WebNN 15:48:04 TOPIC: Inference API to load and run a model 15:48:27 -> https://github.com/webmachinelearning/webnn/issues/41 Revisit inference API to load and run a model (issue #41) 15:48:27 -> https://github.com/jbingham/web-ml-inference 15:49:21 anssik: Final call for feedback prior to adding this API into the group's scope 15:53:17 zkis has joined #webmachinelearning 15:53:56 Rafael: do we need to change the charter to take on this work? 15:55:16 anssik: not necessarily, I'll look into this and try to see if we can add this new proposal in scope without changing the charter 15:55:56 anssik: does someone thing this new proposal should NOT be incubate further? 15:56:07 [hearing no opposition] 15:56:27 Rafael: Microsoft would like to see load model API incubated in this CG 15:57:16 Jonathan: Google is in support of this proposal (obviously :-)) 15:59:22 Jonathan: about the charter, if we want to update it, based on comments from Microsoft, make a draft and not submit it before review 16:01:36 Rafael: that's how other CGs do it 16:03:33 TOPIC: Adjourn 16:03:40 RRSAgent, draft minutes v2 16:03:40 I have made the request to generate https://www.w3.org/2020/03/05-webmachinelearning-minutes.html anssik 16:04:11 Present+ Paul_McDaniel 16:04:18 RRSAgent, draft minutes v2 16:04:18 I have made the request to generate https://www.w3.org/2020/03/05-webmachinelearning-minutes.html anssik 18:29:08 Zakim has left #webmachinelearning 18:47:20 zkis has joined #webmachinelearning 19:36:22 zkis has joined #webmachinelearning