Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id AC1E6200D26 for ; Fri, 20 Oct 2017 17:50:49 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id AA86C160BCB; Fri, 20 Oct 2017 15:50:49 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id C8EAD1609E1 for ; Fri, 20 Oct 2017 17:50:48 +0200 (CEST) Received: (qmail 9918 invoked by uid 500); 20 Oct 2017 15:50:48 -0000 Mailing-List: contact dev-help@mxnet.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@mxnet.incubator.apache.org Delivered-To: mailing list dev@mxnet.incubator.apache.org Received: (qmail 9906 invoked by uid 99); 20 Oct 2017 15:50:47 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 20 Oct 2017 15:50:47 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id D5C6FC542D for ; Fri, 20 Oct 2017 15:50:46 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 2.929 X-Spam-Level: ** X-Spam-Status: No, score=2.929 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_REPLY=1, HTML_MESSAGE=2, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_SORBS_SPAM=0.5, SPF_PASS=-0.001] autolearn=disabled Authentication-Results: spamd1-us-west.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id EMwSGgusY3P3 for ; Fri, 20 Oct 2017 15:50:45 +0000 (UTC) Received: from mail-it0-f50.google.com (mail-it0-f50.google.com [209.85.214.50]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with ESMTPS id 485405FCD4 for ; Fri, 20 Oct 2017 15:50:44 +0000 (UTC) Received: by mail-it0-f50.google.com with SMTP id n195so14493850itg.0 for ; Fri, 20 Oct 2017 08:50:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=KwyPD0aOCfAsARryBT0F9s99NH0X2BmK0Bgxa1pidrA=; b=OLLMG7J2cruDWGmNnsXEhsrIZasYBa+gaH0xSpejR/Itm8JkedxMQbu6VH2oZ0T+rL de9lrScZ+yO8yRh3Bgmqr3Q+0iviypbKqit1U5jMAxDjuV9aE9tzfypX7YKB05iX0mbw TvFuIGhak3fgxaf5GI63GKhtzBrpmkmG3lRkO6RAtjse/F+5PuuMURJ0j5ac0YDewXau /z6wBVnkEo4l8DDjVnqKkOHHuqoR9qgxrTTA1163iVTT9OF9o78MVToYwqAzfsEAtJM3 jmF60eYEUA6+cSibQYL1SeLWO2rJpgvtfwBn8h7gzp/QIHbo58aXmxESsGbUq3uXTUKE jYgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=KwyPD0aOCfAsARryBT0F9s99NH0X2BmK0Bgxa1pidrA=; b=sOraGSQIb7+otrgWctYWwkflONuWndJU6wvECJoAdedwej+kjRJ7/YFBcyU8/LnxgT SkBz/3H80fPk8ncq/i8QuozyDiRsx+DzkogS8rl6o0fpikPoIqQobtFcfKlJV2abRvB7 xwZ1z12vBcnQnJYiotS1buBo/9pP3P1Y/Zfww6D9iZYByJDf1qwBl2YIuQjJoNC0jqce tqoAQB6rCpX6eblPZUjRRu3hfyOMOD6ZNXc4p4MAZtJyqTXoIxyGlhx0iR9YWO9yRDnw xupVmDmwKhbZ6qbyIJlzt8TO80yBrFMmnWNQyYMZwK6DlJ9UA1LCfFwn6sxMRatbuB4d G8MA== X-Gm-Message-State: AMCzsaWSDMo5u3Lx0wJHJHzM493CkbpbXAxjmErGEsh91HsWkk1FRZH9 fdKiu3Xc13weidihppc5/DESE4HwPHNViiHfbzw= X-Google-Smtp-Source: ABhQp+QBzLAaR6Cre3koAN8OCzLeO3dsbd1VPXynOoTZnPiufJrWpdd4VE4UZ+TJ1Dtjpe6x4mlhhx0A97UM6nAXohU= X-Received: by 10.36.76.1 with SMTP id a1mr3181056itb.94.1508514642814; Fri, 20 Oct 2017 08:50:42 -0700 (PDT) MIME-Version: 1.0 Received: by 10.107.7.161 with HTTP; Fri, 20 Oct 2017 08:50:42 -0700 (PDT) In-Reply-To: References: <915ECA45-2CA1-4E34-864B-CFF6ABEDAF33@gmail.com> From: Chris Olivier Date: Fri, 20 Oct 2017 08:50:42 -0700 Message-ID: Subject: Re: The Exchange Layer Support of MXNet To: dev@mxnet.incubator.apache.org Content-Type: multipart/alternative; boundary="001a11447da46c914d055bfc6f02" archived-at: Fri, 20 Oct 2017 15:50:49 -0000 --001a11447da46c914d055bfc6f02 Content-Type: text/plain; charset="UTF-8" Thansk for that explanation! What is meant by the "core ops"? Are these the gluon python ops? I know what the "legacy ops" are -- things like BatchNormProp/BatchNormOp. WHat are the "new ones"? I apologize for not knowing this, but what are some of the "pain points" with the legacy ops? Not in great detail, but would just like to get a little perspective. Thanks, -Chris On Fri, Oct 20, 2017 at 8:42 AM, Tianqi Chen wrote: > First of all, I agree that supporting the format as an important step of > adding influence. We are going to do it in either options. The overhead of > engineering is not that much difference. I also do not argue for specific > types of APIs(gluon vs symbolic) we should use. > > MXNet Sym API contains two elements: > > - 1) The graph manipulation API > - 2) The operator defs > > The graph manipulation API has been serving us great and we should be keep > using it for whatever purposes we have. However, the operator definitions > has been involved for two years and there are quite a few pains in legacy > operator and attributes. The new remodeled gluon API is much cleaner. > While there is a gap between the current operator def and gluon's API, we > want to shift defs toward gluon style operator defs (NOTE this do not mean > imperative only, just to make operator def align with numpy and gluon). > > What I am proposing is to have a clear document and list of "core operator > defs" we want to prioritize in terms of supporting exchange offers > optimization. Having such document, gives us and others a clear reference > on what we need, and what is needed in order to give good external support > to ApacheMXNet. > > The MXNet/gluon or nnvm/top is such initial set of operator defs that is > proposed. By canonicalizing the current MXNet op defs into this "core set", > and using it as a center for talking to other exchange format gives the > advantage of the things we mentioned above. > > Going through the path have second major advantage, because it > enables(answering your question on what compilation mean) > mxnet->core ops -> nnvm compiler-> bare metal(javascript, ARM, > AMDGPU, Metal) > > While in theory we can also do mxnet->onnx-> nnvm compiler, This is a more > twisted path as the exchange format do not preserve information and subject > to change. While going through the core ops offers bi-directional exchange > with mxnet, and directly doing that in memory. The compilation path is not > offered if we do not go through the core ops, because the graph > optimization can take great advantage of a clear core set of operators. > > To facilitate discussion technically. I would suggest we break our points > down. I tried to do that in this email on things we agree on and have > opions. So we can find common ground and move forward. > > > Tianqi > > > > On 10/19/17, 20:43, "Tianqi Chen" > tqchen@cs.washington.edu> wrote: > > > > I will start forking the previous discussion and it has gone awry > and I > > hope to start a pure technical discussion thread. > > > > I said in another email that we could do a vote to settle this issue. > > I now > > think that I was wrong and would like to apology for my rush proposal > > on > > this. > > > > I hope to reopen this email thread to gain consensus on what we want. > > There > > has been express of concerns that the code should reside on > ApacheMXNet > > repo. I think that discussion is already over and at least I would > > want the > > code to be in the repo as long as we reach the consensus. > > > > The leftover point is how should we do it. There are two ways of > doing > > this > > > > 1) Doing it on top of existing Symbol API. > > 2) Moving most of the exchange layer on standardized core operator > set, > > namely mxnet/gluon spec. > > > > Both approaches are feasible. There is some advocation on which way > > might > > be simpler, but the additional effort of engineering won't be that > > much. > > The reason why I am seeing this decision so seriously is that it will > > affect how we can influence the design of the exchange format we act > > on, and > > how easily it is to integrate future features that are made > available. > > > > I am in favor of (2) because technically it gives us a clean future > > compatibility, offers compilation and articulates clearly what > > ApacheMXNet's stance on core operators. > > These things could bring more impact to the community in general. > > > > Tianqi > > > > > > > > > --001a11447da46c914d055bfc6f02--