Author: buildbot
Date: Sun Jul 19 15:19:56 2015
New Revision: 958953
Log:
Staging update by buildbot for singa
Modified:
websites/staging/singa/trunk/content/ (props changed)
websites/staging/singa/trunk/content/community.html
websites/staging/singa/trunk/content/community/issue-tracking.html
websites/staging/singa/trunk/content/community/mail-lists.html
websites/staging/singa/trunk/content/community/source-repository.html
websites/staging/singa/trunk/content/community/team-list.html
websites/staging/singa/trunk/content/develop/contribute-code.html
websites/staging/singa/trunk/content/develop/contribute-docs.html
websites/staging/singa/trunk/content/develop/how-contribute.html
websites/staging/singa/trunk/content/develop/schedule.html
websites/staging/singa/trunk/content/docs.html
websites/staging/singa/trunk/content/docs/architecture.html
websites/staging/singa/trunk/content/docs/cnn.html
websites/staging/singa/trunk/content/docs/code-structure.html
websites/staging/singa/trunk/content/docs/communication.html
websites/staging/singa/trunk/content/docs/examples.html
websites/staging/singa/trunk/content/docs/installation.html
websites/staging/singa/trunk/content/docs/mlp.html
websites/staging/singa/trunk/content/docs/neuralnet-partition.html
websites/staging/singa/trunk/content/docs/programming-model.html
websites/staging/singa/trunk/content/index.html
websites/staging/singa/trunk/content/introduction.html
websites/staging/singa/trunk/content/quick-start.html
Propchange: websites/staging/singa/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Sun Jul 19 15:19:56 2015
@@ -1 +1 @@
-1691207
+1691832
Modified: websites/staging/singa/trunk/content/community.html
==============================================================================
--- websites/staging/singa/trunk/content/community.html (original)
+++ websites/staging/singa/trunk/content/community.html Sun Jul 19 15:19:56 2015
@@ -1,13 +1,13 @@
<!DOCTYPE html>
<!--
- | Generated by Apache Maven Doxia at 2015-07-15
+ | Generated by Apache Maven Doxia at 2015-07-19
| Rendered using Apache Maven Fluido Skin 1.4
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <meta name="Date-Revision-yyyymmdd" content="20150715" />
+ <meta name="Date-Revision-yyyymmdd" content="20150719" />
<meta http-equiv="Content-Language" content="en" />
<title>Apache SINGA – Community</title>
<link rel="stylesheet" href="./css/apache-maven-fluido-1.4.min.css" />
Modified: websites/staging/singa/trunk/content/community/issue-tracking.html
==============================================================================
--- websites/staging/singa/trunk/content/community/issue-tracking.html
(original)
+++ websites/staging/singa/trunk/content/community/issue-tracking.html Sun Jul
19 15:19:56 2015
@@ -1,13 +1,13 @@
<!DOCTYPE html>
<!--
- | Generated by Apache Maven Doxia at 2015-07-15
+ | Generated by Apache Maven Doxia at 2015-07-19
| Rendered using Apache Maven Fluido Skin 1.4
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <meta name="Date-Revision-yyyymmdd" content="20150715" />
+ <meta name="Date-Revision-yyyymmdd" content="20150719" />
<meta http-equiv="Content-Language" content="en" />
<title>Apache SINGA – Issue Tracking</title>
<link rel="stylesheet" href="../css/apache-maven-fluido-1.4.min.css" />
Modified: websites/staging/singa/trunk/content/community/mail-lists.html
==============================================================================
--- websites/staging/singa/trunk/content/community/mail-lists.html (original)
+++ websites/staging/singa/trunk/content/community/mail-lists.html Sun Jul 19
15:19:56 2015
@@ -1,13 +1,13 @@
<!DOCTYPE html>
<!--
- | Generated by Apache Maven Doxia at 2015-07-15
+ | Generated by Apache Maven Doxia at 2015-07-19
| Rendered using Apache Maven Fluido Skin 1.4
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <meta name="Date-Revision-yyyymmdd" content="20150715" />
+ <meta name="Date-Revision-yyyymmdd" content="20150719" />
<meta http-equiv="Content-Language" content="en" />
<title>Apache SINGA – Project Mailing Lists</title>
<link rel="stylesheet" href="../css/apache-maven-fluido-1.4.min.css" />
Modified: websites/staging/singa/trunk/content/community/source-repository.html
==============================================================================
--- websites/staging/singa/trunk/content/community/source-repository.html
(original)
+++ websites/staging/singa/trunk/content/community/source-repository.html Sun
Jul 19 15:19:56 2015
@@ -1,13 +1,13 @@
<!DOCTYPE html>
<!--
- | Generated by Apache Maven Doxia at 2015-07-15
+ | Generated by Apache Maven Doxia at 2015-07-19
| Rendered using Apache Maven Fluido Skin 1.4
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <meta name="Date-Revision-yyyymmdd" content="20150715" />
+ <meta name="Date-Revision-yyyymmdd" content="20150719" />
<meta http-equiv="Content-Language" content="en" />
<title>Apache SINGA – Source Repository</title>
<link rel="stylesheet" href="../css/apache-maven-fluido-1.4.min.css" />
Modified: websites/staging/singa/trunk/content/community/team-list.html
==============================================================================
--- websites/staging/singa/trunk/content/community/team-list.html (original)
+++ websites/staging/singa/trunk/content/community/team-list.html Sun Jul 19
15:19:56 2015
@@ -1,13 +1,13 @@
<!DOCTYPE html>
<!--
- | Generated by Apache Maven Doxia at 2015-07-15
+ | Generated by Apache Maven Doxia at 2015-07-19
| Rendered using Apache Maven Fluido Skin 1.4
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <meta name="Date-Revision-yyyymmdd" content="20150715" />
+ <meta name="Date-Revision-yyyymmdd" content="20150719" />
<meta http-equiv="Content-Language" content="en" />
<title>Apache SINGA – The SINGA Team</title>
<link rel="stylesheet" href="../css/apache-maven-fluido-1.4.min.css" />
Modified: websites/staging/singa/trunk/content/develop/contribute-code.html
==============================================================================
--- websites/staging/singa/trunk/content/develop/contribute-code.html (original)
+++ websites/staging/singa/trunk/content/develop/contribute-code.html Sun Jul
19 15:19:56 2015
@@ -1,13 +1,13 @@
<!DOCTYPE html>
<!--
- | Generated by Apache Maven Doxia at 2015-07-15
+ | Generated by Apache Maven Doxia at 2015-07-19
| Rendered using Apache Maven Fluido Skin 1.4
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <meta name="Date-Revision-yyyymmdd" content="20150715" />
+ <meta name="Date-Revision-yyyymmdd" content="20150719" />
<meta http-equiv="Content-Language" content="en" />
<title>Apache SINGA – How to Contribute Code</title>
<link rel="stylesheet" href="../css/apache-maven-fluido-1.4.min.css" />
Modified: websites/staging/singa/trunk/content/develop/contribute-docs.html
==============================================================================
--- websites/staging/singa/trunk/content/develop/contribute-docs.html (original)
+++ websites/staging/singa/trunk/content/develop/contribute-docs.html Sun Jul
19 15:19:56 2015
@@ -1,13 +1,13 @@
<!DOCTYPE html>
<!--
- | Generated by Apache Maven Doxia at 2015-07-15
+ | Generated by Apache Maven Doxia at 2015-07-19
| Rendered using Apache Maven Fluido Skin 1.4
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <meta name="Date-Revision-yyyymmdd" content="20150715" />
+ <meta name="Date-Revision-yyyymmdd" content="20150719" />
<meta http-equiv="Content-Language" content="en" />
<title>Apache SINGA – How to Contribute Documentation</title>
<link rel="stylesheet" href="../css/apache-maven-fluido-1.4.min.css" />
Modified: websites/staging/singa/trunk/content/develop/how-contribute.html
==============================================================================
--- websites/staging/singa/trunk/content/develop/how-contribute.html (original)
+++ websites/staging/singa/trunk/content/develop/how-contribute.html Sun Jul 19
15:19:56 2015
@@ -1,13 +1,13 @@
<!DOCTYPE html>
<!--
- | Generated by Apache Maven Doxia at 2015-07-15
+ | Generated by Apache Maven Doxia at 2015-07-19
| Rendered using Apache Maven Fluido Skin 1.4
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <meta name="Date-Revision-yyyymmdd" content="20150715" />
+ <meta name="Date-Revision-yyyymmdd" content="20150719" />
<meta http-equiv="Content-Language" content="en" />
<title>Apache SINGA – How to Contribute to SINGA</title>
<link rel="stylesheet" href="../css/apache-maven-fluido-1.4.min.css" />
Modified: websites/staging/singa/trunk/content/develop/schedule.html
==============================================================================
--- websites/staging/singa/trunk/content/develop/schedule.html (original)
+++ websites/staging/singa/trunk/content/develop/schedule.html Sun Jul 19
15:19:56 2015
@@ -1,13 +1,13 @@
<!DOCTYPE html>
<!--
- | Generated by Apache Maven Doxia at 2015-07-15
+ | Generated by Apache Maven Doxia at 2015-07-19
| Rendered using Apache Maven Fluido Skin 1.4
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <meta name="Date-Revision-yyyymmdd" content="20150715" />
+ <meta name="Date-Revision-yyyymmdd" content="20150719" />
<meta http-equiv="Content-Language" content="en" />
<title>Apache SINGA – Development Schedule</title>
<link rel="stylesheet" href="../css/apache-maven-fluido-1.4.min.css" />
Modified: websites/staging/singa/trunk/content/docs.html
==============================================================================
--- websites/staging/singa/trunk/content/docs.html (original)
+++ websites/staging/singa/trunk/content/docs.html Sun Jul 19 15:19:56 2015
@@ -1,13 +1,13 @@
<!DOCTYPE html>
<!--
- | Generated by Apache Maven Doxia at 2015-07-15
+ | Generated by Apache Maven Doxia at 2015-07-19
| Rendered using Apache Maven Fluido Skin 1.4
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <meta name="Date-Revision-yyyymmdd" content="20150715" />
+ <meta name="Date-Revision-yyyymmdd" content="20150719" />
<meta http-equiv="Content-Language" content="en" />
<title>Apache SINGA – Documentation</title>
<link rel="stylesheet" href="./css/apache-maven-fluido-1.4.min.css" />
Modified: websites/staging/singa/trunk/content/docs/architecture.html
==============================================================================
--- websites/staging/singa/trunk/content/docs/architecture.html (original)
+++ websites/staging/singa/trunk/content/docs/architecture.html Sun Jul 19
15:19:56 2015
@@ -1,13 +1,13 @@
<!DOCTYPE html>
<!--
- | Generated by Apache Maven Doxia at 2015-07-15
+ | Generated by Apache Maven Doxia at 2015-07-19
| Rendered using Apache Maven Fluido Skin 1.4
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <meta name="Date-Revision-yyyymmdd" content="20150715" />
+ <meta name="Date-Revision-yyyymmdd" content="20150719" />
<meta http-equiv="Content-Language" content="en" />
<title>Apache SINGA – System Architecture</title>
<link rel="stylesheet" href="../css/apache-maven-fluido-1.4.min.css" />
Modified: websites/staging/singa/trunk/content/docs/cnn.html
==============================================================================
--- websites/staging/singa/trunk/content/docs/cnn.html (original)
+++ websites/staging/singa/trunk/content/docs/cnn.html Sun Jul 19 15:19:56 2015
@@ -1,13 +1,13 @@
<!DOCTYPE html>
<!--
- | Generated by Apache Maven Doxia at 2015-07-15
+ | Generated by Apache Maven Doxia at 2015-07-19
| Rendered using Apache Maven Fluido Skin 1.4
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <meta name="Date-Revision-yyyymmdd" content="20150715" />
+ <meta name="Date-Revision-yyyymmdd" content="20150719" />
<meta http-equiv="Content-Language" content="en" />
<title>Apache SINGA – </title>
<link rel="stylesheet" href="../css/apache-maven-fluido-1.4.min.css" />
Modified: websites/staging/singa/trunk/content/docs/code-structure.html
==============================================================================
--- websites/staging/singa/trunk/content/docs/code-structure.html (original)
+++ websites/staging/singa/trunk/content/docs/code-structure.html Sun Jul 19
15:19:56 2015
@@ -1,13 +1,13 @@
<!DOCTYPE html>
<!--
- | Generated by Apache Maven Doxia at 2015-07-15
+ | Generated by Apache Maven Doxia at 2015-07-19
| Rendered using Apache Maven Fluido Skin 1.4
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <meta name="Date-Revision-yyyymmdd" content="20150715" />
+ <meta name="Date-Revision-yyyymmdd" content="20150719" />
<meta http-equiv="Content-Language" content="en" />
<title>Apache SINGA – Code Structure</title>
<link rel="stylesheet" href="../css/apache-maven-fluido-1.4.min.css" />
Modified: websites/staging/singa/trunk/content/docs/communication.html
==============================================================================
--- websites/staging/singa/trunk/content/docs/communication.html (original)
+++ websites/staging/singa/trunk/content/docs/communication.html Sun Jul 19
15:19:56 2015
@@ -1,13 +1,13 @@
<!DOCTYPE html>
<!--
- | Generated by Apache Maven Doxia at 2015-07-15
+ | Generated by Apache Maven Doxia at 2015-07-19
| Rendered using Apache Maven Fluido Skin 1.4
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <meta name="Date-Revision-yyyymmdd" content="20150715" />
+ <meta name="Date-Revision-yyyymmdd" content="20150719" />
<meta http-equiv="Content-Language" content="en" />
<title>Apache SINGA – Communication</title>
<link rel="stylesheet" href="../css/apache-maven-fluido-1.4.min.css" />
Modified: websites/staging/singa/trunk/content/docs/examples.html
==============================================================================
--- websites/staging/singa/trunk/content/docs/examples.html (original)
+++ websites/staging/singa/trunk/content/docs/examples.html Sun Jul 19 15:19:56
2015
@@ -1,13 +1,13 @@
<!DOCTYPE html>
<!--
- | Generated by Apache Maven Doxia at 2015-07-15
+ | Generated by Apache Maven Doxia at 2015-07-19
| Rendered using Apache Maven Fluido Skin 1.4
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <meta name="Date-Revision-yyyymmdd" content="20150715" />
+ <meta name="Date-Revision-yyyymmdd" content="20150719" />
<meta http-equiv="Content-Language" content="en" />
<title>Apache SINGA – </title>
<link rel="stylesheet" href="../css/apache-maven-fluido-1.4.min.css" />
Modified: websites/staging/singa/trunk/content/docs/installation.html
==============================================================================
--- websites/staging/singa/trunk/content/docs/installation.html (original)
+++ websites/staging/singa/trunk/content/docs/installation.html Sun Jul 19
15:19:56 2015
@@ -1,13 +1,13 @@
<!DOCTYPE html>
<!--
- | Generated by Apache Maven Doxia at 2015-07-15
+ | Generated by Apache Maven Doxia at 2015-07-19
| Rendered using Apache Maven Fluido Skin 1.4
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <meta name="Date-Revision-yyyymmdd" content="20150715" />
+ <meta name="Date-Revision-yyyymmdd" content="20150719" />
<meta http-equiv="Content-Language" content="en" />
<title>Apache SINGA – Installation</title>
<link rel="stylesheet" href="../css/apache-maven-fluido-1.4.min.css" />
Modified: websites/staging/singa/trunk/content/docs/mlp.html
==============================================================================
--- websites/staging/singa/trunk/content/docs/mlp.html (original)
+++ websites/staging/singa/trunk/content/docs/mlp.html Sun Jul 19 15:19:56 2015
@@ -1,13 +1,13 @@
<!DOCTYPE html>
<!--
- | Generated by Apache Maven Doxia at 2015-07-15
+ | Generated by Apache Maven Doxia at 2015-07-19
| Rendered using Apache Maven Fluido Skin 1.4
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <meta name="Date-Revision-yyyymmdd" content="20150715" />
+ <meta name="Date-Revision-yyyymmdd" content="20150719" />
<meta http-equiv="Content-Language" content="en" />
<title>Apache SINGA – </title>
<link rel="stylesheet" href="../css/apache-maven-fluido-1.4.min.css" />
Modified: websites/staging/singa/trunk/content/docs/neuralnet-partition.html
==============================================================================
--- websites/staging/singa/trunk/content/docs/neuralnet-partition.html
(original)
+++ websites/staging/singa/trunk/content/docs/neuralnet-partition.html Sun Jul
19 15:19:56 2015
@@ -1,13 +1,13 @@
<!DOCTYPE html>
<!--
- | Generated by Apache Maven Doxia at 2015-07-15
+ | Generated by Apache Maven Doxia at 2015-07-19
| Rendered using Apache Maven Fluido Skin 1.4
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <meta name="Date-Revision-yyyymmdd" content="20150715" />
+ <meta name="Date-Revision-yyyymmdd" content="20150719" />
<meta http-equiv="Content-Language" content="en" />
<title>Apache SINGA – Neural Network Partition</title>
<link rel="stylesheet" href="../css/apache-maven-fluido-1.4.min.css" />
Modified: websites/staging/singa/trunk/content/docs/programming-model.html
==============================================================================
--- websites/staging/singa/trunk/content/docs/programming-model.html (original)
+++ websites/staging/singa/trunk/content/docs/programming-model.html Sun Jul 19
15:19:56 2015
@@ -1,15 +1,15 @@
<!DOCTYPE html>
<!--
- | Generated by Apache Maven Doxia at 2015-07-15
+ | Generated by Apache Maven Doxia at 2015-07-19
| Rendered using Apache Maven Fluido Skin 1.4
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <meta name="Date-Revision-yyyymmdd" content="20150715" />
+ <meta name="Date-Revision-yyyymmdd" content="20150719" />
<meta http-equiv="Content-Language" content="en" />
- <title>Apache SINGA – Programming Model</title>
+ <title>Apache SINGA – Model Configuration</title>
<link rel="stylesheet" href="../css/apache-maven-fluido-1.4.min.css" />
<link rel="stylesheet" href="../css/site.css" />
<link rel="stylesheet" href="../css/print.css" media="print" />
@@ -173,7 +173,7 @@
Apache SINGA</a>
<span class="divider">/</span>
</li>
- <li class="active ">Programming Model</li>
+ <li class="active ">Model Configuration</li>
@@ -364,106 +364,241 @@
<div id="bodyColumn" class="span10" >
<div class="section">
-<h2><a name="Programming_Model"></a>Programming Model</h2>
-<p>We describe the programming model of SINGA in this article. Base data
structures are introduced firstly, and then we show examples for users with
different levels of deep learning background.</p>
+<h2><a name="Model_Configuration"></a>Model Configuration</h2>
+<p>SINGA uses the stochastic gradient descent (SGD) algorithm to train
parameters of deep learning models. For each SGD iteration, there is a [Worker]
computing gradients of parameters from the NeuralNet and a [Updater] updating
parameter values based on gradients. Hence the model configuration mainly
consists these three parts. We will introduce the NeuralNet, Worker and Updater
in the following paragraphs and describe the configurations for them.</p></div>
<div class="section">
-<h3><a name="Base_Data_Structures"></a>Base Data Structures</h3>
+<h2><a name="NeuralNet"></a>NeuralNet</h2>
<div class="section">
-<h4><a name="Layer"></a>Layer</h4>
-<p>Layer is the first class citizen in SINGA. Users construct their deep
learning models by creating layer objects and combining them. SINGA takes care
of running BackPropagation (or Contrastive Divergence) algorithms to calculate
the gradients for parameters and calling <a href="#updater">Updaters</a> to
update them.</p>
+<h3><a name="Deep_learning_training"></a>Deep learning training</h3>
+<p>Deep learning is labeled as a feature learning technique, which usually
consists of multiple layers. Each layer is associated a feature transformation
function. After going through all layers, the raw input feature (e.g., pixels
of images) would be converted into a high-level feature that is easier for
tasks like classification. </p>
+<p>Training a deep learning model is to find the optimal parameters involved
in the transformation functions that generates good features for specific
tasks. The goodness of a set of parameters is measured by a loss function,
e.g., [Cross-Entropy Loss]. Since the loss functions are usually non-linear and
non-convex, it is difficult to get a closed form solution. Normally, people
uses the SGD algorithm which randomly initializes the parameters and then
iteratively update them to reduce the loss.</p></div>
+<div class="section">
+<h3><a name="Uniform_model_representation"></a>Uniform model
representation</h3>
+<p>Many deep learning models have being proposed. Figure 1 is a categorization
of popular deep learning models based on the layer connections. The NeuralNet
abstraction of SINGA consists of multiple directed connected layers. This
abstraction is able to represent models from all the three categorizations.</p>
+<p>*For the feed-forward models, their connections are already directed. </p>
+<p>*For the RNN models, we unroll them into directed connections, as shown in
Figure 2.</p>
+<p>*For the undirected connections in RBM, DBM, etc., we replace each
undirected connection with two directed connection, as shown in Figure 3.</p>
+<p>In specific, the NeuralNet class is defined in [neuralnet.h] :</p>
<div class="source">
-<div class="source"><pre class="prettyprint">class Layer{
- /**
- * Setup layer properties.
- * Setup the shapes for data and parameters, also setup some properties
- * based on the layer configuration and connected src layers.
- * @param conf user defined layer configuration of type
[LayerProto](#netproto)
- * @param srclayers layers connecting to this layer
- */
- Setup(conf, srclayers);
- /**
- * Setup the layer properties.
- * This function is called if the model is partitioned due to distributed
- * training. Shape of the layer is already set by the partition algorithm,
- * and is passed in to set other properties.
- * @param conf user defined layer configuration of type
[LayerProto](#netproto)
- * @param shape shape set by partition algorithm (for distributed training).
- * @param srclayers layers connecting to this layer
- */
- SetupAfterPartition(conf, shape, srclayers);
- /**
- * Compute features of this layer based on connected layers.
- * BP and CD will call this to calculate gradients
- * @param training boolean phase indicator for training or test
- * @param srclayers layers connecting to this layer
- */
- ComputeFeature(training, srclayers);
- /**
- * Compute gradients for parameters and connected layers.
- * BP and CD will call this to calculate gradients
- * @param srclayers layers connecting to this layer.
- */
- ComputeGradient(srclayers)=0;
-}
+<div class="source"><pre class="prettyprint">...
+vector<Layer*> layers_;
+...
+</pre></div></div>
+<p>The Layer class is defined in [base_layer.h]:</p>
+
+<div class="source">
+<div class="source"><pre class="prettyprint">vector<Layer*> srclayers_,
dstlayers_;
+LayerProto layer_proto_; // layer configuration, including meta info, e.g.,
name
+...
</pre></div></div>
-<p>The above pseudo code shows the base Layer class. Users override these
methods to implement their own layer classes. For example, we have implemented
popular layers like ConvolutionLayer, InnerProductLayer. We also provide a
DataLayer which is a base layer for loading (and prefetching) data from disk or
HDFS. A base ParserLayer is created for parsing the raw data and convert it
into records that are recognizable by SINGA.</p></div>
+<p>The connection with other layers are kept in the <tt>srclayers_</tt> and
<tt>dstlayers_</tt>. Since there are many different feature transformations,
there are many different [Layer implementations] correspondingly. For those
layers which have parameters in their feature transformation functions, they
would have Param instances in the layer class, e.g.,</p>
+
+<div class="source">
+<div class="source"><pre class="prettyprint">Param weight;
+</pre></div></div></div>
<div class="section">
-<h4><a name="NetProto"></a>NetProto</h4>
-<p>Since deep learning models consist of multiple layers. The model structure
includes the properties of each layer and the connections between layers. SINGA
uses google protocol buffer for users to configure the model structure. The
protocol buffer message for the model structure is defined as:</p>
+<h3><a name="Configure_the_structure_of_a_NeuralNet_instance"></a>Configure
the structure of a NeuralNet instance</h3>
+<p>To train a deep learning model, the first step is to write the
configurations for the model structure, i.e., the layers and connections for
the NeuralNet. Like Caffe, we use the [Google Protocol Buffer] to define the
configuration schema, the NetProto specifies the configuration fields for a
NeuralNet instance,</p>
+<p>message NetProto { repeated LayerProto layer = 1; … }</p>
+<p>The configuration is then</p>
<div class="source">
-<div class="source"><pre class="prettyprint">NetProto{
- repeated LayerProto layer;
+<div class="source"><pre class="prettyprint">layer {
+ // layer configuration
+}
+layer {
+ // layer configuration
}
+...
+</pre></div></div>
+<p>To configure the model structure, we just configure each layer involved in
the model.</p>
-LayerProto{
- string name; // user defined layer name for displaying
- string type; // One layer class has a unique type.
- repeated string srclayer_name; // connected layer names;
- repeated ParamProto param; // parameter configurations
+<div class="source">
+<div class="source"><pre class="prettyprint">message LayerProto {
+ // the layer name used for identification
+ required string name = 1;
+ // source layer names
+ repeated string srclayers = 3;
+ // parameters, e.g., weight matrix or bias vector
+ repeated ParamProto param = 12;
+ // the layer type from the enum above
+ required LayerType type = 20;
+ // configuration for convolution layer
+ optional ConvolutionProto convolution_conf = 30;
+ // configuration for concatenation layer
+ optional ConcateProto concate_conf = 31;
+ // configuration for dropout layer
+ optional DropoutProto dropout_conf = 33;
...
}
</pre></div></div>
-<p>Users can create a plain text file and fill it with the configurations.
SINGA parses it according to user provided path.</p></div>
-<div class="section">
-<h4><a name="Param"></a>Param</h4>
-<p>The Param class is shown below. Users do not need to extend the Param class
for most cases. We make it a base class just for future extension. For example,
if a new initialization trick is proposed in the future, we can override the
<tt>Init</tt> method to implement it.</p>
+<p>A sample configuration for a feed-forward model is like</p>
<div class="source">
-<div class="source"><pre class="prettyprint">Param{
- /**
- * Set properties of the parameter.
- * @param conf user defined parameter configuration of type ParamProto
- * @param shape shape of the parameter
- Setup(conf, shape);
- /**
- * Initialize the data of the parameter.
- /
- Init();
- ...// methods to handle synchronizations with parameter servers and other
workers
+<div class="source"><pre class="prettyprint">layer {
+ name : "data"
+ type : kDataShard
}
-</pre></div></div></div>
+layer {
+ name : "image"
+ type : kImageParser
+ srclayers : "data"
+}
+layer {
+ name : "conv"
+ type : kConvolution
+ srclayers : "image"
+ param {
+ // configuration for parameter
+ }
+ conv_conf {
+ // configuration for convolution operations
+ }
+ ...
+}
+</pre></div></div>
+<p>The layer type list is defined in [model.proto]. One type (kFoo)
corresponds to one child class of Layer (FooLayer) and one configuration field
(foo<i>conf). SINGA will infer the dstlayers</i> of each layer after reading
the configuration for all layers. Developers can implement new layers and
update the type list, then users can use the layer. [layer] describes the
configurations of current built-in layers.</p>
+<p>Figure 4 shows the model structure corresponding to the neural network
configuration in [cifar10/model.conf].</p></div></div>
<div class="section">
-<h4><a name="Updater"></a>Updater</h4>
-<p>There are many SGD extensions for updating parameters, like <a
class="externalLink" href="http://arxiv.org/pdf/1212.5701v1.pdf">AdaDelta</a>,
<a class="externalLink"
href="http://www.magicbroom.info/Papers/DuchiHaSi10.pdf">AdaGrad</a>, <a
class="externalLink"
href="http://www.cs.toronto.edu/~tijmen/csc321/slides/lecture_slides_lec6.pdf">RMSProp</a>,
<a class="externalLink"
href="http://scholar.google.com/citations?view_op=view_citation&hl=en&user=DJ8Ep8YAAAAJ&citation_for_view=DJ8Ep8YAAAAJ:hkOj_22Ku90C">Nesterov</a>
and SGD with momentum. We provide a base Updater to deal with these
algorithms. New parameter updating algorithms can be added by extending the
base Updater.</p>
+<h2><a name="Worker"></a>Worker</h2>
+<p>At the beginning, the Work will initialize the values of Param instances of
each layer either randomly (according to user configured distribution) or load
from a [checkpoint file]. For each training iteration, the worker visits layers
of the neural network to compute gradients of Param instances of each layer.
Corresponding to the three categories of models, there are three different
algorithm to compute the gradients of a neural network. </p>
+
+<ol style="list-style-type: decimal">
+
+<li>Back-propagation (BP) for feed-forward models</li>
+
+<li>Back-propagation through time (BPTT) for recurrent neural networks</li>
+
+<li>Contrastive divergence (CD) for RBM, DBM, etc models.</li>
+</ol>
+<p>SINGA has provided these three algorithms as three Worker implementations.
Users only need to configure in the model.conf file to specify which algorithm
should be used. The configuration protocol is</p>
<div class="source">
-<div class="source"><pre class="prettyprint">Updater{
- /**
- * @param proto user configuration for the updater.
- Init(conf);
- /**
- * Update parameter based on its gradient
- * @param step training step
- * @param param the Param object
+<div class="source"><pre class="prettyprint">message ModelProto {
+ ...
+ enum GradCalcAlg {
+ // BP algorithm for feed-forward models, e.g., CNN, MLP, RNN
+ kBP = 1;
+ // BPTT for recurrent neural networks
+ kBPTT = 2;
+ // CD algorithm for RBM, DBM etc., models
+ kCd = 3;
+ }
+ // gradient calculation algorithm
+ required GradCalcAlg alg = 8 [default = kBackPropagation];
+ ...
+}
+</pre></div></div>
+<p>These algorithms override the TrainOneBatch function of the Worker, e.g.,
the BPWorker implement it as</p>
+
+<div class="source">
+<div class="source"><pre class="prettyprint">void BPWorker::TrainOneBatch(int
step, Metric* perf) {
+ Forward(step, kTrain, train_net_, perf);
+ Backward(step, train_net_);
+}
+</pre></div></div>
+<p>The Forward function pass the raw input features of one mini-batch through
all layers, and the Backward function visits the layers in reverse order to
compute the gradients of the loss w.r.t each layer’s feature and each
layer’s Param objects. Different algorithms would visit the layers in
different orders. Some may traverses the neural network multiple times, e.g.,
the CDWorker’s TrainOneBatch function is:</p>
+
+<div class="source">
+<div class="source"><pre class="prettyprint">void CDWorker::TrainOneBatch(int
step, Metric* perf) {
+ PostivePhase(step, kTrain, train_net_, perf);
+ NegativePhase(step, kTran, train_net_, perf);
+ GradientPhase(step, train_net_);
+}
+</pre></div></div>
+<p>But all algorithms will finally call the two functions of the Layer
class:</p>
+
+<div class="source">
+<div class="source"><pre class="prettyprint"> /**
+ * Transform features from connected layers into features of this layer.
+ *
+ * @param phase kTrain, kTest, kPositive, etc.
+ */
+ virtual void ComputeFeature(Phase phase, Metric* perf) = 0;
+ /**
+ * Compute gradients for parameters (and connected layers).
+ *
+ * @param phase kTrain, kTest, kPositive, etc.
*/
- Update(step, param);
+ virtual void ComputeGradient(Phase phase) = 0;
+</pre></div></div>
+<p>All Layer implementation must implement the above two functions. </p></div>
+<div class="section">
+<h2><a name="Updater"></a>Updater</h2>
+<p>Once the gradients of parameters are computed, the Updater will update
parameter values. There are many SGD variants for updating parameters, like <a
class="externalLink" href="http://arxiv.org/pdf/1212.5701v1.pdf">AdaDelta</a>,
<a class="externalLink"
href="http://www.magicbroom.info/Papers/DuchiHaSi10.pdf">AdaGrad</a>, <a
class="externalLink"
href="http://www.cs.toronto.edu/~tijmen/csc321/slides/lecture_slides_lec6.pdf">RMSProp</a>,
<a class="externalLink"
href="http://scholar.google.com/citations?view_op=view_citation&hl=en&user=DJ8Ep8YAAAAJ&citation_for_view=DJ8Ep8YAAAAJ:hkOj_22Ku90C">Nesterov</a>
and SGD with momentum. The core function of the Updater is</p>
+
+<div class="source">
+<div class="source"><pre class="prettyprint">/**
+ * Update parameter values based on gradients
+ * @param step training step
+ * @param param pointer to the Param object
+ * @param grad_scale scaling factor for the gradients
+ */
+void Update(int step, Param* param, float grad_scale=1.0f);
+/**
+ * @param step training step
+ * @return the learning rate for this step
+ */
+float GetLearningRate(int step);
+</pre></div></div>
+<p>SINGA provides several built-in updaters and learning rate change methods,
users can configure them according the the [UpdaterProto]</p>
+
+<div class="source">
+<div class="source"><pre class="prettyprint">message UpdaterProto {
+ enum UpdaterType{
+ // noraml SGD with momentum and weight decay
+ kSGD = 1;
+ // adaptive subgradient, http://www.magicbroom.info/Papers/DuchiHaSi10.pdf
+ kAdaGrad = 2;
+ // http://www.cs.toronto.edu/~tijmen/csc321/slides/lecture_slides_lec6.pdf
+ kRMSProp = 3;
+ // Nesterov first optimal gradient method
+ kNesterov = 4;
+ }
+ // updater type
+ required UpdaterType type = 1 [default=kSGD];
+ // configuration for RMSProp algorithm
+ optional RMSPropProto rmsprop_conf = 50;
+
+ enum ChangeMethod {
+ kFixed = 0;
+ kInverseT = 1;
+ kInverse = 2;
+ kExponential = 3;
+ kLinear = 4;
+ kStep = 5;
+ kFixedStep = 6;
+ }
+ // change method for learning rate
+ required ChangeMethod lr_change= 2 [default = kFixed];
+
+ optional FixedStepProto fixedstep_conf=40;
+ ...
+ optional float momentum = 31 [default = 0];
+ optional float weight_decay = 32 [default = 0];
+ // base learning rate
+ optional float base_lr = 34 [default = 0];
}
-</pre></div></div></div></div>
+</pre></div></div></div>
<div class="section">
-<h3><a name="Examples"></a>Examples</h3>
-<p>The <a href="..">MLP example</a> shows how to configure the model through
google protocol buffer.</p></div></div>
+<h2><a name="Other_model_configuration_fields"></a>Other model configuration
fields</h2>
+<p>Some other important configuration fields for training a deep learning
model is listed:</p>
+
+<div class="source">
+<div class="source"><pre class="prettyprint">// model name, e.g.,
"cifar10-dcnn", "mnist-mlp"
+required string name = 1;
+// frequency of displaying training info
+required int32 display_frequency = 3 ;
+// total num of steps for training
+required int32 train_steps = 5;
+... // step, frequency for validation and test
+// frequency of checkpoint
+optional int32 checkpoint_frequency = 34 [default = 0];
+// checkpoint path
+optional bool resume = 36 [default = false];
+</pre></div></div>
+<p>The pages of [checkpoint and restore], [validation and test] have more
details on related fields.</p></div>
</div>
</div>
</div>
Modified: websites/staging/singa/trunk/content/index.html
==============================================================================
--- websites/staging/singa/trunk/content/index.html (original)
+++ websites/staging/singa/trunk/content/index.html Sun Jul 19 15:19:56 2015
@@ -1,13 +1,13 @@
<!DOCTYPE html>
<!--
- | Generated by Apache Maven Doxia at 2015-07-15
+ | Generated by Apache Maven Doxia at 2015-07-19
| Rendered using Apache Maven Fluido Skin 1.4
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <meta name="Date-Revision-yyyymmdd" content="20150715" />
+ <meta name="Date-Revision-yyyymmdd" content="20150719" />
<meta http-equiv="Content-Language" content="en" />
<title>Apache SINGA – Welcome to Apache SINGA</title>
<link rel="stylesheet" href="./css/apache-maven-fluido-1.4.min.css" />
Modified: websites/staging/singa/trunk/content/introduction.html
==============================================================================
--- websites/staging/singa/trunk/content/introduction.html (original)
+++ websites/staging/singa/trunk/content/introduction.html Sun Jul 19 15:19:56
2015
@@ -1,13 +1,13 @@
<!DOCTYPE html>
<!--
- | Generated by Apache Maven Doxia at 2015-07-15
+ | Generated by Apache Maven Doxia at 2015-07-19
| Rendered using Apache Maven Fluido Skin 1.4
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <meta name="Date-Revision-yyyymmdd" content="20150715" />
+ <meta name="Date-Revision-yyyymmdd" content="20150719" />
<meta http-equiv="Content-Language" content="en" />
<title>Apache SINGA – Introduction</title>
<link rel="stylesheet" href="./css/apache-maven-fluido-1.4.min.css" />
Modified: websites/staging/singa/trunk/content/quick-start.html
==============================================================================
--- websites/staging/singa/trunk/content/quick-start.html (original)
+++ websites/staging/singa/trunk/content/quick-start.html Sun Jul 19 15:19:56
2015
@@ -1,13 +1,13 @@
<!DOCTYPE html>
<!--
- | Generated by Apache Maven Doxia at 2015-07-15
+ | Generated by Apache Maven Doxia at 2015-07-19
| Rendered using Apache Maven Fluido Skin 1.4
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <meta name="Date-Revision-yyyymmdd" content="20150715" />
+ <meta name="Date-Revision-yyyymmdd" content="20150719" />
<meta http-equiv="Content-Language" content="en" />
<title>Apache SINGA – Quick Start</title>
<link rel="stylesheet" href="./css/apache-maven-fluido-1.4.min.css" />