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)