Return-Path: X-Original-To: apmail-singa-dev-archive@minotaur.apache.org Delivered-To: apmail-singa-dev-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 94E9617F6C for ; Fri, 19 Jun 2015 13:04:02 +0000 (UTC) Received: (qmail 21388 invoked by uid 500); 19 Jun 2015 13:04:02 -0000 Delivered-To: apmail-singa-dev-archive@singa.apache.org Received: (qmail 21365 invoked by uid 500); 19 Jun 2015 13:04:02 -0000 Mailing-List: contact dev-help@singa.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@singa.incubator.apache.org Delivered-To: mailing list dev@singa.incubator.apache.org Received: (qmail 21355 invoked by uid 99); 19 Jun 2015 13:04:02 -0000 Received: from Unknown (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 19 Jun 2015 13:04:02 +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 DF0AA18019D for ; Fri, 19 Jun 2015 13:04:01 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 0.97 X-Spam-Level: X-Spam-Status: No, score=0.97 tagged_above=-999 required=6.31 tests=[KAM_LAZY_DOMAIN_SECURITY=1, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, T_RP_MATCHES_RCVD=-0.01] autolearn=disabled 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 SeSwGG6_FMQS for ; Fri, 19 Jun 2015 13:04:00 +0000 (UTC) Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx1-us-west.apache.org (ASF Mail Server at mx1-us-west.apache.org) with SMTP id A080226199 for ; Fri, 19 Jun 2015 13:04:00 +0000 (UTC) Received: (qmail 21310 invoked by uid 99); 19 Jun 2015 13:04:00 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 19 Jun 2015 13:04:00 +0000 Date: Fri, 19 Jun 2015 13:04:00 +0000 (UTC) From: "wangwei (JIRA)" To: dev@singa.incubator.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Created] (SINGA-20) Web interface for launching training jobs MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 wangwei created SINGA-20: ---------------------------- Summary: Web interface for launching training jobs Key: SINGA-20 URL: https://issues.apache.org/jira/browse/SINGA-20 Project: Singa Issue Type: New Feature Reporter: wangwei Assignee: Jinyang Gao Job Launching. Currently users have to set the model and cluster configuration by writing the google protocol buffer files (e.g., model.conf and cluster.conf). However it is not easy for beginning users as it requires full understanding of all configuration fields. To make it easier, a web interface can be provided, which assist users to configure the cluster and model by providing hints and selections. For example, if a user wants to train a MLP model, then we only need to show him/her the fields necessary for layers of MLP model. To implement this feature, we need to do 1. write a daemon program to bridge SINGA system and the web interface. It receives start request (i.e., start training) from web browsers and runs the script (i.e., /bin/singa-run) to launch the training job. This program would later be implemented to handle other requests like performance report which is to visualize the training performance in real-time in the browsers. 2. decide the interface/format of communication message between the daemon program and the web browser. To launch a training job, two configuration files are necessary, i.e., cluster configuration and model configuration. Hence the start request should provide the corresponding configurations. Currently the configuration fields are defined using google protocol buffer format (e.g., model.proto and cluster.proto). However, the web pages are written in javascript which is more familiar with json format. Current solution is to write the configuration definition in json format and convert it into protocol buffer format using a simple script. The json format is like { "type": "message", "key": "ModelProto", "value": { ["qualifier": "required", "type": "string", "key": "name", "comment":"model name" ], ["qualifier": "repeated", "type": "LayerProto", "key": "layer", "comment":"layers" ], []... } } { "type": "message", "key": "LayerProto", "value": { ["qualifier": "optional", "type": "int", "key": "locationid", "default": 0, "comment":"location of the layer"], []... } } ... If the qualifier is "optional", then a default field must be provided. The web browser parses this json format file to determine the content of the web page, i.e., which configuration fields should be hidden or shown. The webpage should update automatically upon user's input. For example, if the user adds an inner product layer, then the configuration fields of that layer should be expanded. Once the user submit the job, the web browser should send all configurations to the daemon. The communication message is similar to the above snippet except that a value field is added for each key field. If the qualifier for one key is "repeated", then an array of values are added. The daemon program then converts the json code to the google protocol buffer messages like those in model.conf and cluster.conf. -- This message was sent by Atlassian JIRA (v6.3.4#6332)