Return-Path: X-Original-To: apmail-hama-dev-archive@www.apache.org Delivered-To: apmail-hama-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 18F3D17D0F for ; Fri, 3 Jul 2015 01:10:56 +0000 (UTC) Received: (qmail 43408 invoked by uid 500); 3 Jul 2015 01:10:55 -0000 Delivered-To: apmail-hama-dev-archive@hama.apache.org Received: (qmail 43375 invoked by uid 500); 3 Jul 2015 01:10:55 -0000 Mailing-List: contact dev-help@hama.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@hama.apache.org Delivered-To: mailing list dev@hama.apache.org Received: (qmail 43363 invoked by uid 99); 3 Jul 2015 01:10:55 -0000 Received: from Unknown (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 03 Jul 2015 01:10:55 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id CB29A1827B0 for ; Fri, 3 Jul 2015 01:10:54 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 2.879 X-Spam-Level: ** X-Spam-Status: No, score=2.879 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=3, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001] autolearn=disabled Authentication-Results: spamd3-us-west.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mx1-us-west.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id deM3pXuyEd6r for ; Fri, 3 Jul 2015 01:10:53 +0000 (UTC) Received: from mail-qk0-f173.google.com (mail-qk0-f173.google.com [209.85.220.173]) by mx1-us-west.apache.org (ASF Mail Server at mx1-us-west.apache.org) with ESMTPS id AA2DD2312D for ; Fri, 3 Jul 2015 01:10:52 +0000 (UTC) Received: by qkbp125 with SMTP id p125so64053958qkb.2 for ; Thu, 02 Jul 2015 18:10:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-type; bh=/n49eCc99c0+q2mucqmfIXl4/HXZ2G6udk/LrXASn5A=; b=OYbi2n1VSyVrp4Y3BzK8z6l6Hc9eLa+qf+JjGcCXMSw9GRQQjsGf4g0DrtmE3lYHUr 6D+CHboJ4J+KRjgR1UT9t5EX8+D1DWrcrpLfBPMzrHVVsm95jCV9mtYv0RxtQ0FAR9Wo hGXQG/hCFxZlEETKn6rihGMms9az8EzB5qQkNetLjx4CNB2Ztkp9GxS6/kN/3faqKyEw PfoPZgx7Wk7/gHYhWN6yIIVpcKcMxJWCDgWDf0Y2i3oNFxs0sYbcULSMrR9p7EG2fE7l igSOzMeCEn1JqtJ18fkmxGJdOUv7XjkdVuP9rrUmc0CfjRx6JgsAsqcQrby/Hk/Ww1vA k2DA== X-Received: by 10.140.218.5 with SMTP id o5mr49861407qhb.13.1435885845753; Thu, 02 Jul 2015 18:10:45 -0700 (PDT) MIME-Version: 1.0 Received: by 10.140.23.38 with HTTP; Thu, 2 Jul 2015 18:10:16 -0700 (PDT) In-Reply-To: References: From: =?UTF-8?B?SsO6bGlvIFBpcmVz?= Date: Thu, 2 Jul 2015 22:10:16 -0300 Message-ID: Subject: Re: Future plan for large scale DNN. To: dev@hama.apache.org Content-Type: multipart/alternative; boundary=001a1139b29cc634930519ee39d1 --001a1139b29cc634930519ee39d1 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable =E2=80=8B=E2=80=8B Hi =E2=80=8B =E2=80=8B Edward, very nice! 1) =E2=80=8B=E2=80=8B =E2=80=8B=E2=80=8B =E2=80=8B=E2=80=8B =E2=80=8BYou are planned others modes of training? (aka Backpropagation/onl= ine/etc.) 2) I suggest change setMomemtum to setMome*n*tum. Thanks! 2015-07-02 4:50 GMT-03:00 Edward J. Yoon : > Here's new user interface design idea I propose. Any advices are welcome! > > https://wiki.apache.org/hama/Neuron > > On Mon, Jun 29, 2015 at 4:38 PM, Edward J. Yoon > wrote: > > Hey all, > > > > As you know, the lastest Apache Hama provides distributed training of > > an Artificial Neural Network using its BSP computing engine. In > > general, the training data is stored in HDFS and is distributed in > > multiple machines. In Hama, two kinds of components are involved in > > the training procedure: the master task and the groom task. The master > > task is in charge of merging the model updating information and > > sending model updating information to all the groom tasks. The groom > > tasks is in charge of calculate the weight updates according to the > > training data. > > > > The training procedure is iterative and each iteration consists of > > two phases: update weights and merge update. In the update weights > > phase, each groom task would first update the local model according to > > the received message from the master task. Then they would compute the > > weight updates locally with assigned data partitions (mini-batch SGD) > > and finally send the updated weights to the master task. In the merge > > update phase, the master task would update the model according to the > > messages received from the groom tasks. Then it would distribute the > > updated model to all groom tasks. The two phases will repeat > > alternatively until the termination condition is met (reach a > > specified number of iterations). > > > > The model is designed in a hierarchical way. The base class is more > > abstract than the derived class, so that the structure of the ANN > > model can be freely set by the user, as long as it is a layered model. > > Therefore, the Perceptron, Auto-encoder, Linear and Logistic regressor > > can all be uniformly represented by an ANN. > > > > However, as described in above, currently the data parallelism is > > only used. Each node will have a copy of the model. In each iteration, > > the computation is conducted on each node and a final aggregation is > > conducted in one node. Then the updated model will be synchronized to > > each node. So, the performance is one thing; the parameters should fit > > into the memory of a single machine. > > > > Here is a tentative near future plan I propose for applications > > needing large model with huge memory consumptions, moderate > > computational power for one mini-batch, and lots of training data. The > > main idea is use of Parameter Server to parallelize model creation and > > distribute training across machines. Apache Hama framework assigns > > each split of training data stored in HDFS to each BSP task. Then, the > > BSP task assigns each of the N threads a small portion of work, much > > smaller than 1/Nth of the total size of a mini-batch, and assigns new > > portions whenever they are free. With this approach, faster threads do > > more work than slower threads. Each thread asynchronously asks the > > Parameter Server who stores the parameters in distributed machines for > > an updated copy of its model, computes the gradients on the assigned > > data, and sends updated gradients back to the parameter server. This > > architecture is inspired by Google's DistBelief (Jeff Dean et al, > > 2012). Finally, I have no concrete idea regarding programming > > interface at the moment but I'll try to provide neuron-centric > > programming model like Google's Pregel if possible. > > > > -- > > Best Regards, Edward J. Yoon > > > > -- > Best Regards, Edward J. Yoon > --001a1139b29cc634930519ee39d1--