You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@singa.apache.org by wa...@apache.org on 2020/09/24 02:49:57 UTC

[singa-site] branch master updated: update docs for v3.1.0.rc1

This is an automated email from the ASF dual-hosted git repository.

wangwei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/singa-site.git


The following commit(s) were added to refs/heads/master by this push:
     new 19f64c2  update docs for v3.1.0.rc1
19f64c2 is described below

commit 19f64c2c67f25551ddd6ae1c50cb403e04af2d30
Author: wang wei <wa...@gmail.com>
AuthorDate: Thu Sep 24 10:49:29 2020 +0800

    update docs for v3.1.0.rc1
---
 content/docs/3.0.0.rc1/autograd.html         |   2 +-
 content/docs/3.0.0.rc1/autograd/index.html   |   2 +-
 content/docs/3.0.0.rc1/dist-train.html       |   2 +-
 content/docs/3.0.0.rc1/dist-train/index.html |   2 +-
 content/docs/assets/singav3.1-sw.png         | Bin 0 -> 20083 bytes
 content/docs/autograd.html                   |   2 +-
 content/docs/autograd/index.html             |   2 +-
 content/docs/next/autograd.html              |  24 ++---
 content/docs/next/autograd/index.html        |  24 ++---
 content/docs/next/build.html                 |   2 +-
 content/docs/next/build/index.html           |   2 +-
 content/docs/next/contribute-code.html       |   6 +-
 content/docs/next/contribute-code/index.html |   6 +-
 content/docs/next/contribute-docs.html       |   2 +-
 content/docs/next/contribute-docs/index.html |   2 +-
 content/docs/next/device.html                |   2 +-
 content/docs/next/device/index.html          |   2 +-
 content/docs/next/dist-train.html            |  99 +++++++++++-------
 content/docs/next/dist-train/index.html      |  99 +++++++++++-------
 content/docs/next/download-singa.html        |   2 +-
 content/docs/next/download-singa/index.html  |   2 +-
 content/docs/next/examples.html              |  22 +++-
 content/docs/next/examples/index.html        |  22 +++-
 content/docs/next/git-workflow.html          |   2 +-
 content/docs/next/git-workflow/index.html    |   2 +-
 content/docs/next/graph.html                 | 148 +++++++++++++++------------
 content/docs/next/graph/index.html           | 148 +++++++++++++++------------
 content/docs/next/how-to-release.html        |   2 +-
 content/docs/next/how-to-release/index.html  |   2 +-
 content/docs/next/installation.html          |  18 ++--
 content/docs/next/installation/index.html    |  18 ++--
 content/docs/next/onnx.html                  | 121 +++++++++++-----------
 content/docs/next/onnx/index.html            | 121 +++++++++++-----------
 content/docs/next/software-stack.html        |  27 +++--
 content/docs/next/software-stack/index.html  |  27 +++--
 content/docs/next/team-list.html             |  14 +--
 content/docs/next/team-list/index.html       |  14 +--
 content/docs/next/tensor.html                | 121 ++++++++++++++--------
 content/docs/next/tensor/index.html          | 121 ++++++++++++++--------
 content/docs/next/wheel-cpu-dev.html         |   2 +-
 content/docs/next/wheel-cpu-dev/index.html   |   2 +-
 content/docs/next/wheel-cpu.html             |   8 +-
 content/docs/next/wheel-cpu/index.html       |   8 +-
 content/docs/next/wheel-gpu-dev.html         |   2 +-
 content/docs/next/wheel-gpu-dev/index.html   |   2 +-
 content/docs/next/wheel-gpu.html             |  11 +-
 content/docs/next/wheel-gpu/index.html       |  11 +-
 content/docs/onnx.html                       |   2 +-
 content/docs/onnx/index.html                 |   2 +-
 content/en/index.html                        |   2 +-
 content/img/singav3.1-sw.png                 | Bin 0 -> 16821 bytes
 content/index.html                           |   2 +-
 52 files changed, 766 insertions(+), 524 deletions(-)

diff --git a/content/docs/3.0.0.rc1/autograd.html b/content/docs/3.0.0.rc1/autograd.html
index 621e466..25905cb 100644
--- a/content/docs/3.0.0.rc1/autograd.html
+++ b/content/docs/3.0.0.rc1/autograd.html
@@ -275,7 +275,7 @@ model.graph(graph, sequential)
 <p>Refer
 <a href="https://singa.readthedocs.io/en/latest/docs/autograd.html#module-singa.autograd">here</a>
 for more details of Python API.</p>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/9/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/3.0.0.rc1/tensor"><span class="arrow-prev">← </span><span>Tensor</span></a><a class="docs-next button" href="/docs/3.0.0.rc1/graph"><span>Computational Graph</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#relevant-modules">Relevant Modules</a><ul class= [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/9/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/3.0.0.rc1/tensor"><span class="arrow-prev">← </span><span>Tensor</span></a><a class="docs-next button" href="/docs/3.0.0.rc1/graph"><span>Model</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#relevant-modules">Relevant Modules</a><ul class="toc-headings" [...]
    The Apache Software Foundation. All rights reserved.
    Apache SINGA, Apache, the Apache feather logo, and
    the Apache SINGA project logos are trademarks of The
diff --git a/content/docs/3.0.0.rc1/autograd/index.html b/content/docs/3.0.0.rc1/autograd/index.html
index 621e466..25905cb 100644
--- a/content/docs/3.0.0.rc1/autograd/index.html
+++ b/content/docs/3.0.0.rc1/autograd/index.html
@@ -275,7 +275,7 @@ model.graph(graph, sequential)
 <p>Refer
 <a href="https://singa.readthedocs.io/en/latest/docs/autograd.html#module-singa.autograd">here</a>
 for more details of Python API.</p>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/9/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/3.0.0.rc1/tensor"><span class="arrow-prev">← </span><span>Tensor</span></a><a class="docs-next button" href="/docs/3.0.0.rc1/graph"><span>Computational Graph</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#relevant-modules">Relevant Modules</a><ul class= [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/9/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/3.0.0.rc1/tensor"><span class="arrow-prev">← </span><span>Tensor</span></a><a class="docs-next button" href="/docs/3.0.0.rc1/graph"><span>Model</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#relevant-modules">Relevant Modules</a><ul class="toc-headings" [...]
    The Apache Software Foundation. All rights reserved.
    Apache SINGA, Apache, the Apache feather logo, and
    the Apache SINGA project logos are trademarks of The
diff --git a/content/docs/3.0.0.rc1/dist-train.html b/content/docs/3.0.0.rc1/dist-train.html
index dcf468c..a433569 100644
--- a/content/docs/3.0.0.rc1/dist-train.html
+++ b/content/docs/3.0.0.rc1/dist-train.html
@@ -397,7 +397,7 @@ partitioned, so that each process can evaluate the sub-gradient based on the
 partitioned training data. Once the sub-gradient is calculated on each
 processes, the overall stochastic gradient is obtained by all-reducing the
 sub-gradients evaluated by all processes.</p>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/9/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/3.0.0.rc1/graph"><span class="arrow-prev">← </span><span>Computational Graph</span></a><a class="docs-next button" href="/docs/3.0.0.rc1/download-singa"><span>Download SINGA</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#usage">Usage</a><ul class="toc-h [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/9/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/3.0.0.rc1/graph"><span class="arrow-prev">← </span><span>Model</span></a><a class="docs-next button" href="/docs/3.0.0.rc1/download-singa"><span>Download SINGA</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#usage">Usage</a><ul class="toc-headings"><li>< [...]
    The Apache Software Foundation. All rights reserved.
    Apache SINGA, Apache, the Apache feather logo, and
    the Apache SINGA project logos are trademarks of The
diff --git a/content/docs/3.0.0.rc1/dist-train/index.html b/content/docs/3.0.0.rc1/dist-train/index.html
index dcf468c..a433569 100644
--- a/content/docs/3.0.0.rc1/dist-train/index.html
+++ b/content/docs/3.0.0.rc1/dist-train/index.html
@@ -397,7 +397,7 @@ partitioned, so that each process can evaluate the sub-gradient based on the
 partitioned training data. Once the sub-gradient is calculated on each
 processes, the overall stochastic gradient is obtained by all-reducing the
 sub-gradients evaluated by all processes.</p>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/9/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/3.0.0.rc1/graph"><span class="arrow-prev">← </span><span>Computational Graph</span></a><a class="docs-next button" href="/docs/3.0.0.rc1/download-singa"><span>Download SINGA</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#usage">Usage</a><ul class="toc-h [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/9/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/3.0.0.rc1/graph"><span class="arrow-prev">← </span><span>Model</span></a><a class="docs-next button" href="/docs/3.0.0.rc1/download-singa"><span>Download SINGA</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#usage">Usage</a><ul class="toc-headings"><li>< [...]
    The Apache Software Foundation. All rights reserved.
    Apache SINGA, Apache, the Apache feather logo, and
    the Apache SINGA project logos are trademarks of The
diff --git a/content/docs/assets/singav3.1-sw.png b/content/docs/assets/singav3.1-sw.png
new file mode 100644
index 0000000..2bfd2c0
Binary files /dev/null and b/content/docs/assets/singav3.1-sw.png differ
diff --git a/content/docs/autograd.html b/content/docs/autograd.html
index 79607db..69863f4 100644
--- a/content/docs/autograd.html
+++ b/content/docs/autograd.html
@@ -275,7 +275,7 @@ model.graph(graph, sequential)
 <p>Refer
 <a href="https://singa.readthedocs.io/en/latest/docs/autograd.html#module-singa.autograd">here</a>
 for more details of Python API.</p>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/9/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/tensor"><span class="arrow-prev">← </span><span>Tensor</span></a><a class="docs-next button" href="/docs/graph"><span>Computational Graph</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#relevant-modules">Relevant Modules</a><ul class="toc-headings"><li>< [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/9/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/tensor"><span class="arrow-prev">← </span><span>Tensor</span></a><a class="docs-next button" href="/docs/graph"><span>Model</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#relevant-modules">Relevant Modules</a><ul class="toc-headings"><li><a href="#tenso [...]
    The Apache Software Foundation. All rights reserved.
    Apache SINGA, Apache, the Apache feather logo, and
    the Apache SINGA project logos are trademarks of The
diff --git a/content/docs/autograd/index.html b/content/docs/autograd/index.html
index 79607db..69863f4 100644
--- a/content/docs/autograd/index.html
+++ b/content/docs/autograd/index.html
@@ -275,7 +275,7 @@ model.graph(graph, sequential)
 <p>Refer
 <a href="https://singa.readthedocs.io/en/latest/docs/autograd.html#module-singa.autograd">here</a>
 for more details of Python API.</p>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/9/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/tensor"><span class="arrow-prev">← </span><span>Tensor</span></a><a class="docs-next button" href="/docs/graph"><span>Computational Graph</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#relevant-modules">Relevant Modules</a><ul class="toc-headings"><li>< [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/9/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/tensor"><span class="arrow-prev">← </span><span>Tensor</span></a><a class="docs-next button" href="/docs/graph"><span>Model</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#relevant-modules">Relevant Modules</a><ul class="toc-headings"><li><a href="#tenso [...]
    The Apache Software Foundation. All rights reserved.
    Apache SINGA, Apache, the Apache feather logo, and
    the Apache SINGA project logos are trademarks of The
diff --git a/content/docs/next/autograd.html b/content/docs/next/autograd.html
index 40cb807..2bd1a2f 100644
--- a/content/docs/next/autograd.html
+++ b/content/docs/next/autograd.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -211,16 +211,16 @@ propagation.</p>
         <span class="hljs-keyword">for</span> p, gp <span class="hljs-keyword">in</span> autograd.backward(loss):  <span class="hljs-comment"># auto backward</span>
             sgd.update(p, gp)
 </code></pre>
-<h3><a class="anchor" aria-hidden="true" id="using-the-module-api"></a><a href="#using-the-module-api" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
+<h3><a class="anchor" aria-hidden="true" id="using-the-model-api"></a><a href="#using-the-model-api" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
 <p>The following
-<a href="https://github.com/apache/singa/blob/master/examples/autograd/cnn_module.py">example</a>
-implements a CNN model using the Module provided by the module.</p>
-<h4><a class="anchor" aria-hidden="true" id="define-the-subclass-of-module"></a><a href="#define-the-subclass-of-module" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
-<p>Define the model class, it should be the subclass of the Module. In this way,
-all operations used during traing phase will form a calculation graph and will
-be analyzed. The operations in the graph will be scheduled and executed
-efficiently. Layers can also be included in the module class.</p>
-<pre><code class="hljs css language-python"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">MLP</span><span class="hljs-params">(module.Module)</span>:</span>  <span class="hljs-comment"># the model is a subclass of Module</span>
+<a href="https://github.com/apache/singa/blob/master/examples/cnn/model/cnn.py">example</a>
+implements a CNN model using the <a href="./graph">Model API</a>.</p>
+<h4><a class="anchor" aria-hidden="true" id="define-the-subclass-of-model"></a><a href="#define-the-subclass-of-model" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 [...]
+<p>Define the model class, it should be the subclass of Model. In this way, all
+operations used during the training phase will form a computational graph and
+will be analyzed. The operations in the graph will be scheduled and executed
+efficiently. Layers can also be included in the model class.</p>
+<pre><code class="hljs css language-python"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">MLP</span><span class="hljs-params">(model.Model)</span>:</span>  <span class="hljs-comment"># the model is a subclass of Model</span>
 
     <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__init__</span><span class="hljs-params">(self, optimizer)</span>:</span>
         super(MLP, self).__init__()
@@ -273,9 +273,9 @@ model.graph(graph, sequential)
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="python-api"></a><a href="#python-api" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p>Refer
-<a href="https://singa.readthedocs.io/en/latest/docs/autograd.html#module-singa.autograd">here</a>
+<a href="https://singa.readthedocs.io/en/latest/autograd.html#module-singa.autograd">here</a>
 for more details of Python API.</p>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/9/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/next/tensor"><span class="arrow-prev">← </span><span>Tensor</span></a><a class="docs-next button" href="/docs/next/graph"><span>Computational Graph</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#relevant-modules">Relevant Modules</a><ul class="toc-headi [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 9/23/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/next/tensor"><span class="arrow-prev">← </span><span>Tensor</span></a><a class="docs-next button" href="/docs/next/graph"><span>Model</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#relevant-modules">Relevant Modules</a><ul class="toc-headings"><li><a h [...]
    The Apache Software Foundation. All rights reserved.
    Apache SINGA, Apache, the Apache feather logo, and
    the Apache SINGA project logos are trademarks of The
diff --git a/content/docs/next/autograd/index.html b/content/docs/next/autograd/index.html
index 40cb807..2bd1a2f 100644
--- a/content/docs/next/autograd/index.html
+++ b/content/docs/next/autograd/index.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -211,16 +211,16 @@ propagation.</p>
         <span class="hljs-keyword">for</span> p, gp <span class="hljs-keyword">in</span> autograd.backward(loss):  <span class="hljs-comment"># auto backward</span>
             sgd.update(p, gp)
 </code></pre>
-<h3><a class="anchor" aria-hidden="true" id="using-the-module-api"></a><a href="#using-the-module-api" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
+<h3><a class="anchor" aria-hidden="true" id="using-the-model-api"></a><a href="#using-the-model-api" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
 <p>The following
-<a href="https://github.com/apache/singa/blob/master/examples/autograd/cnn_module.py">example</a>
-implements a CNN model using the Module provided by the module.</p>
-<h4><a class="anchor" aria-hidden="true" id="define-the-subclass-of-module"></a><a href="#define-the-subclass-of-module" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
-<p>Define the model class, it should be the subclass of the Module. In this way,
-all operations used during traing phase will form a calculation graph and will
-be analyzed. The operations in the graph will be scheduled and executed
-efficiently. Layers can also be included in the module class.</p>
-<pre><code class="hljs css language-python"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">MLP</span><span class="hljs-params">(module.Module)</span>:</span>  <span class="hljs-comment"># the model is a subclass of Module</span>
+<a href="https://github.com/apache/singa/blob/master/examples/cnn/model/cnn.py">example</a>
+implements a CNN model using the <a href="./graph">Model API</a>.</p>
+<h4><a class="anchor" aria-hidden="true" id="define-the-subclass-of-model"></a><a href="#define-the-subclass-of-model" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 [...]
+<p>Define the model class, it should be the subclass of Model. In this way, all
+operations used during the training phase will form a computational graph and
+will be analyzed. The operations in the graph will be scheduled and executed
+efficiently. Layers can also be included in the model class.</p>
+<pre><code class="hljs css language-python"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">MLP</span><span class="hljs-params">(model.Model)</span>:</span>  <span class="hljs-comment"># the model is a subclass of Model</span>
 
     <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__init__</span><span class="hljs-params">(self, optimizer)</span>:</span>
         super(MLP, self).__init__()
@@ -273,9 +273,9 @@ model.graph(graph, sequential)
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="python-api"></a><a href="#python-api" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p>Refer
-<a href="https://singa.readthedocs.io/en/latest/docs/autograd.html#module-singa.autograd">here</a>
+<a href="https://singa.readthedocs.io/en/latest/autograd.html#module-singa.autograd">here</a>
 for more details of Python API.</p>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/9/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/next/tensor"><span class="arrow-prev">← </span><span>Tensor</span></a><a class="docs-next button" href="/docs/next/graph"><span>Computational Graph</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#relevant-modules">Relevant Modules</a><ul class="toc-headi [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 9/23/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/next/tensor"><span class="arrow-prev">← </span><span>Tensor</span></a><a class="docs-next button" href="/docs/next/graph"><span>Model</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#relevant-modules">Relevant Modules</a><ul class="toc-headings"><li><a h [...]
    The Apache Software Foundation. All rights reserved.
    Apache SINGA, Apache, the Apache feather logo, and
    the Apache SINGA project logos are trademarks of The
diff --git a/content/docs/next/build.html b/content/docs/next/build.html
index 61138d3..bc7b06f 100644
--- a/content/docs/next/build.html
+++ b/content/docs/next/build.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/next/build/index.html b/content/docs/next/build/index.html
index 61138d3..bc7b06f 100644
--- a/content/docs/next/build/index.html
+++ b/content/docs/next/build/index.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/next/contribute-code.html b/content/docs/next/contribute-code.html
index ea3ad2d..729e16f 100644
--- a/content/docs/next/contribute-code.html
+++ b/content/docs/next/contribute-code.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -154,8 +154,8 @@ the updated Python files to replace those in the Python installation folder,</p>
 <pre><code class="hljs css language-shell">cp python/singa/xx.py  &lt;path to conda&gt;/lib/python3.7/site-packages/singa/
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="workflow"></a><a href="#workflow" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>Please refer to the <a href="./git-workflow">git workflow page</a>.</p>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/13/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/next/build"><span class="arrow-prev">← </span><span>Build SINGA from Source</span></a><a class="docs-next button" href="/docs/next/contribute-docs"><span>How to Contribute to Documentation</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#coding-style">Co [...]
+<p>Please refer to the <a href="/docs/next/git-workflow">git workflow page</a>.</p>
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 5/9/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/next/build"><span class="arrow-prev">← </span><span>Build SINGA from Source</span></a><a class="docs-next button" href="/docs/next/contribute-docs"><span>How to Contribute to Documentation</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#coding-style">Cod [...]
    The Apache Software Foundation. All rights reserved.
    Apache SINGA, Apache, the Apache feather logo, and
    the Apache SINGA project logos are trademarks of The
diff --git a/content/docs/next/contribute-code/index.html b/content/docs/next/contribute-code/index.html
index ea3ad2d..729e16f 100644
--- a/content/docs/next/contribute-code/index.html
+++ b/content/docs/next/contribute-code/index.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -154,8 +154,8 @@ the updated Python files to replace those in the Python installation folder,</p>
 <pre><code class="hljs css language-shell">cp python/singa/xx.py  &lt;path to conda&gt;/lib/python3.7/site-packages/singa/
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="workflow"></a><a href="#workflow" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>Please refer to the <a href="./git-workflow">git workflow page</a>.</p>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/13/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/next/build"><span class="arrow-prev">← </span><span>Build SINGA from Source</span></a><a class="docs-next button" href="/docs/next/contribute-docs"><span>How to Contribute to Documentation</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#coding-style">Co [...]
+<p>Please refer to the <a href="/docs/next/git-workflow">git workflow page</a>.</p>
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 5/9/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/next/build"><span class="arrow-prev">← </span><span>Build SINGA from Source</span></a><a class="docs-next button" href="/docs/next/contribute-docs"><span>How to Contribute to Documentation</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#coding-style">Cod [...]
    The Apache Software Foundation. All rights reserved.
    Apache SINGA, Apache, the Apache feather logo, and
    the Apache SINGA project logos are trademarks of The
diff --git a/content/docs/next/contribute-docs.html b/content/docs/next/contribute-docs.html
index 264d8f7..ff5bedf 100644
--- a/content/docs/next/contribute-docs.html
+++ b/content/docs/next/contribute-docs.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/next/contribute-docs/index.html b/content/docs/next/contribute-docs/index.html
index 264d8f7..ff5bedf 100644
--- a/content/docs/next/contribute-docs/index.html
+++ b/content/docs/next/contribute-docs/index.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/next/device.html b/content/docs/next/device.html
index 1703bf2..90f4798 100644
--- a/content/docs/next/device.html
+++ b/content/docs/next/device.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/next/device/index.html b/content/docs/next/device/index.html
index 1703bf2..90f4798 100644
--- a/content/docs/next/device/index.html
+++ b/content/docs/next/device/index.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/next/dist-train.html b/content/docs/next/dist-train.html
index 9046a7b..a2abdd0 100644
--- a/content/docs/next/dist-train.html
+++ b/content/docs/next/dist-train.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -90,36 +90,62 @@ a <a href="">Colab notebook</a> for it.</p>
 <ol>
 <li>Define the neural network model:</li>
 </ol>
-<pre><code class="hljs css language-python"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">CNN</span>:</span>
-    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__init__</span><span class="hljs-params">(self)</span>:</span>
-        self.conv1 = autograd.Conv2d(<span class="hljs-number">1</span>, <span class="hljs-number">20</span>, <span class="hljs-number">5</span>, padding=<span class="hljs-number">0</span>)
-        self.conv2 = autograd.Conv2d(<span class="hljs-number">20</span>, <span class="hljs-number">50</span>, <span class="hljs-number">5</span>, padding=<span class="hljs-number">0</span>)
-        self.linear1 = autograd.Linear(<span class="hljs-number">4</span> * <span class="hljs-number">4</span> * <span class="hljs-number">50</span>, <span class="hljs-number">500</span>)
-        self.linear2 = autograd.Linear(<span class="hljs-number">500</span>, <span class="hljs-number">10</span>)
-        self.pooling1 = autograd.MaxPool2d(<span class="hljs-number">2</span>, <span class="hljs-number">2</span>, padding=<span class="hljs-number">0</span>)
-        self.pooling2 = autograd.MaxPool2d(<span class="hljs-number">2</span>, <span class="hljs-number">2</span>, padding=<span class="hljs-number">0</span>)
+<pre><code class="hljs css language-python"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">CNN</span><span class="hljs-params">(model.Model)</span>:</span>
+
+    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__init__</span><span class="hljs-params">(self, num_classes=<span class="hljs-number">10</span>, num_channels=<span class="hljs-number">1</span>)</span>:</span>
+        super(CNN, self).__init__()
+        self.conv1 = layer.Conv2d(num_channels, <span class="hljs-number">20</span>, <span class="hljs-number">5</span>, padding=<span class="hljs-number">0</span>, activation=<span class="hljs-string">"RELU"</span>)
+        self.conv2 = layer.Conv2d(<span class="hljs-number">20</span>, <span class="hljs-number">50</span>, <span class="hljs-number">5</span>, padding=<span class="hljs-number">0</span>, activation=<span class="hljs-string">"RELU"</span>)
+        self.linear1 = layer.Linear(<span class="hljs-number">500</span>)
+        self.linear2 = layer.Linear(num_classes)
+        self.pooling1 = layer.MaxPool2d(<span class="hljs-number">2</span>, <span class="hljs-number">2</span>, padding=<span class="hljs-number">0</span>)
+        self.pooling2 = layer.MaxPool2d(<span class="hljs-number">2</span>, <span class="hljs-number">2</span>, padding=<span class="hljs-number">0</span>)
+        self.relu = layer.ReLU()
+        self.flatten = layer.Flatten()
+        self.softmax_cross_entropy = layer.SoftMaxCrossEntropy()
 
     <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">forward</span><span class="hljs-params">(self, x)</span>:</span>
         y = self.conv1(x)
-        y = autograd.relu(y)
         y = self.pooling1(y)
         y = self.conv2(y)
-        y = autograd.relu(y)
         y = self.pooling2(y)
-        y = autograd.flatten(y)
+        y = self.flatten(y)
         y = self.linear1(y)
-        y = autograd.relu(y)
+        y = self.relu(y)
         y = self.linear2(y)
         <span class="hljs-keyword">return</span> y
 
+    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">train_one_batch</span><span class="hljs-params">(self, x, y, dist_option=<span class="hljs-string">'fp32'</span>, spars=<span class="hljs-number">0</span>)</span>:</span>
+        out = self.forward(x)
+        loss = self.softmax_cross_entropy(out, y)
+
+        <span class="hljs-comment"># Allow different options for distributed training</span>
+        <span class="hljs-comment"># See the section "Optimizations for Distributed Training"</span>
+        <span class="hljs-keyword">if</span> dist_option == <span class="hljs-string">'fp32'</span>:
+            self.optimizer(loss)
+        <span class="hljs-keyword">elif</span> dist_option == <span class="hljs-string">'fp16'</span>:
+            self.optimizer.backward_and_update_half(loss)
+        <span class="hljs-keyword">elif</span> dist_option == <span class="hljs-string">'partialUpdate'</span>:
+            self.optimizer.backward_and_partial_update(loss)
+        <span class="hljs-keyword">elif</span> dist_option == <span class="hljs-string">'sparseTopK'</span>:
+            self.optimizer.backward_and_sparse_update(loss,
+                                                      topK=<span class="hljs-literal">True</span>,
+                                                      spars=spars)
+        <span class="hljs-keyword">elif</span> dist_option == <span class="hljs-string">'sparseThreshold'</span>:
+            self.optimizer.backward_and_sparse_update(loss,
+                                                      topK=<span class="hljs-literal">False</span>,
+                                                      spars=spars)
+        <span class="hljs-keyword">return</span> out, loss
+
 <span class="hljs-comment"># create model</span>
 model = CNN()
 </code></pre>
 <ol start="2">
-<li>Create the <code>DistOpt</code> instance:</li>
+<li>Create the <code>DistOpt</code> instance and attach it to the created model:</li>
 </ol>
 <pre><code class="hljs css language-python">sgd = opt.SGD(lr=<span class="hljs-number">0.005</span>, momentum=<span class="hljs-number">0.9</span>, weight_decay=<span class="hljs-number">1e-5</span>)
 sgd = opt.DistOpt(sgd)
+model.set_optimizer(sgd)
 dev = device.create_cuda_gpu_on(sgd.local_rank)
 </code></pre>
 <p>Here are some explanations concerning some variables in the code:</p>
@@ -153,24 +179,21 @@ test_x, test_y = data_partition(test_x, test_y,
                                 sgd.global_rank, sgd.world_size)
 </code></pre>
 <p>A partition of the dataset is returned for this <code>dev</code>.</p>
+<p>Here, <code>world_size</code> represents the total number of processes in all the nodes you
+are using for distributed training.</p>
 <ol start="4">
 <li>Initialize and synchronize the model parameters among all workers:</li>
 </ol>
-<pre><code class="hljs css language-python"><span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">synchronize</span><span class="hljs-params">(tensor, dist_opt)</span>:</span>
-    dist_opt.all_reduce(tensor.data)
-    tensor /= dist_opt.world_size
-
-<span class="hljs-comment">#Synchronize the initial parameter</span>
+<pre><code class="hljs css language-python"><span class="hljs-comment">#Synchronize the initial parameter</span>
 tx = tensor.Tensor((batch_size, <span class="hljs-number">1</span>, IMG_SIZE, IMG_SIZE), dev, tensor.float32)
 ty = tensor.Tensor((batch_size, num_classes), dev, tensor.int32)
+model.compile([tx], is_train=<span class="hljs-literal">True</span>, use_graph=graph, sequential=<span class="hljs-literal">True</span>)
 ...
-out = model.forward(tx)
-loss = autograd.softmax_cross_entropy(out, ty)
-<span class="hljs-keyword">for</span> p, g <span class="hljs-keyword">in</span> autograd.backward(loss):
-    synchronize(p, sgd)
+<span class="hljs-comment">#Use the same random seed for different ranks</span>
+seed = <span class="hljs-number">0</span>
+dev.SetRandSeed(seed)
+np.random.seed(seed)
 </code></pre>
-<p>Here, <code>world_size</code> represents the total number of processes in all the nodes you
-are using for distributed training.</p>
 <ol start="5">
 <li>Run BackPropagation and distributed SGD</li>
 </ol>
@@ -180,10 +203,8 @@ are using for distributed training.</p>
         y = train_y[idx[b * batch_size: (b + <span class="hljs-number">1</span>) * batch_size]]
         tx.copy_from_numpy(x)
         ty.copy_from_numpy(y)
-        out = model.forward(tx)
-        loss = autograd.softmax_cross_entropy(out, ty)
-        <span class="hljs-comment"># do backpropagation and all-reduce</span>
-        sgd.backward_and_update(loss)
+        <span class="hljs-comment"># Train the model</span>
+        out, loss = model(tx, ty)
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="execution-instruction"></a><a href="#execution-instruction" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
 <p>There are two ways to launch the training: MPI or Python multiprocessing.</p>
@@ -325,38 +346,42 @@ Evaluation accuracy = <span class="hljs-number">0.988682</span>
 <p>SINGA provides multiple optimization strategies for distributed training to
 reduce the communication cost. Refer to the API for <code>DistOpt</code> for the
 configuration of each strategy.</p>
+<p>When we use <code>model.Model</code> to build a model, we need to put the options for
+distributed training in the <code>train_one_batch</code> method. Please refer to the
+example code on top of this page. We could just copy the code for the options
+and use it in other models.</p>
+<p>With the defined options, we can put the arguments <code>dist_option</code> and <code>spars</code>
+when we start the training with <code>model(tx, ty, dist_option, spars)</code></p>
 <h3><a class="anchor" aria-hidden="true" id="no-optimizations"></a><a href="#no-optimizations" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
-<pre><code class="hljs css language-python">sgd.backward_and_update(loss)
+<pre><code class="hljs css language-python">out, loss = model(tx, ty)
 </code></pre>
 <p><code>loss</code> is the output tensor from the loss function, e.g., cross-entropy for
 classification tasks.</p>
 <h3><a class="anchor" aria-hidden="true" id="half-precision-gradients"></a><a href="#half-precision-gradients" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-. [...]
-<pre><code class="hljs css language-python">sgd.backward_and_update_half(loss)
+<pre><code class="hljs css language-python">out, loss = model(tx, ty, dist_option = <span class="hljs-string">'fp16'</span>)
 </code></pre>
 <p>It converts each gradient value to 16-bit representation (i.e., half-precision)
 before calling all-reduce.</p>
 <h3><a class="anchor" aria-hidden="true" id="partial-synchronization"></a><a href="#partial-synchronization" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 [...]
-<pre><code class="hljs css language-python">sgd.backward_and_partial_update(loss)
+<pre><code class="hljs css language-python">out, loss = model(tx, ty, dist_option = <span class="hljs-string">'partialUpdate'</span>)
 </code></pre>
 <p>In each iteration, every rank do the local sgd update. Then, only a chunk of
 parameters are averaged for synchronization, which saves the communication cost.
 The chunk size is configured when creating the <code>DistOpt</code> instance.</p>
 <h3><a class="anchor" aria-hidden="true" id="gradient-sparsification"></a><a href="#gradient-sparsification" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 [...]
-<pre><code class="hljs css language-python">sgd.backward_and_sparse_update(loss)
-</code></pre>
 <p>It applies sparsification schemes to select a subset of gradients for
 all-reduce. There are two scheme:</p>
 <ul>
 <li>The top-K largest elements are selected. spars is the portion (0 - 1) of total
 elements selected.</li>
 </ul>
-<pre><code class="hljs css language-python">sgd.backward_and_sparse_update(loss = loss, spars = spars, topK = <span class="hljs-literal">True</span>)
+<pre><code class="hljs css language-python">out, loss = model(tx, ty, dist_option = <span class="hljs-string">'sparseTopK'</span>, spars = spars)
 </code></pre>
 <ul>
 <li>All gradients whose absolute value are larger than predefined threshold spars
 are selected.</li>
 </ul>
-<pre><code class="hljs css language-python">sgd.backward_and_sparse_update(loss = loss, spars = spars, topK = <span class="hljs-literal">False</span>)
+<pre><code class="hljs css language-python">out, loss = model(tx, ty, dist_option = <span class="hljs-string">'sparseThreshold'</span>, spars = spars)
 </code></pre>
 <p>The hyper-parameters are configured when creating the <code>DistOpt</code> instance.</p>
 <h2><a class="anchor" aria-hidden="true" id="implementation"></a><a href="#implementation" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
@@ -397,7 +422,7 @@ partitioned, so that each process can evaluate the sub-gradient based on the
 partitioned training data. Once the sub-gradient is calculated on each
 processes, the overall stochastic gradient is obtained by all-reducing the
 sub-gradients evaluated by all processes.</p>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/9/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/next/onnx"><span class="arrow-prev">← </span><span>ONNX</span></a><a class="docs-next button" href="/docs/next/download-singa"><span>Download SINGA</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#usage">Usage</a><ul class="toc-headings"><li><a href="#exa [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 9/18/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/next/onnx"><span class="arrow-prev">← </span><span>ONNX</span></a><a class="docs-next button" href="/docs/next/download-singa"><span>Download SINGA</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#usage">Usage</a><ul class="toc-headings"><li><a href="#ex [...]
    The Apache Software Foundation. All rights reserved.
    Apache SINGA, Apache, the Apache feather logo, and
    the Apache SINGA project logos are trademarks of The
diff --git a/content/docs/next/dist-train/index.html b/content/docs/next/dist-train/index.html
index 9046a7b..a2abdd0 100644
--- a/content/docs/next/dist-train/index.html
+++ b/content/docs/next/dist-train/index.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -90,36 +90,62 @@ a <a href="">Colab notebook</a> for it.</p>
 <ol>
 <li>Define the neural network model:</li>
 </ol>
-<pre><code class="hljs css language-python"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">CNN</span>:</span>
-    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__init__</span><span class="hljs-params">(self)</span>:</span>
-        self.conv1 = autograd.Conv2d(<span class="hljs-number">1</span>, <span class="hljs-number">20</span>, <span class="hljs-number">5</span>, padding=<span class="hljs-number">0</span>)
-        self.conv2 = autograd.Conv2d(<span class="hljs-number">20</span>, <span class="hljs-number">50</span>, <span class="hljs-number">5</span>, padding=<span class="hljs-number">0</span>)
-        self.linear1 = autograd.Linear(<span class="hljs-number">4</span> * <span class="hljs-number">4</span> * <span class="hljs-number">50</span>, <span class="hljs-number">500</span>)
-        self.linear2 = autograd.Linear(<span class="hljs-number">500</span>, <span class="hljs-number">10</span>)
-        self.pooling1 = autograd.MaxPool2d(<span class="hljs-number">2</span>, <span class="hljs-number">2</span>, padding=<span class="hljs-number">0</span>)
-        self.pooling2 = autograd.MaxPool2d(<span class="hljs-number">2</span>, <span class="hljs-number">2</span>, padding=<span class="hljs-number">0</span>)
+<pre><code class="hljs css language-python"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">CNN</span><span class="hljs-params">(model.Model)</span>:</span>
+
+    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__init__</span><span class="hljs-params">(self, num_classes=<span class="hljs-number">10</span>, num_channels=<span class="hljs-number">1</span>)</span>:</span>
+        super(CNN, self).__init__()
+        self.conv1 = layer.Conv2d(num_channels, <span class="hljs-number">20</span>, <span class="hljs-number">5</span>, padding=<span class="hljs-number">0</span>, activation=<span class="hljs-string">"RELU"</span>)
+        self.conv2 = layer.Conv2d(<span class="hljs-number">20</span>, <span class="hljs-number">50</span>, <span class="hljs-number">5</span>, padding=<span class="hljs-number">0</span>, activation=<span class="hljs-string">"RELU"</span>)
+        self.linear1 = layer.Linear(<span class="hljs-number">500</span>)
+        self.linear2 = layer.Linear(num_classes)
+        self.pooling1 = layer.MaxPool2d(<span class="hljs-number">2</span>, <span class="hljs-number">2</span>, padding=<span class="hljs-number">0</span>)
+        self.pooling2 = layer.MaxPool2d(<span class="hljs-number">2</span>, <span class="hljs-number">2</span>, padding=<span class="hljs-number">0</span>)
+        self.relu = layer.ReLU()
+        self.flatten = layer.Flatten()
+        self.softmax_cross_entropy = layer.SoftMaxCrossEntropy()
 
     <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">forward</span><span class="hljs-params">(self, x)</span>:</span>
         y = self.conv1(x)
-        y = autograd.relu(y)
         y = self.pooling1(y)
         y = self.conv2(y)
-        y = autograd.relu(y)
         y = self.pooling2(y)
-        y = autograd.flatten(y)
+        y = self.flatten(y)
         y = self.linear1(y)
-        y = autograd.relu(y)
+        y = self.relu(y)
         y = self.linear2(y)
         <span class="hljs-keyword">return</span> y
 
+    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">train_one_batch</span><span class="hljs-params">(self, x, y, dist_option=<span class="hljs-string">'fp32'</span>, spars=<span class="hljs-number">0</span>)</span>:</span>
+        out = self.forward(x)
+        loss = self.softmax_cross_entropy(out, y)
+
+        <span class="hljs-comment"># Allow different options for distributed training</span>
+        <span class="hljs-comment"># See the section "Optimizations for Distributed Training"</span>
+        <span class="hljs-keyword">if</span> dist_option == <span class="hljs-string">'fp32'</span>:
+            self.optimizer(loss)
+        <span class="hljs-keyword">elif</span> dist_option == <span class="hljs-string">'fp16'</span>:
+            self.optimizer.backward_and_update_half(loss)
+        <span class="hljs-keyword">elif</span> dist_option == <span class="hljs-string">'partialUpdate'</span>:
+            self.optimizer.backward_and_partial_update(loss)
+        <span class="hljs-keyword">elif</span> dist_option == <span class="hljs-string">'sparseTopK'</span>:
+            self.optimizer.backward_and_sparse_update(loss,
+                                                      topK=<span class="hljs-literal">True</span>,
+                                                      spars=spars)
+        <span class="hljs-keyword">elif</span> dist_option == <span class="hljs-string">'sparseThreshold'</span>:
+            self.optimizer.backward_and_sparse_update(loss,
+                                                      topK=<span class="hljs-literal">False</span>,
+                                                      spars=spars)
+        <span class="hljs-keyword">return</span> out, loss
+
 <span class="hljs-comment"># create model</span>
 model = CNN()
 </code></pre>
 <ol start="2">
-<li>Create the <code>DistOpt</code> instance:</li>
+<li>Create the <code>DistOpt</code> instance and attach it to the created model:</li>
 </ol>
 <pre><code class="hljs css language-python">sgd = opt.SGD(lr=<span class="hljs-number">0.005</span>, momentum=<span class="hljs-number">0.9</span>, weight_decay=<span class="hljs-number">1e-5</span>)
 sgd = opt.DistOpt(sgd)
+model.set_optimizer(sgd)
 dev = device.create_cuda_gpu_on(sgd.local_rank)
 </code></pre>
 <p>Here are some explanations concerning some variables in the code:</p>
@@ -153,24 +179,21 @@ test_x, test_y = data_partition(test_x, test_y,
                                 sgd.global_rank, sgd.world_size)
 </code></pre>
 <p>A partition of the dataset is returned for this <code>dev</code>.</p>
+<p>Here, <code>world_size</code> represents the total number of processes in all the nodes you
+are using for distributed training.</p>
 <ol start="4">
 <li>Initialize and synchronize the model parameters among all workers:</li>
 </ol>
-<pre><code class="hljs css language-python"><span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">synchronize</span><span class="hljs-params">(tensor, dist_opt)</span>:</span>
-    dist_opt.all_reduce(tensor.data)
-    tensor /= dist_opt.world_size
-
-<span class="hljs-comment">#Synchronize the initial parameter</span>
+<pre><code class="hljs css language-python"><span class="hljs-comment">#Synchronize the initial parameter</span>
 tx = tensor.Tensor((batch_size, <span class="hljs-number">1</span>, IMG_SIZE, IMG_SIZE), dev, tensor.float32)
 ty = tensor.Tensor((batch_size, num_classes), dev, tensor.int32)
+model.compile([tx], is_train=<span class="hljs-literal">True</span>, use_graph=graph, sequential=<span class="hljs-literal">True</span>)
 ...
-out = model.forward(tx)
-loss = autograd.softmax_cross_entropy(out, ty)
-<span class="hljs-keyword">for</span> p, g <span class="hljs-keyword">in</span> autograd.backward(loss):
-    synchronize(p, sgd)
+<span class="hljs-comment">#Use the same random seed for different ranks</span>
+seed = <span class="hljs-number">0</span>
+dev.SetRandSeed(seed)
+np.random.seed(seed)
 </code></pre>
-<p>Here, <code>world_size</code> represents the total number of processes in all the nodes you
-are using for distributed training.</p>
 <ol start="5">
 <li>Run BackPropagation and distributed SGD</li>
 </ol>
@@ -180,10 +203,8 @@ are using for distributed training.</p>
         y = train_y[idx[b * batch_size: (b + <span class="hljs-number">1</span>) * batch_size]]
         tx.copy_from_numpy(x)
         ty.copy_from_numpy(y)
-        out = model.forward(tx)
-        loss = autograd.softmax_cross_entropy(out, ty)
-        <span class="hljs-comment"># do backpropagation and all-reduce</span>
-        sgd.backward_and_update(loss)
+        <span class="hljs-comment"># Train the model</span>
+        out, loss = model(tx, ty)
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="execution-instruction"></a><a href="#execution-instruction" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
 <p>There are two ways to launch the training: MPI or Python multiprocessing.</p>
@@ -325,38 +346,42 @@ Evaluation accuracy = <span class="hljs-number">0.988682</span>
 <p>SINGA provides multiple optimization strategies for distributed training to
 reduce the communication cost. Refer to the API for <code>DistOpt</code> for the
 configuration of each strategy.</p>
+<p>When we use <code>model.Model</code> to build a model, we need to put the options for
+distributed training in the <code>train_one_batch</code> method. Please refer to the
+example code on top of this page. We could just copy the code for the options
+and use it in other models.</p>
+<p>With the defined options, we can put the arguments <code>dist_option</code> and <code>spars</code>
+when we start the training with <code>model(tx, ty, dist_option, spars)</code></p>
 <h3><a class="anchor" aria-hidden="true" id="no-optimizations"></a><a href="#no-optimizations" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
-<pre><code class="hljs css language-python">sgd.backward_and_update(loss)
+<pre><code class="hljs css language-python">out, loss = model(tx, ty)
 </code></pre>
 <p><code>loss</code> is the output tensor from the loss function, e.g., cross-entropy for
 classification tasks.</p>
 <h3><a class="anchor" aria-hidden="true" id="half-precision-gradients"></a><a href="#half-precision-gradients" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-. [...]
-<pre><code class="hljs css language-python">sgd.backward_and_update_half(loss)
+<pre><code class="hljs css language-python">out, loss = model(tx, ty, dist_option = <span class="hljs-string">'fp16'</span>)
 </code></pre>
 <p>It converts each gradient value to 16-bit representation (i.e., half-precision)
 before calling all-reduce.</p>
 <h3><a class="anchor" aria-hidden="true" id="partial-synchronization"></a><a href="#partial-synchronization" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 [...]
-<pre><code class="hljs css language-python">sgd.backward_and_partial_update(loss)
+<pre><code class="hljs css language-python">out, loss = model(tx, ty, dist_option = <span class="hljs-string">'partialUpdate'</span>)
 </code></pre>
 <p>In each iteration, every rank do the local sgd update. Then, only a chunk of
 parameters are averaged for synchronization, which saves the communication cost.
 The chunk size is configured when creating the <code>DistOpt</code> instance.</p>
 <h3><a class="anchor" aria-hidden="true" id="gradient-sparsification"></a><a href="#gradient-sparsification" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 [...]
-<pre><code class="hljs css language-python">sgd.backward_and_sparse_update(loss)
-</code></pre>
 <p>It applies sparsification schemes to select a subset of gradients for
 all-reduce. There are two scheme:</p>
 <ul>
 <li>The top-K largest elements are selected. spars is the portion (0 - 1) of total
 elements selected.</li>
 </ul>
-<pre><code class="hljs css language-python">sgd.backward_and_sparse_update(loss = loss, spars = spars, topK = <span class="hljs-literal">True</span>)
+<pre><code class="hljs css language-python">out, loss = model(tx, ty, dist_option = <span class="hljs-string">'sparseTopK'</span>, spars = spars)
 </code></pre>
 <ul>
 <li>All gradients whose absolute value are larger than predefined threshold spars
 are selected.</li>
 </ul>
-<pre><code class="hljs css language-python">sgd.backward_and_sparse_update(loss = loss, spars = spars, topK = <span class="hljs-literal">False</span>)
+<pre><code class="hljs css language-python">out, loss = model(tx, ty, dist_option = <span class="hljs-string">'sparseThreshold'</span>, spars = spars)
 </code></pre>
 <p>The hyper-parameters are configured when creating the <code>DistOpt</code> instance.</p>
 <h2><a class="anchor" aria-hidden="true" id="implementation"></a><a href="#implementation" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
@@ -397,7 +422,7 @@ partitioned, so that each process can evaluate the sub-gradient based on the
 partitioned training data. Once the sub-gradient is calculated on each
 processes, the overall stochastic gradient is obtained by all-reducing the
 sub-gradients evaluated by all processes.</p>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/9/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/next/onnx"><span class="arrow-prev">← </span><span>ONNX</span></a><a class="docs-next button" href="/docs/next/download-singa"><span>Download SINGA</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#usage">Usage</a><ul class="toc-headings"><li><a href="#exa [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 9/18/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/next/onnx"><span class="arrow-prev">← </span><span>ONNX</span></a><a class="docs-next button" href="/docs/next/download-singa"><span>Download SINGA</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#usage">Usage</a><ul class="toc-headings"><li><a href="#ex [...]
    The Apache Software Foundation. All rights reserved.
    Apache SINGA, Apache, the Apache feather logo, and
    the Apache SINGA project logos are trademarks of The
diff --git a/content/docs/next/download-singa.html b/content/docs/next/download-singa.html
index 988c5fe..4278bfd 100644
--- a/content/docs/next/download-singa.html
+++ b/content/docs/next/download-singa.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/next/download-singa/index.html b/content/docs/next/download-singa/index.html
index 988c5fe..4278bfd 100644
--- a/content/docs/next/download-singa/index.html
+++ b/content/docs/next/download-singa/index.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/next/examples.html b/content/docs/next/examples.html
index 116717a..de28186 100644
--- a/content/docs/next/examples.html
+++ b/content/docs/next/examples.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -120,12 +120,30 @@ example is given below.</p>
 <tr><td>Bert-Squad</td><td><a href="https://rajpurkar.github.io/SQuAD-explorer/explore/1.1/dev/">SQuAD v1.1</a></td><td><a href="https://colab.research.google.com/drive/1kud-lUPjS_u-TkDAzihBTw0Vqr0FjCE-">Colab</a></td></tr>
 </tbody>
 </table>
+<h2><a class="anchor" aria-hidden="true" id="text-classification"></a><a href="#text-classification" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
+<table>
+<thead>
+<tr><th>Model</th><th>Dataset</th><th>Links</th></tr>
+</thead>
+<tbody>
+<tr><td>Simple LSTM</td><td>IMDB</td><td><a href="">python</a></td></tr>
+</tbody>
+</table>
+<h2><a class="anchor" aria-hidden="true" id="text-ranking"></a><a href="#text-ranking" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
+<table>
+<thead>
+<tr><th>Model</th><th>Dataset</th><th>Links</th></tr>
+</thead>
+<tbody>
+<tr><td>BiLSTM</td><td>InsuranceQA</td><td><a href="">python</a></td></tr>
+</tbody>
+</table>
 <h2><a class="anchor" aria-hidden="true" id="misc"></a><a href="#misc" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <ul>
 <li>Restricted Boltzmann Machine over the MNIST dataset, <a href="">source</a>,
 <a href="https://colab.research.google.com/drive/19996noGu9JyHHkVmp4edBGu7PJSRQKsd">Colab</a>.</li>
 </ul>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/9/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/next/software-stack"><span class="arrow-prev">← </span><span>Software Stack</span></a><a class="docs-next button" href="/docs/next/device"><span>Device</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#image-classification">Image Classification</a></li><li [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 9/18/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/next/software-stack"><span class="arrow-prev">← </span><span>Software Stack</span></a><a class="docs-next button" href="/docs/next/device"><span>Device</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#image-classification">Image Classification</a></li><l [...]
    The Apache Software Foundation. All rights reserved.
    Apache SINGA, Apache, the Apache feather logo, and
    the Apache SINGA project logos are trademarks of The
diff --git a/content/docs/next/examples/index.html b/content/docs/next/examples/index.html
index 116717a..de28186 100644
--- a/content/docs/next/examples/index.html
+++ b/content/docs/next/examples/index.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -120,12 +120,30 @@ example is given below.</p>
 <tr><td>Bert-Squad</td><td><a href="https://rajpurkar.github.io/SQuAD-explorer/explore/1.1/dev/">SQuAD v1.1</a></td><td><a href="https://colab.research.google.com/drive/1kud-lUPjS_u-TkDAzihBTw0Vqr0FjCE-">Colab</a></td></tr>
 </tbody>
 </table>
+<h2><a class="anchor" aria-hidden="true" id="text-classification"></a><a href="#text-classification" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
+<table>
+<thead>
+<tr><th>Model</th><th>Dataset</th><th>Links</th></tr>
+</thead>
+<tbody>
+<tr><td>Simple LSTM</td><td>IMDB</td><td><a href="">python</a></td></tr>
+</tbody>
+</table>
+<h2><a class="anchor" aria-hidden="true" id="text-ranking"></a><a href="#text-ranking" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
+<table>
+<thead>
+<tr><th>Model</th><th>Dataset</th><th>Links</th></tr>
+</thead>
+<tbody>
+<tr><td>BiLSTM</td><td>InsuranceQA</td><td><a href="">python</a></td></tr>
+</tbody>
+</table>
 <h2><a class="anchor" aria-hidden="true" id="misc"></a><a href="#misc" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <ul>
 <li>Restricted Boltzmann Machine over the MNIST dataset, <a href="">source</a>,
 <a href="https://colab.research.google.com/drive/19996noGu9JyHHkVmp4edBGu7PJSRQKsd">Colab</a>.</li>
 </ul>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/9/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/next/software-stack"><span class="arrow-prev">← </span><span>Software Stack</span></a><a class="docs-next button" href="/docs/next/device"><span>Device</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#image-classification">Image Classification</a></li><li [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 9/18/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/next/software-stack"><span class="arrow-prev">← </span><span>Software Stack</span></a><a class="docs-next button" href="/docs/next/device"><span>Device</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#image-classification">Image Classification</a></li><l [...]
    The Apache Software Foundation. All rights reserved.
    Apache SINGA, Apache, the Apache feather logo, and
    the Apache SINGA project logos are trademarks of The
diff --git a/content/docs/next/git-workflow.html b/content/docs/next/git-workflow.html
index 7ec19bf..23b8644 100644
--- a/content/docs/next/git-workflow.html
+++ b/content/docs/next/git-workflow.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/next/git-workflow/index.html b/content/docs/next/git-workflow/index.html
index 7ec19bf..23b8644 100644
--- a/content/docs/next/git-workflow/index.html
+++ b/content/docs/next/git-workflow/index.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/next/graph.html b/content/docs/next/graph.html
index 76dc23a..aaddd69 100644
--- a/content/docs/next/graph.html
+++ b/content/docs/next/graph.html
@@ -1,10 +1,10 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Computational Graph · Apache SINGA</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file distributed with this work for additional information regarding copyri [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Model · Apache SINGA</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file distributed with this work for additional information regarding copyright ownership. [...]
         document.addEventListener('DOMContentLoaded', function() {
           addBackToTop(
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -60,7 +60,7 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/singa-doc/blob/master/docs-site/docs/graph.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Computational Graph</h1></header><article><div><span><!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor l [...]
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/singa-doc/blob/master/docs-site/docs/graph.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Model</h1></header><article><div><span><!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreeme [...]
 <p>The forward and backward propagation in a neural network can be represented
 using a set of operations such as convolution and pooling. Each operation takes
 some input <a href="./tensor">tensors</a> and applies an <a href="./autograd">operator</a> to generate
@@ -69,60 +69,69 @@ edge, all operations form a computational graph. With the computational graph,
 speed and memory optimization can be conducted by scheduling the execution of
 the operations and memory allocation/release intelligently. In SINGA, users only
 need to define the neural network model using the
-<a href="https://github.com/apache/singa/blob/master/python/singa/module.py">Module</a>
-API. The graph is constructed and optimized at the C++ backend automatically.</p>
+<a href="https://github.com/apache/singa/blob/master/python/singa/model.py">Model</a> API.
+The graph is constructed and optimized at the C++ backend automatically.</p>
+<p>In this way, on the one hand, users implement a network using the
+<a href="./graph">Model</a> API following the imperative programming style like PyTorch.
+Different to PyTorch which recreates the operations in every iteration, SINGA
+buffers the operations to create a computational graph implicitly (when this
+feature is enabled) after the first iteration. Therefore, on the other hand,
+SINGA has a similar computational graph as the one created by libraries using
+declarative programming, e.g., TensorFlow. Consequently, it can enjoy the
+optimizations done over the graph.</p>
 <h2><a class="anchor" aria-hidden="true" id="example"></a><a href="#example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
-<p>The following code illustrates the usage of the <code>Module</code> API.</p>
+<p>The following code illustrates the usage of the <code>Model</code> API.</p>
 <ol>
-<li>Implement the new model as a subclass the Module class.</li>
+<li>Implement the new model as a subclass the Model class.</li>
 </ol>
-<pre><code class="hljs css language-Python"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">CNN</span><span class="hljs-params">(module.Module)</span>:</span>
+<pre><code class="hljs css language-Python"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">CNN</span><span class="hljs-params">(model.Model)</span>:</span>
 
-    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__init__</span><span class="hljs-params">(self, optimizer)</span>:</span>
+    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__init__</span><span class="hljs-params">(self, num_classes=<span class="hljs-number">10</span>, num_channels=<span class="hljs-number">1</span>)</span>:</span>
         super(CNN, self).__init__()
-        <span class="hljs-comment"># define layers</span>
-        self.conv1 = autograd.Conv2d(<span class="hljs-number">1</span>, <span class="hljs-number">20</span>, <span class="hljs-number">5</span>, padding=<span class="hljs-number">0</span>)
-        self.conv2 = autograd.Conv2d(<span class="hljs-number">20</span>, <span class="hljs-number">50</span>, <span class="hljs-number">5</span>, padding=<span class="hljs-number">0</span>)
-        self.linear1 = autograd.Linear(<span class="hljs-number">4</span> * <span class="hljs-number">4</span> * <span class="hljs-number">50</span>, <span class="hljs-number">500</span>)
-        self.linear2 = autograd.Linear(<span class="hljs-number">500</span>, <span class="hljs-number">10</span>)
-        self.pooling1 = autograd.MaxPool2d(<span class="hljs-number">2</span>, <span class="hljs-number">2</span>, padding=<span class="hljs-number">0</span>)
-        self.pooling2 = autograd.MaxPool2d(<span class="hljs-number">2</span>, <span class="hljs-number">2</span>, padding=<span class="hljs-number">0</span>)
-
-        self.optimizer = optimizer
+        self.conv1 = layer.Conv2d(num_channels, <span class="hljs-number">20</span>, <span class="hljs-number">5</span>, padding=<span class="hljs-number">0</span>, activation=<span class="hljs-string">"RELU"</span>)
+        self.conv2 = layer.Conv2d(<span class="hljs-number">20</span>, <span class="hljs-number">50</span>, <span class="hljs-number">5</span>, padding=<span class="hljs-number">0</span>, activation=<span class="hljs-string">"RELU"</span>)
+        self.linear1 = layer.Linear(<span class="hljs-number">500</span>)
+        self.linear2 = layer.Linear(num_classes)
+        self.pooling1 = layer.MaxPool2d(<span class="hljs-number">2</span>, <span class="hljs-number">2</span>, padding=<span class="hljs-number">0</span>)
+        self.pooling2 = layer.MaxPool2d(<span class="hljs-number">2</span>, <span class="hljs-number">2</span>, padding=<span class="hljs-number">0</span>)
+        self.relu = layer.ReLU()
+        self.flatten = layer.Flatten()
+        self.softmax_cross_entropy = layer.SoftMaxCrossEntropy()
 
     <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">forward</span><span class="hljs-params">(self, x)</span>:</span>
-        <span class="hljs-comment"># define the forward operations</span>
         y = self.conv1(x)
-        y = autograd.relu(y)
         y = self.pooling1(y)
         y = self.conv2(y)
-        y = autograd.relu(y)
         y = self.pooling2(y)
-        y = autograd.flatten(y)
+        y = self.flatten(y)
         y = self.linear1(y)
-        y = autograd.relu(y)
+        y = self.relu(y)
         y = self.linear2(y)
         <span class="hljs-keyword">return</span> y
 
-    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">loss</span><span class="hljs-params">(self, x, ty)</span>:</span>
-        <span class="hljs-comment"># define the training loss</span>
-        <span class="hljs-keyword">return</span> autograd.softmax_cross_entropy(x, ty)
-
-    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">optim</span><span class="hljs-params">(self, loss)</span>:</span>
-        <span class="hljs-comment"># update the parameters using SGD algorithms</span>
-        self.optimizer.backward_and_update(loss)
+    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">train_one_batch</span><span class="hljs-params">(self, x, y)</span>:</span>
+        out = self.forward(x)
+        loss = self.softmax_cross_entropy(out, y)
+        self.optimizer(loss)
+        <span class="hljs-keyword">return</span> out, loss
 </code></pre>
 <ol start="2">
-<li>Create an instance of the model, and do some configurations</li>
+<li>Create an instance of model, optimizer, device, etc. Compile the model</li>
 </ol>
-<pre><code class="hljs css language-python">model = CNN(sgd)
-<span class="hljs-comment"># set the mode of running the operations:</span>
-<span class="hljs-comment"># True for training; False for evaluation</span>
-model.train(mode=<span class="hljs-literal">True</span>)
-<span class="hljs-comment"># set the device for running the operations</span>
-model.on_device(dev)
-<span class="hljs-comment"># whether to create the graph or run the operations imperatively</span>
-model.graph(mode=<span class="hljs-literal">True</span>)
+<pre><code class="hljs css language-python">model = CNN()
+
+<span class="hljs-comment"># initialize optimizer and attach it to the model</span>
+sgd = opt.SGD(lr=<span class="hljs-number">0.005</span>, momentum=<span class="hljs-number">0.9</span>, weight_decay=<span class="hljs-number">1e-5</span>)
+
+<span class="hljs-comment"># initialize device</span>
+dev = device.create_cuda_gpu()
+
+<span class="hljs-comment"># input and target placeholders for the model</span>
+tx = tensor.Tensor((batch_size, <span class="hljs-number">1</span>, IMG_SIZE, IMG_SIZE), dev, tensor.float32)
+ty = tensor.Tensor((batch_size, num_classes), dev, tensor.int32)
+
+<span class="hljs-comment"># compile the model before training</span>
+model.compile([tx], is_train=<span class="hljs-literal">True</span>, use_graph=<span class="hljs-literal">True</span>, sequential=<span class="hljs-literal">False</span>)
 </code></pre>
 <ol start="3">
 <li>Train the model iteratively</li>
@@ -135,17 +144,14 @@ model.graph(mode=<span class="hljs-literal">True</span>)
     tx.copy_from_numpy(x)
     ty.copy_from_numpy(y)
 
-    <span class="hljs-comment"># run forward propagation</span>
-    out = model(tx)
-    loss = model.loss(out, ty)
-    <span class="hljs-comment"># run backward propagation</span>
-    model.optim(loss)
+    <span class="hljs-comment"># Training with one batch</span>
+    out, loss = model(tx, ty)
 </code></pre>
 <p>A Google Colab notebook of this example is available
 <a href="https://colab.research.google.com/drive/1fbGUs1AsoX6bU5F745RwQpohP4bHTktq">here</a>.</p>
 <p>More examples:</p>
 <ul>
-<li><a href="https://github.com/apache/singa/blob/master/examples/mlp/module.py">MLP</a></li>
+<li><a href="https://github.com/apache/singa/blob/master/examples/mlp/model.py">MLP</a></li>
 <li><a href="https://github.com/apache/singa/blob/master/examples/cnn/model/cnn.py">CNN</a></li>
 <li><a href="https://github.com/apache/singa/blob/master/examples/cnn/model/resnet.py">ResNet</a></li>
 </ul>
@@ -158,17 +164,25 @@ model.graph(mode=<span class="hljs-literal">True</span>)
 <li>create the nodes and edges based on the dependencies</li>
 </ol>
 <p>Take the matrix multiplication operation from the dense layer of a
-<a href="https://github.com/apache/singa/blob/master/examples/mlp/module.py">MLP model</a>
+<a href="https://github.com/apache/singa/blob/master/examples/mlp/model.py">MLP model</a>
 as an example. The operation is called in the <code>forward</code> function of the MLP
 class</p>
-<pre><code class="hljs css language-python"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">MLP</span><span class="hljs-params">(module.Module)</span>:</span>
+<pre><code class="hljs css language-python"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">MLP</span><span class="hljs-params">(model.Model)</span>:</span>
+&lt;&lt;&lt;&lt;&lt;&lt;&lt; HEAD
+=======
+
+    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__init__</span><span class="hljs-params">(self, data_size=<span class="hljs-number">10</span>, perceptron_size=<span class="hljs-number">100</span>, num_classes=<span class="hljs-number">10</span>)</span>:</span>
+        super(MLP, self).__init__()
+        self.linear1 = layer.Linear(perceptron_size)
+        ...
+&gt;&gt;&gt;&gt;&gt;&gt;&gt; upstream/master
 
     <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">forward</span><span class="hljs-params">(self, inputs)</span>:</span>
-        x = autograd.matmul(inputs, self.w0)
+        y = self.linear1(inputs)
         ...
 </code></pre>
-<p><code>autograd</code> implements the <code>matmul</code> operator by calling the function <code>Mult</code>
-exposed from CPP via SWIG.</p>
+<p>The <code>Linear</code> layer is composed of the <code>mutmul</code> operator. <code>autograd</code> implements
+the <code>matmul</code> operator by calling the function <code>Mult</code> exposed from CPP via SWIG.</p>
 <pre><code class="hljs css language-python"><span class="hljs-comment"># implementation of matmul()</span>
 singa.Mult(inputs, w)
 </code></pre>
@@ -185,7 +199,7 @@ C-&gt;device()-&gt;Exec(
 <p>The <code>Exec</code> function of <code>Device</code> buffers the function and its arguments. In
 addition, it also has the information about the blocks (a block is a chunk of
 memory for a tensor) to be read and written by this function.</p>
-<p>Once <code>Module.forward()</code> has been executed once, all operations are buffered by
+<p>Once <code>Model.forward()</code> has been executed once, all operations are buffered by
 <code>Device</code>. Next, the read/write information of all operations are analyzed to
 create the computational graph. For example, if a block <code>b</code> is written by one
 operation O1 and is later read by another operation O2, we would know O2 depends
@@ -331,7 +345,7 @@ operator implemented at the backend.</p>
 <ul>
 <li>Using layer: ResNet50 in
 <a href="https://github.com/apache/singa/blob/master/examples/cnn/autograd/resnet_cifar10.py">resnet.py</a></li>
-<li>Using module: ResNet50 in
+<li>Using model: ResNet50 in
 <a href="https://github.com/apache/singa/blob/master/examples/cnn/model/resnet.py">resnet.py</a></li>
 </ul></li>
 <li>GPU: NVIDIA RTX 2080Ti</li>
@@ -370,7 +384,7 @@ operator implemented at the backend.</p>
           <td>1.0000</td>
       </tr>
       <tr>
-          <td nowrap>module:disable graph</td>
+          <td nowrap>model:disable graph</td>
           <td>4995</td>
           <td>14.1264</td>
           <td>14.1579</td>
@@ -379,7 +393,7 @@ operator implemented at the backend.</p>
           <td>1.0049</td>
       </tr>
       <tr>
-          <td nowrap>module:enable graph, bfs</td>
+          <td nowrap>model:enable graph, bfs</td>
           <td>3283</td>
           <td>13.7438</td>
           <td>14.5520</td>
@@ -388,7 +402,7 @@ operator implemented at the backend.</p>
           <td>1.0328</td>
       </tr>
       <tr>
-          <td nowrap>module:enable graph, serial</td>
+          <td nowrap>model:enable graph, serial</td>
           <td>3265</td>
           <td>13.7420</td>
           <td>14.5540</td>
@@ -407,7 +421,7 @@ operator implemented at the backend.</p>
           <td>1.0000</td>
       </tr>
       <tr>
-          <td nowrap>module:disable graph</td>
+          <td nowrap>model:disable graph</td>
           <td>10109</td>
           <td>13.2952</td>
           <td>7.5315</td>
@@ -416,7 +430,7 @@ operator implemented at the backend.</p>
           <td>1.0123</td>
       </tr>
       <tr>
-          <td nowrap>module:enable graph, bfs</td>
+          <td nowrap>model:enable graph, bfs</td>
           <td>6839</td>
           <td>13.1059</td>
           <td>7.6302</td>
@@ -425,7 +439,7 @@ operator implemented at the backend.</p>
           <td>1.0269</td>
       </tr>
       <tr>
-          <td nowrap>module:enable graph, serial</td>
+          <td nowrap>model:enable graph, serial</td>
           <td>6845</td>
           <td>13.0489</td>
           <td>7.6635</td>
@@ -440,11 +454,11 @@ operator implemented at the backend.</p>
 <ul>
 <li>Experiment settings
 <ul>
-<li>Model
+<li>API
 <ul>
 <li>using Layer: ResNet50 in
 <a href="https://github.com/apache/singa/blob/master/examples/cnn/autograd/resnet_dist.py">resnet_dist.py</a></li>
-<li>using Module: ResNet50 in
+<li>using Model: ResNet50 in
 <a href="https://github.com/apache/singa/blob/master/examples/cnn/model/resnet.py">resnet.py</a></li>
 </ul></li>
 <li>GPU: NVIDIA RTX 2080Ti * 2</li>
@@ -474,7 +488,7 @@ operator implemented at the backend.</p>
           <td>1.0000</td>
       </tr>
       <tr>
-          <td nowrap>module:disable graph</td>
+          <td nowrap>model:disable graph</td>
           <td>5427</td>
           <td>17.8232</td>
           <td>11.2213</td>
@@ -483,7 +497,7 @@ operator implemented at the backend.</p>
           <td>0.9725</td>
       </tr>
       <tr>
-          <td nowrap>module:enable graph, bfs</td>
+          <td nowrap>model:enable graph, bfs</td>
           <td>3389</td>
           <td>18.2310</td>
           <td>10.9703</td>
@@ -492,7 +506,7 @@ operator implemented at the backend.</p>
           <td>0.9507</td>
       </tr>
       <tr>
-          <td nowrap>module:enable graph, serial</td>
+          <td nowrap>model:enable graph, serial</td>
           <td>3437</td>
           <td>17.0389</td>
           <td>11.7378</td>
@@ -511,7 +525,7 @@ operator implemented at the backend.</p>
           <td>1.0000</td>
       </tr>
       <tr>
-          <td nowrap>module:disable graph</td>
+          <td nowrap>model:disable graph</td>
           <td>10503</td>
           <td>14.7746</td>
           <td>6.7684</td>
@@ -520,7 +534,7 @@ operator implemented at the backend.</p>
           <td>1.0060</td>
       </tr>
       <tr>
-          <td nowrap>module:enable graph, bfs</td>
+          <td nowrap>model:enable graph, bfs</td>
           <td>6935</td>
           <td>14.8553</td>
           <td>6.7316</td>
@@ -529,7 +543,7 @@ operator implemented at the backend.</p>
           <td>1.0006</td>
       </tr>
       <tr>
-          <td nowrap>module:enable graph, serial</td>
+          <td nowrap>model:enable graph, serial</td>
           <td>7027</td>
           <td>14.3271</td>
           <td>6.9798</td>
@@ -547,7 +561,7 @@ memory footprint.</li>
 <li>Currently, there is a little improvement in terms of speed. More optimizations
 can be done towards the efficiency.</li>
 </ul>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/13/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/next/autograd"><span class="arrow-prev">← </span><span>Autograd</span></a><a class="docs-next button" href="/docs/next/onnx"><span>ONNX</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#example">Example</a></li><li><a href="#implementation">Implementation [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 9/24/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/next/autograd"><span class="arrow-prev">← </span><span>Autograd</span></a><a class="docs-next button" href="/docs/next/onnx"><span>ONNX</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#example">Example</a></li><li><a href="#implementation">Implementation [...]
    The Apache Software Foundation. All rights reserved.
    Apache SINGA, Apache, the Apache feather logo, and
    the Apache SINGA project logos are trademarks of The
diff --git a/content/docs/next/graph/index.html b/content/docs/next/graph/index.html
index 76dc23a..aaddd69 100644
--- a/content/docs/next/graph/index.html
+++ b/content/docs/next/graph/index.html
@@ -1,10 +1,10 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Computational Graph · Apache SINGA</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file distributed with this work for additional information regarding copyri [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Model · Apache SINGA</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file distributed with this work for additional information regarding copyright ownership. [...]
         document.addEventListener('DOMContentLoaded', function() {
           addBackToTop(
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -60,7 +60,7 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/singa-doc/blob/master/docs-site/docs/graph.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Computational Graph</h1></header><article><div><span><!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor l [...]
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/singa-doc/blob/master/docs-site/docs/graph.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Model</h1></header><article><div><span><!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreeme [...]
 <p>The forward and backward propagation in a neural network can be represented
 using a set of operations such as convolution and pooling. Each operation takes
 some input <a href="./tensor">tensors</a> and applies an <a href="./autograd">operator</a> to generate
@@ -69,60 +69,69 @@ edge, all operations form a computational graph. With the computational graph,
 speed and memory optimization can be conducted by scheduling the execution of
 the operations and memory allocation/release intelligently. In SINGA, users only
 need to define the neural network model using the
-<a href="https://github.com/apache/singa/blob/master/python/singa/module.py">Module</a>
-API. The graph is constructed and optimized at the C++ backend automatically.</p>
+<a href="https://github.com/apache/singa/blob/master/python/singa/model.py">Model</a> API.
+The graph is constructed and optimized at the C++ backend automatically.</p>
+<p>In this way, on the one hand, users implement a network using the
+<a href="./graph">Model</a> API following the imperative programming style like PyTorch.
+Different to PyTorch which recreates the operations in every iteration, SINGA
+buffers the operations to create a computational graph implicitly (when this
+feature is enabled) after the first iteration. Therefore, on the other hand,
+SINGA has a similar computational graph as the one created by libraries using
+declarative programming, e.g., TensorFlow. Consequently, it can enjoy the
+optimizations done over the graph.</p>
 <h2><a class="anchor" aria-hidden="true" id="example"></a><a href="#example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
-<p>The following code illustrates the usage of the <code>Module</code> API.</p>
+<p>The following code illustrates the usage of the <code>Model</code> API.</p>
 <ol>
-<li>Implement the new model as a subclass the Module class.</li>
+<li>Implement the new model as a subclass the Model class.</li>
 </ol>
-<pre><code class="hljs css language-Python"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">CNN</span><span class="hljs-params">(module.Module)</span>:</span>
+<pre><code class="hljs css language-Python"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">CNN</span><span class="hljs-params">(model.Model)</span>:</span>
 
-    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__init__</span><span class="hljs-params">(self, optimizer)</span>:</span>
+    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__init__</span><span class="hljs-params">(self, num_classes=<span class="hljs-number">10</span>, num_channels=<span class="hljs-number">1</span>)</span>:</span>
         super(CNN, self).__init__()
-        <span class="hljs-comment"># define layers</span>
-        self.conv1 = autograd.Conv2d(<span class="hljs-number">1</span>, <span class="hljs-number">20</span>, <span class="hljs-number">5</span>, padding=<span class="hljs-number">0</span>)
-        self.conv2 = autograd.Conv2d(<span class="hljs-number">20</span>, <span class="hljs-number">50</span>, <span class="hljs-number">5</span>, padding=<span class="hljs-number">0</span>)
-        self.linear1 = autograd.Linear(<span class="hljs-number">4</span> * <span class="hljs-number">4</span> * <span class="hljs-number">50</span>, <span class="hljs-number">500</span>)
-        self.linear2 = autograd.Linear(<span class="hljs-number">500</span>, <span class="hljs-number">10</span>)
-        self.pooling1 = autograd.MaxPool2d(<span class="hljs-number">2</span>, <span class="hljs-number">2</span>, padding=<span class="hljs-number">0</span>)
-        self.pooling2 = autograd.MaxPool2d(<span class="hljs-number">2</span>, <span class="hljs-number">2</span>, padding=<span class="hljs-number">0</span>)
-
-        self.optimizer = optimizer
+        self.conv1 = layer.Conv2d(num_channels, <span class="hljs-number">20</span>, <span class="hljs-number">5</span>, padding=<span class="hljs-number">0</span>, activation=<span class="hljs-string">"RELU"</span>)
+        self.conv2 = layer.Conv2d(<span class="hljs-number">20</span>, <span class="hljs-number">50</span>, <span class="hljs-number">5</span>, padding=<span class="hljs-number">0</span>, activation=<span class="hljs-string">"RELU"</span>)
+        self.linear1 = layer.Linear(<span class="hljs-number">500</span>)
+        self.linear2 = layer.Linear(num_classes)
+        self.pooling1 = layer.MaxPool2d(<span class="hljs-number">2</span>, <span class="hljs-number">2</span>, padding=<span class="hljs-number">0</span>)
+        self.pooling2 = layer.MaxPool2d(<span class="hljs-number">2</span>, <span class="hljs-number">2</span>, padding=<span class="hljs-number">0</span>)
+        self.relu = layer.ReLU()
+        self.flatten = layer.Flatten()
+        self.softmax_cross_entropy = layer.SoftMaxCrossEntropy()
 
     <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">forward</span><span class="hljs-params">(self, x)</span>:</span>
-        <span class="hljs-comment"># define the forward operations</span>
         y = self.conv1(x)
-        y = autograd.relu(y)
         y = self.pooling1(y)
         y = self.conv2(y)
-        y = autograd.relu(y)
         y = self.pooling2(y)
-        y = autograd.flatten(y)
+        y = self.flatten(y)
         y = self.linear1(y)
-        y = autograd.relu(y)
+        y = self.relu(y)
         y = self.linear2(y)
         <span class="hljs-keyword">return</span> y
 
-    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">loss</span><span class="hljs-params">(self, x, ty)</span>:</span>
-        <span class="hljs-comment"># define the training loss</span>
-        <span class="hljs-keyword">return</span> autograd.softmax_cross_entropy(x, ty)
-
-    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">optim</span><span class="hljs-params">(self, loss)</span>:</span>
-        <span class="hljs-comment"># update the parameters using SGD algorithms</span>
-        self.optimizer.backward_and_update(loss)
+    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">train_one_batch</span><span class="hljs-params">(self, x, y)</span>:</span>
+        out = self.forward(x)
+        loss = self.softmax_cross_entropy(out, y)
+        self.optimizer(loss)
+        <span class="hljs-keyword">return</span> out, loss
 </code></pre>
 <ol start="2">
-<li>Create an instance of the model, and do some configurations</li>
+<li>Create an instance of model, optimizer, device, etc. Compile the model</li>
 </ol>
-<pre><code class="hljs css language-python">model = CNN(sgd)
-<span class="hljs-comment"># set the mode of running the operations:</span>
-<span class="hljs-comment"># True for training; False for evaluation</span>
-model.train(mode=<span class="hljs-literal">True</span>)
-<span class="hljs-comment"># set the device for running the operations</span>
-model.on_device(dev)
-<span class="hljs-comment"># whether to create the graph or run the operations imperatively</span>
-model.graph(mode=<span class="hljs-literal">True</span>)
+<pre><code class="hljs css language-python">model = CNN()
+
+<span class="hljs-comment"># initialize optimizer and attach it to the model</span>
+sgd = opt.SGD(lr=<span class="hljs-number">0.005</span>, momentum=<span class="hljs-number">0.9</span>, weight_decay=<span class="hljs-number">1e-5</span>)
+
+<span class="hljs-comment"># initialize device</span>
+dev = device.create_cuda_gpu()
+
+<span class="hljs-comment"># input and target placeholders for the model</span>
+tx = tensor.Tensor((batch_size, <span class="hljs-number">1</span>, IMG_SIZE, IMG_SIZE), dev, tensor.float32)
+ty = tensor.Tensor((batch_size, num_classes), dev, tensor.int32)
+
+<span class="hljs-comment"># compile the model before training</span>
+model.compile([tx], is_train=<span class="hljs-literal">True</span>, use_graph=<span class="hljs-literal">True</span>, sequential=<span class="hljs-literal">False</span>)
 </code></pre>
 <ol start="3">
 <li>Train the model iteratively</li>
@@ -135,17 +144,14 @@ model.graph(mode=<span class="hljs-literal">True</span>)
     tx.copy_from_numpy(x)
     ty.copy_from_numpy(y)
 
-    <span class="hljs-comment"># run forward propagation</span>
-    out = model(tx)
-    loss = model.loss(out, ty)
-    <span class="hljs-comment"># run backward propagation</span>
-    model.optim(loss)
+    <span class="hljs-comment"># Training with one batch</span>
+    out, loss = model(tx, ty)
 </code></pre>
 <p>A Google Colab notebook of this example is available
 <a href="https://colab.research.google.com/drive/1fbGUs1AsoX6bU5F745RwQpohP4bHTktq">here</a>.</p>
 <p>More examples:</p>
 <ul>
-<li><a href="https://github.com/apache/singa/blob/master/examples/mlp/module.py">MLP</a></li>
+<li><a href="https://github.com/apache/singa/blob/master/examples/mlp/model.py">MLP</a></li>
 <li><a href="https://github.com/apache/singa/blob/master/examples/cnn/model/cnn.py">CNN</a></li>
 <li><a href="https://github.com/apache/singa/blob/master/examples/cnn/model/resnet.py">ResNet</a></li>
 </ul>
@@ -158,17 +164,25 @@ model.graph(mode=<span class="hljs-literal">True</span>)
 <li>create the nodes and edges based on the dependencies</li>
 </ol>
 <p>Take the matrix multiplication operation from the dense layer of a
-<a href="https://github.com/apache/singa/blob/master/examples/mlp/module.py">MLP model</a>
+<a href="https://github.com/apache/singa/blob/master/examples/mlp/model.py">MLP model</a>
 as an example. The operation is called in the <code>forward</code> function of the MLP
 class</p>
-<pre><code class="hljs css language-python"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">MLP</span><span class="hljs-params">(module.Module)</span>:</span>
+<pre><code class="hljs css language-python"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">MLP</span><span class="hljs-params">(model.Model)</span>:</span>
+&lt;&lt;&lt;&lt;&lt;&lt;&lt; HEAD
+=======
+
+    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__init__</span><span class="hljs-params">(self, data_size=<span class="hljs-number">10</span>, perceptron_size=<span class="hljs-number">100</span>, num_classes=<span class="hljs-number">10</span>)</span>:</span>
+        super(MLP, self).__init__()
+        self.linear1 = layer.Linear(perceptron_size)
+        ...
+&gt;&gt;&gt;&gt;&gt;&gt;&gt; upstream/master
 
     <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">forward</span><span class="hljs-params">(self, inputs)</span>:</span>
-        x = autograd.matmul(inputs, self.w0)
+        y = self.linear1(inputs)
         ...
 </code></pre>
-<p><code>autograd</code> implements the <code>matmul</code> operator by calling the function <code>Mult</code>
-exposed from CPP via SWIG.</p>
+<p>The <code>Linear</code> layer is composed of the <code>mutmul</code> operator. <code>autograd</code> implements
+the <code>matmul</code> operator by calling the function <code>Mult</code> exposed from CPP via SWIG.</p>
 <pre><code class="hljs css language-python"><span class="hljs-comment"># implementation of matmul()</span>
 singa.Mult(inputs, w)
 </code></pre>
@@ -185,7 +199,7 @@ C-&gt;device()-&gt;Exec(
 <p>The <code>Exec</code> function of <code>Device</code> buffers the function and its arguments. In
 addition, it also has the information about the blocks (a block is a chunk of
 memory for a tensor) to be read and written by this function.</p>
-<p>Once <code>Module.forward()</code> has been executed once, all operations are buffered by
+<p>Once <code>Model.forward()</code> has been executed once, all operations are buffered by
 <code>Device</code>. Next, the read/write information of all operations are analyzed to
 create the computational graph. For example, if a block <code>b</code> is written by one
 operation O1 and is later read by another operation O2, we would know O2 depends
@@ -331,7 +345,7 @@ operator implemented at the backend.</p>
 <ul>
 <li>Using layer: ResNet50 in
 <a href="https://github.com/apache/singa/blob/master/examples/cnn/autograd/resnet_cifar10.py">resnet.py</a></li>
-<li>Using module: ResNet50 in
+<li>Using model: ResNet50 in
 <a href="https://github.com/apache/singa/blob/master/examples/cnn/model/resnet.py">resnet.py</a></li>
 </ul></li>
 <li>GPU: NVIDIA RTX 2080Ti</li>
@@ -370,7 +384,7 @@ operator implemented at the backend.</p>
           <td>1.0000</td>
       </tr>
       <tr>
-          <td nowrap>module:disable graph</td>
+          <td nowrap>model:disable graph</td>
           <td>4995</td>
           <td>14.1264</td>
           <td>14.1579</td>
@@ -379,7 +393,7 @@ operator implemented at the backend.</p>
           <td>1.0049</td>
       </tr>
       <tr>
-          <td nowrap>module:enable graph, bfs</td>
+          <td nowrap>model:enable graph, bfs</td>
           <td>3283</td>
           <td>13.7438</td>
           <td>14.5520</td>
@@ -388,7 +402,7 @@ operator implemented at the backend.</p>
           <td>1.0328</td>
       </tr>
       <tr>
-          <td nowrap>module:enable graph, serial</td>
+          <td nowrap>model:enable graph, serial</td>
           <td>3265</td>
           <td>13.7420</td>
           <td>14.5540</td>
@@ -407,7 +421,7 @@ operator implemented at the backend.</p>
           <td>1.0000</td>
       </tr>
       <tr>
-          <td nowrap>module:disable graph</td>
+          <td nowrap>model:disable graph</td>
           <td>10109</td>
           <td>13.2952</td>
           <td>7.5315</td>
@@ -416,7 +430,7 @@ operator implemented at the backend.</p>
           <td>1.0123</td>
       </tr>
       <tr>
-          <td nowrap>module:enable graph, bfs</td>
+          <td nowrap>model:enable graph, bfs</td>
           <td>6839</td>
           <td>13.1059</td>
           <td>7.6302</td>
@@ -425,7 +439,7 @@ operator implemented at the backend.</p>
           <td>1.0269</td>
       </tr>
       <tr>
-          <td nowrap>module:enable graph, serial</td>
+          <td nowrap>model:enable graph, serial</td>
           <td>6845</td>
           <td>13.0489</td>
           <td>7.6635</td>
@@ -440,11 +454,11 @@ operator implemented at the backend.</p>
 <ul>
 <li>Experiment settings
 <ul>
-<li>Model
+<li>API
 <ul>
 <li>using Layer: ResNet50 in
 <a href="https://github.com/apache/singa/blob/master/examples/cnn/autograd/resnet_dist.py">resnet_dist.py</a></li>
-<li>using Module: ResNet50 in
+<li>using Model: ResNet50 in
 <a href="https://github.com/apache/singa/blob/master/examples/cnn/model/resnet.py">resnet.py</a></li>
 </ul></li>
 <li>GPU: NVIDIA RTX 2080Ti * 2</li>
@@ -474,7 +488,7 @@ operator implemented at the backend.</p>
           <td>1.0000</td>
       </tr>
       <tr>
-          <td nowrap>module:disable graph</td>
+          <td nowrap>model:disable graph</td>
           <td>5427</td>
           <td>17.8232</td>
           <td>11.2213</td>
@@ -483,7 +497,7 @@ operator implemented at the backend.</p>
           <td>0.9725</td>
       </tr>
       <tr>
-          <td nowrap>module:enable graph, bfs</td>
+          <td nowrap>model:enable graph, bfs</td>
           <td>3389</td>
           <td>18.2310</td>
           <td>10.9703</td>
@@ -492,7 +506,7 @@ operator implemented at the backend.</p>
           <td>0.9507</td>
       </tr>
       <tr>
-          <td nowrap>module:enable graph, serial</td>
+          <td nowrap>model:enable graph, serial</td>
           <td>3437</td>
           <td>17.0389</td>
           <td>11.7378</td>
@@ -511,7 +525,7 @@ operator implemented at the backend.</p>
           <td>1.0000</td>
       </tr>
       <tr>
-          <td nowrap>module:disable graph</td>
+          <td nowrap>model:disable graph</td>
           <td>10503</td>
           <td>14.7746</td>
           <td>6.7684</td>
@@ -520,7 +534,7 @@ operator implemented at the backend.</p>
           <td>1.0060</td>
       </tr>
       <tr>
-          <td nowrap>module:enable graph, bfs</td>
+          <td nowrap>model:enable graph, bfs</td>
           <td>6935</td>
           <td>14.8553</td>
           <td>6.7316</td>
@@ -529,7 +543,7 @@ operator implemented at the backend.</p>
           <td>1.0006</td>
       </tr>
       <tr>
-          <td nowrap>module:enable graph, serial</td>
+          <td nowrap>model:enable graph, serial</td>
           <td>7027</td>
           <td>14.3271</td>
           <td>6.9798</td>
@@ -547,7 +561,7 @@ memory footprint.</li>
 <li>Currently, there is a little improvement in terms of speed. More optimizations
 can be done towards the efficiency.</li>
 </ul>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/13/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/next/autograd"><span class="arrow-prev">← </span><span>Autograd</span></a><a class="docs-next button" href="/docs/next/onnx"><span>ONNX</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#example">Example</a></li><li><a href="#implementation">Implementation [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 9/24/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/next/autograd"><span class="arrow-prev">← </span><span>Autograd</span></a><a class="docs-next button" href="/docs/next/onnx"><span>ONNX</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#example">Example</a></li><li><a href="#implementation">Implementation [...]
    The Apache Software Foundation. All rights reserved.
    Apache SINGA, Apache, the Apache feather logo, and
    the Apache SINGA project logos are trademarks of The
diff --git a/content/docs/next/how-to-release.html b/content/docs/next/how-to-release.html
index 130bca6..556c201 100644
--- a/content/docs/next/how-to-release.html
+++ b/content/docs/next/how-to-release.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/next/how-to-release/index.html b/content/docs/next/how-to-release/index.html
index 130bca6..556c201 100644
--- a/content/docs/next/how-to-release/index.html
+++ b/content/docs/next/how-to-release/index.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/next/installation.html b/content/docs/next/installation.html
index 07fdbbb..65024d4 100644
--- a/content/docs/next/installation.html
+++ b/content/docs/next/installation.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -69,13 +69,13 @@ After installing miniconda, execute the one of the following commands to install
 SINGA.</p>
 <ol>
 <li>CPU only
-<a href="https://colab.research.google.com/drive/1Ntkhi-Z6XTR8WYPXiLwujHd2dOm0772V"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"></a></li>
+<a href="https://colab.research.google.com/drive/1Ntkhi-Z6XTR8WYPXiLwujHd2dOm0772V?usp=sharing"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"></a></li>
 </ol>
 <pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> conda install -c nusdbsystem -c conda-forge singa-cpu</span>
 </code></pre>
 <ol start="2">
 <li>GPU with CUDA and cuDNN (CUDA driver &gt;=384.81 is required)
-<a href="https://colab.research.google.com/drive/1do_TLJe18IthLOnBOsHCEe-FFPGk1sPJ"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"></a></li>
+<a href="https://colab.research.google.com/drive/1do_TLJe18IthLOnBOsHCEe-FFPGk1sPJ?usp=sharing"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"></a></li>
 </ol>
 <pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> conda install -c nusdbsystem -c conda-forge singa-gpu</span>
 </code></pre>
@@ -100,22 +100,24 @@ singa                      2.1.0.dev        cpu_py37  nusdbsystem
 <p>then SINGA is installed successfully.</p>
 <h2><a class="anchor" aria-hidden="true" id="using-pip"></a><a href="#using-pip" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
 <ol>
-<li>CPU only</li>
+<li>CPU only
+<a href="https://colab.research.google.com/drive/17RA056Brwk0vBQTFaZ-l9EbqwADO0NA9?usp=sharing"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"></a></li>
 </ol>
 <pre><code class="hljs css language-bash">pip install singa -f http://singa.apache.org/docs/next/wheel-cpu.html --trusted-host singa.apache.org
 </code></pre>
 <p>You can install a specific version of SINGA via <code>singa==&lt;version&gt;</code>, where the
-<code>&lt;version&gt;</code> field should be replaced, e.g., <code>3.0.0</code>. The available SINGA
+<code>&lt;version&gt;</code> field should be replaced, e.g., <code>3.1.0</code>. The available SINGA
 versions are listed at the link.</p>
 <p>To install the latest develop version, replace the link with
 <a href="http://singa.apache.org/docs/next/wheel-cpu-dev.html">http://singa.apache.org/docs/next/wheel-cpu-dev.html</a></p>
 <ol start="2">
-<li>GPU With CUDA and cuDNN</li>
+<li>GPU With CUDA and cuDNN
+<a href="https://colab.research.google.com/drive/1W30IPCqj5fG8ADAQsFqclaCLyIclVcJL?usp=sharing"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"></a></li>
 </ol>
 <pre><code class="hljs css language-bash">pip install singa -f http://singa.apache.org/docs/next/wheel-cuda.html --trusted-host singa.apache.org
 </code></pre>
 <p>You can also configure SINGA version and the CUDA version, like
-<code>singa==3.0.0+cuda10.2</code>. The available combinations of SINGA version and CUDA
+<code>singa==3.1.0+cuda10.2</code>. The available combinations of SINGA version and CUDA
 version are listed at the link.</p>
 <p>To install the latest develop version, replace the link with
 <a href="http://singa.apache.org/docs/next/wheel-cuda-dev.html">http://singa.apache.org/docs/next/wheel-cuda-dev.html</a></p>
@@ -199,7 +201,7 @@ check your interpreter by <code>which python</code> and check the Python linked
 via <code>otool -L &lt;path to _singa_wrap.so&gt;</code>. This problem should be resolved if
 SINGA is installation via conda.</p></li>
 </ul>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 7/20/2020</em></div><div class="docs-prevnext"><a class="docs-next button" href="/docs/next/software-stack"><span>Software Stack</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#using-conda">Using Conda</a></li><li><a href="#using-pip">Using Pip</a></li><li><a href="#using-docker">Using Docker</a></li><li><a href="#from-source">From source [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 9/24/2020</em></div><div class="docs-prevnext"><a class="docs-next button" href="/docs/next/software-stack"><span>Software Stack</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#using-conda">Using Conda</a></li><li><a href="#using-pip">Using Pip</a></li><li><a href="#using-docker">Using Docker</a></li><li><a href="#from-source">From source [...]
    The Apache Software Foundation. All rights reserved.
    Apache SINGA, Apache, the Apache feather logo, and
    the Apache SINGA project logos are trademarks of The
diff --git a/content/docs/next/installation/index.html b/content/docs/next/installation/index.html
index 07fdbbb..65024d4 100644
--- a/content/docs/next/installation/index.html
+++ b/content/docs/next/installation/index.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -69,13 +69,13 @@ After installing miniconda, execute the one of the following commands to install
 SINGA.</p>
 <ol>
 <li>CPU only
-<a href="https://colab.research.google.com/drive/1Ntkhi-Z6XTR8WYPXiLwujHd2dOm0772V"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"></a></li>
+<a href="https://colab.research.google.com/drive/1Ntkhi-Z6XTR8WYPXiLwujHd2dOm0772V?usp=sharing"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"></a></li>
 </ol>
 <pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> conda install -c nusdbsystem -c conda-forge singa-cpu</span>
 </code></pre>
 <ol start="2">
 <li>GPU with CUDA and cuDNN (CUDA driver &gt;=384.81 is required)
-<a href="https://colab.research.google.com/drive/1do_TLJe18IthLOnBOsHCEe-FFPGk1sPJ"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"></a></li>
+<a href="https://colab.research.google.com/drive/1do_TLJe18IthLOnBOsHCEe-FFPGk1sPJ?usp=sharing"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"></a></li>
 </ol>
 <pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> conda install -c nusdbsystem -c conda-forge singa-gpu</span>
 </code></pre>
@@ -100,22 +100,24 @@ singa                      2.1.0.dev        cpu_py37  nusdbsystem
 <p>then SINGA is installed successfully.</p>
 <h2><a class="anchor" aria-hidden="true" id="using-pip"></a><a href="#using-pip" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
 <ol>
-<li>CPU only</li>
+<li>CPU only
+<a href="https://colab.research.google.com/drive/17RA056Brwk0vBQTFaZ-l9EbqwADO0NA9?usp=sharing"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"></a></li>
 </ol>
 <pre><code class="hljs css language-bash">pip install singa -f http://singa.apache.org/docs/next/wheel-cpu.html --trusted-host singa.apache.org
 </code></pre>
 <p>You can install a specific version of SINGA via <code>singa==&lt;version&gt;</code>, where the
-<code>&lt;version&gt;</code> field should be replaced, e.g., <code>3.0.0</code>. The available SINGA
+<code>&lt;version&gt;</code> field should be replaced, e.g., <code>3.1.0</code>. The available SINGA
 versions are listed at the link.</p>
 <p>To install the latest develop version, replace the link with
 <a href="http://singa.apache.org/docs/next/wheel-cpu-dev.html">http://singa.apache.org/docs/next/wheel-cpu-dev.html</a></p>
 <ol start="2">
-<li>GPU With CUDA and cuDNN</li>
+<li>GPU With CUDA and cuDNN
+<a href="https://colab.research.google.com/drive/1W30IPCqj5fG8ADAQsFqclaCLyIclVcJL?usp=sharing"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"></a></li>
 </ol>
 <pre><code class="hljs css language-bash">pip install singa -f http://singa.apache.org/docs/next/wheel-cuda.html --trusted-host singa.apache.org
 </code></pre>
 <p>You can also configure SINGA version and the CUDA version, like
-<code>singa==3.0.0+cuda10.2</code>. The available combinations of SINGA version and CUDA
+<code>singa==3.1.0+cuda10.2</code>. The available combinations of SINGA version and CUDA
 version are listed at the link.</p>
 <p>To install the latest develop version, replace the link with
 <a href="http://singa.apache.org/docs/next/wheel-cuda-dev.html">http://singa.apache.org/docs/next/wheel-cuda-dev.html</a></p>
@@ -199,7 +201,7 @@ check your interpreter by <code>which python</code> and check the Python linked
 via <code>otool -L &lt;path to _singa_wrap.so&gt;</code>. This problem should be resolved if
 SINGA is installation via conda.</p></li>
 </ul>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 7/20/2020</em></div><div class="docs-prevnext"><a class="docs-next button" href="/docs/next/software-stack"><span>Software Stack</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#using-conda">Using Conda</a></li><li><a href="#using-pip">Using Pip</a></li><li><a href="#using-docker">Using Docker</a></li><li><a href="#from-source">From source [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 9/24/2020</em></div><div class="docs-prevnext"><a class="docs-next button" href="/docs/next/software-stack"><span>Software Stack</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#using-conda">Using Conda</a></li><li><a href="#using-pip">Using Pip</a></li><li><a href="#using-docker">Using Docker</a></li><li><a href="#from-source">From source [...]
    The Apache Software Foundation. All rights reserved.
    Apache SINGA, Apache, the Apache feather logo, and
    the Apache SINGA project logos are trademarks of The
diff --git a/content/docs/next/onnx.html b/content/docs/next/onnx.html
index 3d30ba9..8a1d95d 100644
--- a/content/docs/next/onnx.html
+++ b/content/docs/next/onnx.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -564,6 +564,7 @@ pencil, and many animals.</p>
 <tr><td><b><a href="https://github.com/onnx/models/tree/master/vision/classification/mobilenet">MobileNet</a></b></td><td><a href="https://arxiv.org/abs/1801.04381">Sandler et al.</a></td><td>Light-weight deep neural network best suited for mobile and embedded vision applications. <br>Top-5 error from paper - ~10%</td><td><a href="https://colab.research.google.com/drive/1HsixqJMIpKyEPhkbB8jy7NwNEFEAUWAf"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Col [...]
 <tr><td><b><a href="https://github.com/onnx/models/tree/master/vision/classification/resnet">ResNet18</a></b></td><td><a href="https://arxiv.org/abs/1512.03385">He et al.</a></td><td>A CNN model (up to 152 layers). Uses shortcut connections to achieve higher accuracy when classifying images. <br> Top-5 error from paper - ~3.6%</td><td><a href="https://colab.research.google.com/drive/1u1RYefSsVbiP4I-5wiBKHjsT9L0FxLm9"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt [...]
 <tr><td><b><a href="https://github.com/onnx/models/tree/master/vision/classification/vgg">VGG16</a></b></td><td><a href="https://arxiv.org/abs/1409.1556">Simonyan et al.</a></td><td>Deep CNN model(up to 19 layers). Similar to AlexNet but uses multiple smaller kernel-sized filters that provides more accuracy when classifying images. <br>Top-5 error from paper - ~8%</td><td><a href="https://colab.research.google.com/drive/14kxgRKtbjPCKKsDJVNi3AvTev81Gp_Ds"><img src="https://colab.research. [...]
+<tr><td><b><a href="https://github.com/onnx/models/tree/master/vision/classification/shufflenet">ShuffleNet_V2</a></b></td><td><a href="https://arxiv.org/pdf/1707.01083.pdf">Simonyan et al.</a></td><td>Extremely computation efficient CNN model that is designed specifically for mobile devices. This network architecture design considers direct metric such as speed, instead of indirect metric like FLOP. Top-1 error from paper - ~30.6%</td><td>[<img src="https://colab.research.google.com/dri [...]
 </tbody>
 </table>
 <h3><a class="anchor" aria-hidden="true" id="object-detection"></a><a href="#object-detection" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
@@ -598,86 +599,90 @@ given context paragraph.</p>
 </thead>
 <tbody>
 <tr><td><b><a href="https://github.com/onnx/models/tree/master/text/machine_comprehension/bert-squad">BERT-Squad</a></b></td><td><a href="https://arxiv.org/pdf/1810.04805.pdf">Devlin et al.</a></td><td>This model answers questions based on the context of the given input paragraph.</td><td><a href="https://colab.research.google.com/drive/1kud-lUPjS_u-TkDAzihBTw0Vqr0FjCE-"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"></a></td></tr>
+<tr><td><b><a href="https://github.com/onnx/models/tree/master/text/machine_comprehension/roberta">RoBERTa</a></b></td><td><a href="https://arxiv.org/pdf/1907.11692.pdf">Devlin et al.</a></td><td>A large transformer-based model that predicts sentiment based on given input text.</td><td><a href="https://colab.research.google.com/drive/1F-c4LJSx3Cb2jW6tP7f8nAZDigyLH6iN?usp=sharing"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"></a></td></tr>
+<tr><td><b><a href="https://github.com/onnx/models/tree/master/text/machine_comprehension/gpt-2">GPT-2</a></b></td><td><a href="https://d4mucfpksywv.cloudfront.net/better-language-models/language_models_are_unsupervised_multitask_learners.pdf">Devlin et al.</a></td><td>A large transformer-based language model that given a sequence of words within some text, predicts the next word.</td><td>[<img src="https://colab.research.google.com/drive/1ZlXLSIMppPch6HgzKRillJiUcWn3PiK7?usp=sharing" al [...]
 </tbody>
 </table>
 <h2><a class="anchor" aria-hidden="true" id="supported-operators"></a><a href="#supported-operators" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
 <p>The following operators are supported:</p>
 <ul>
-<li>Conv</li>
-<li>Relu</li>
-<li>Constant</li>
-<li>MaxPool</li>
-<li>AveragePool</li>
-<li>Softmax</li>
-<li>Sigmoid</li>
-<li>Add</li>
-<li>MatMul</li>
-<li>BatchNormalization</li>
-<li>Concat</li>
-<li>Flatten</li>
-<li>Add</li>
-<li>Gemm</li>
-<li>Reshape</li>
-<li>Sum</li>
-<li>Cos</li>
-<li>Cosh</li>
-<li>Sin</li>
-<li>Sinh</li>
-<li>Tan</li>
-<li>Tanh</li>
 <li>Acos</li>
 <li>Acosh</li>
+<li>Add</li>
+<li>And</li>
 <li>Asin</li>
 <li>Asinh</li>
 <li>Atan</li>
 <li>Atanh</li>
-<li>Selu</li>
+<li>AveragePool</li>
+<li>BatchNormalization</li>
+<li>Cast</li>
+<li>Ceil</li>
+<li>Clip</li>
+<li>Concat</li>
+<li>ConstantOfShape</li>
+<li>Conv</li>
+<li>Cos</li>
+<li>Cosh</li>
+<li>Div</li>
+<li>Dropout</li>
 <li>Elu</li>
 <li>Equal</li>
-<li>Less</li>
-<li>Sign</li>
-<li>Div</li>
-<li>Sub</li>
-<li>Sqrt</li>
-<li>Log</li>
+<li>Erf</li>
+<li>Expand</li>
+<li>Flatten</li>
+<li>Gather</li>
+<li>Gemm</li>
+<li>GlobalAveragePool</li>
 <li>Greater</li>
 <li>HardSigmoid</li>
 <li>Identity</li>
-<li>Softplus</li>
-<li>Softsign</li>
-<li>Mean</li>
-<li>Pow</li>
-<li>Clip</li>
-<li>PRelu</li>
-<li>Mul</li>
-<li>Transpose</li>
+<li>LeakyRelu</li>
+<li>Less</li>
+<li>Log</li>
+<li>MatMul</li>
 <li>Max</li>
+<li>MaxPool</li>
+<li>Mean</li>
 <li>Min</li>
-<li>Shape</li>
-<li>And</li>
-<li>Or</li>
-<li>Xor</li>
-<li>Not</li>
+<li>Mul</li>
 <li>Neg</li>
+<li>NonZero</li>
+<li>Not</li>
+<li>OneHot</li>
+<li>Or</li>
+<li>Pad</li>
+<li>Pow</li>
+<li>PRelu</li>
 <li>Reciprocal</li>
-<li>LeakyRelu</li>
-<li>GlobalAveragePool</li>
-<li>ConstantOfShape</li>
-<li>Dropout</li>
-<li>ReduceSum</li>
 <li>ReduceMean</li>
-<li>LeakyRelu</li>
-<li>GlobalAveragePool</li>
-<li>Squeeze</li>
-<li>Unsqueeze</li>
+<li>ReduceSum</li>
+<li>Relu</li>
+<li>Reshape</li>
+<li>ScatterElements</li>
+<li>Selu</li>
+<li>Shape</li>
+<li>Sigmoid</li>
+<li>Sign</li>
+<li>Sin</li>
+<li>Sinh</li>
 <li>Slice</li>
-<li>Ceil</li>
+<li>Softmax</li>
+<li>Softplus</li>
+<li>Softsign</li>
 <li>Split</li>
-<li>Gather</li>
+<li>Sqrt</li>
+<li>Squeeze</li>
+<li>Sub</li>
+<li>Sum</li>
+<li>Tan</li>
+<li>Tanh</li>
 <li>Tile</li>
-<li>NonZero</li>
-<li>Cast</li>
-<li>OneHot</li>
+<li>Transpose</li>
+<li>Unsqueeze</li>
+<li>Upsample</li>
+<li>Where</li>
+<li>Xor</li>
 </ul>
 <h3><a class="anchor" aria-hidden="true" id="special-comments-for-onnx-backend"></a><a href="#special-comments-for-onnx-backend" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S1 [...]
 <ul>
@@ -752,7 +757,7 @@ of the model and run the SINGA operators one by one following the operators
 queue. The user can use <code>last_layers</code> to decide to run the model till the last
 few layers. Set <code>all_outputs</code> as <code>False</code> to get only the final output, <code>True</code> to
 also get all the intermediate output.</p>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/10/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/next/graph"><span class="arrow-prev">← </span><span>Computational Graph</span></a><a class="docs-next button" href="/docs/next/dist-train"><span>Distributed Training</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#general-usage">General usage</a><ul cla [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 9/20/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/next/graph"><span class="arrow-prev">← </span><span>Model</span></a><a class="docs-next button" href="/docs/next/dist-train"><span>Distributed Training</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#general-usage">General usage</a><ul class="toc-headin [...]
    The Apache Software Foundation. All rights reserved.
    Apache SINGA, Apache, the Apache feather logo, and
    the Apache SINGA project logos are trademarks of The
diff --git a/content/docs/next/onnx/index.html b/content/docs/next/onnx/index.html
index 3d30ba9..8a1d95d 100644
--- a/content/docs/next/onnx/index.html
+++ b/content/docs/next/onnx/index.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -564,6 +564,7 @@ pencil, and many animals.</p>
 <tr><td><b><a href="https://github.com/onnx/models/tree/master/vision/classification/mobilenet">MobileNet</a></b></td><td><a href="https://arxiv.org/abs/1801.04381">Sandler et al.</a></td><td>Light-weight deep neural network best suited for mobile and embedded vision applications. <br>Top-5 error from paper - ~10%</td><td><a href="https://colab.research.google.com/drive/1HsixqJMIpKyEPhkbB8jy7NwNEFEAUWAf"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Col [...]
 <tr><td><b><a href="https://github.com/onnx/models/tree/master/vision/classification/resnet">ResNet18</a></b></td><td><a href="https://arxiv.org/abs/1512.03385">He et al.</a></td><td>A CNN model (up to 152 layers). Uses shortcut connections to achieve higher accuracy when classifying images. <br> Top-5 error from paper - ~3.6%</td><td><a href="https://colab.research.google.com/drive/1u1RYefSsVbiP4I-5wiBKHjsT9L0FxLm9"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt [...]
 <tr><td><b><a href="https://github.com/onnx/models/tree/master/vision/classification/vgg">VGG16</a></b></td><td><a href="https://arxiv.org/abs/1409.1556">Simonyan et al.</a></td><td>Deep CNN model(up to 19 layers). Similar to AlexNet but uses multiple smaller kernel-sized filters that provides more accuracy when classifying images. <br>Top-5 error from paper - ~8%</td><td><a href="https://colab.research.google.com/drive/14kxgRKtbjPCKKsDJVNi3AvTev81Gp_Ds"><img src="https://colab.research. [...]
+<tr><td><b><a href="https://github.com/onnx/models/tree/master/vision/classification/shufflenet">ShuffleNet_V2</a></b></td><td><a href="https://arxiv.org/pdf/1707.01083.pdf">Simonyan et al.</a></td><td>Extremely computation efficient CNN model that is designed specifically for mobile devices. This network architecture design considers direct metric such as speed, instead of indirect metric like FLOP. Top-1 error from paper - ~30.6%</td><td>[<img src="https://colab.research.google.com/dri [...]
 </tbody>
 </table>
 <h3><a class="anchor" aria-hidden="true" id="object-detection"></a><a href="#object-detection" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
@@ -598,86 +599,90 @@ given context paragraph.</p>
 </thead>
 <tbody>
 <tr><td><b><a href="https://github.com/onnx/models/tree/master/text/machine_comprehension/bert-squad">BERT-Squad</a></b></td><td><a href="https://arxiv.org/pdf/1810.04805.pdf">Devlin et al.</a></td><td>This model answers questions based on the context of the given input paragraph.</td><td><a href="https://colab.research.google.com/drive/1kud-lUPjS_u-TkDAzihBTw0Vqr0FjCE-"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"></a></td></tr>
+<tr><td><b><a href="https://github.com/onnx/models/tree/master/text/machine_comprehension/roberta">RoBERTa</a></b></td><td><a href="https://arxiv.org/pdf/1907.11692.pdf">Devlin et al.</a></td><td>A large transformer-based model that predicts sentiment based on given input text.</td><td><a href="https://colab.research.google.com/drive/1F-c4LJSx3Cb2jW6tP7f8nAZDigyLH6iN?usp=sharing"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"></a></td></tr>
+<tr><td><b><a href="https://github.com/onnx/models/tree/master/text/machine_comprehension/gpt-2">GPT-2</a></b></td><td><a href="https://d4mucfpksywv.cloudfront.net/better-language-models/language_models_are_unsupervised_multitask_learners.pdf">Devlin et al.</a></td><td>A large transformer-based language model that given a sequence of words within some text, predicts the next word.</td><td>[<img src="https://colab.research.google.com/drive/1ZlXLSIMppPch6HgzKRillJiUcWn3PiK7?usp=sharing" al [...]
 </tbody>
 </table>
 <h2><a class="anchor" aria-hidden="true" id="supported-operators"></a><a href="#supported-operators" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
 <p>The following operators are supported:</p>
 <ul>
-<li>Conv</li>
-<li>Relu</li>
-<li>Constant</li>
-<li>MaxPool</li>
-<li>AveragePool</li>
-<li>Softmax</li>
-<li>Sigmoid</li>
-<li>Add</li>
-<li>MatMul</li>
-<li>BatchNormalization</li>
-<li>Concat</li>
-<li>Flatten</li>
-<li>Add</li>
-<li>Gemm</li>
-<li>Reshape</li>
-<li>Sum</li>
-<li>Cos</li>
-<li>Cosh</li>
-<li>Sin</li>
-<li>Sinh</li>
-<li>Tan</li>
-<li>Tanh</li>
 <li>Acos</li>
 <li>Acosh</li>
+<li>Add</li>
+<li>And</li>
 <li>Asin</li>
 <li>Asinh</li>
 <li>Atan</li>
 <li>Atanh</li>
-<li>Selu</li>
+<li>AveragePool</li>
+<li>BatchNormalization</li>
+<li>Cast</li>
+<li>Ceil</li>
+<li>Clip</li>
+<li>Concat</li>
+<li>ConstantOfShape</li>
+<li>Conv</li>
+<li>Cos</li>
+<li>Cosh</li>
+<li>Div</li>
+<li>Dropout</li>
 <li>Elu</li>
 <li>Equal</li>
-<li>Less</li>
-<li>Sign</li>
-<li>Div</li>
-<li>Sub</li>
-<li>Sqrt</li>
-<li>Log</li>
+<li>Erf</li>
+<li>Expand</li>
+<li>Flatten</li>
+<li>Gather</li>
+<li>Gemm</li>
+<li>GlobalAveragePool</li>
 <li>Greater</li>
 <li>HardSigmoid</li>
 <li>Identity</li>
-<li>Softplus</li>
-<li>Softsign</li>
-<li>Mean</li>
-<li>Pow</li>
-<li>Clip</li>
-<li>PRelu</li>
-<li>Mul</li>
-<li>Transpose</li>
+<li>LeakyRelu</li>
+<li>Less</li>
+<li>Log</li>
+<li>MatMul</li>
 <li>Max</li>
+<li>MaxPool</li>
+<li>Mean</li>
 <li>Min</li>
-<li>Shape</li>
-<li>And</li>
-<li>Or</li>
-<li>Xor</li>
-<li>Not</li>
+<li>Mul</li>
 <li>Neg</li>
+<li>NonZero</li>
+<li>Not</li>
+<li>OneHot</li>
+<li>Or</li>
+<li>Pad</li>
+<li>Pow</li>
+<li>PRelu</li>
 <li>Reciprocal</li>
-<li>LeakyRelu</li>
-<li>GlobalAveragePool</li>
-<li>ConstantOfShape</li>
-<li>Dropout</li>
-<li>ReduceSum</li>
 <li>ReduceMean</li>
-<li>LeakyRelu</li>
-<li>GlobalAveragePool</li>
-<li>Squeeze</li>
-<li>Unsqueeze</li>
+<li>ReduceSum</li>
+<li>Relu</li>
+<li>Reshape</li>
+<li>ScatterElements</li>
+<li>Selu</li>
+<li>Shape</li>
+<li>Sigmoid</li>
+<li>Sign</li>
+<li>Sin</li>
+<li>Sinh</li>
 <li>Slice</li>
-<li>Ceil</li>
+<li>Softmax</li>
+<li>Softplus</li>
+<li>Softsign</li>
 <li>Split</li>
-<li>Gather</li>
+<li>Sqrt</li>
+<li>Squeeze</li>
+<li>Sub</li>
+<li>Sum</li>
+<li>Tan</li>
+<li>Tanh</li>
 <li>Tile</li>
-<li>NonZero</li>
-<li>Cast</li>
-<li>OneHot</li>
+<li>Transpose</li>
+<li>Unsqueeze</li>
+<li>Upsample</li>
+<li>Where</li>
+<li>Xor</li>
 </ul>
 <h3><a class="anchor" aria-hidden="true" id="special-comments-for-onnx-backend"></a><a href="#special-comments-for-onnx-backend" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S1 [...]
 <ul>
@@ -752,7 +757,7 @@ of the model and run the SINGA operators one by one following the operators
 queue. The user can use <code>last_layers</code> to decide to run the model till the last
 few layers. Set <code>all_outputs</code> as <code>False</code> to get only the final output, <code>True</code> to
 also get all the intermediate output.</p>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/10/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/next/graph"><span class="arrow-prev">← </span><span>Computational Graph</span></a><a class="docs-next button" href="/docs/next/dist-train"><span>Distributed Training</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#general-usage">General usage</a><ul cla [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 9/20/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/next/graph"><span class="arrow-prev">← </span><span>Model</span></a><a class="docs-next button" href="/docs/next/dist-train"><span>Distributed Training</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#general-usage">General usage</a><ul class="toc-headin [...]
    The Apache Software Foundation. All rights reserved.
    Apache SINGA, Apache, the Apache feather logo, and
    the Apache SINGA project logos are trademarks of The
diff --git a/content/docs/next/software-stack.html b/content/docs/next/software-stack.html
index 8bf5e16..56873ac 100644
--- a/content/docs/next/software-stack.html
+++ b/content/docs/next/software-stack.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -68,8 +68,9 @@ learning models, hardware abstractions for scheduling and executing operations,
 and communication components for distributed training. The Python interface
 wraps some CPP data structures and provides additional high-level classes for
 neural network training, which makes it convenient to implement complex neural
-network models. Next, we introduce the software stack in a bottom-up manner.</p>
-<p><img src="/docs/assets/singav3-sw.png" alt="SINGA V3 software stack"> <br/> <strong>Figure 1 - SINGA V3
+network models.</p>
+<p>Next, we introduce the software stack in a bottom-up manner.</p>
+<p><img src="/docs/assets/singav3.1-sw.png" alt="SINGA V3 software stack"> <br/> <strong>Figure 1 - SINGA V3
 software stack.</strong></p>
 <h2><a class="anchor" aria-hidden="true" id="low-level-backend"></a><a href="#low-level-backend" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2- [...]
 <h3><a class="anchor" aria-hidden="true" id="device"></a><a href="#device" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
@@ -160,11 +161,19 @@ by recording the execution of the forward functions of the operators calling the
 backward functions automatically in the reverse order. All functions can be
 buffered by the <code>Scheduler</code> to create a <a href="./graph">computational graph</a> for
 efficiency and memory optimization.</p>
-<h3><a class="anchor" aria-hidden="true" id="module"></a><a href="#module" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
-<p><code>Module</code> provides an easy interface to implement new network models. You just
-need to inherit <code>Module</code> and define the forward propagation of the model by
-creating and calling the layers or operators. <code>Module</code> will do autograd and
-update the parameters via <code>Opt</code> automatically when training data is fed into it.</p>
+<h3><a class="anchor" aria-hidden="true" id="model"></a><a href="#model" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p><a href="./graph">Model</a> provides an easy interface to implement new network models. You
+just need to inherit <code>Model</code> and define the forward propagation of the model by
+creating and calling the layers or operators. <code>Model</code> will do autograd and
+update the parameters via <code>Opt</code> automatically when training data is fed into it.
+With the <code>Model</code> API, SINGA enjoys the advantages of imperative programming and
+declarative programming. Users implement a network using the <a href="./graph">Model</a>
+API following the imperative programming style like PyTorch. Different to
+PyTorch which recreates the operations in every iteration, SINGA buffers the
+operations to create a computational graph implicitly (when this feature is
+enabled) after the first iteration. The graph is similar to that created by
+libraries using declarative programming, e.g., TensorFlow. Therefore, SINGA can
+apply the memory and speed optimization techniques over the computational graph.</p>
 <h3><a class="anchor" aria-hidden="true" id="onnx"></a><a href="#onnx" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <p>To support ONNX, SINGA implmenets a <a href="./onnx">sonnx</a> module, which includes</p>
 <ul>
@@ -172,7 +181,7 @@ update the parameters via <code>Opt</code> automatically when training data is f
 <li>SingaBackend for loading onnx format model into SINGA for training and
 inference.</li>
 </ul>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/9/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/next/installation"><span class="arrow-prev">← </span><span>Installation</span></a><a class="docs-next button" href="/docs/next/examples"><span>Examples</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#low-level-backend">Low-level Backend</a><ul class="toc [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 9/24/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/next/installation"><span class="arrow-prev">← </span><span>Installation</span></a><a class="docs-next button" href="/docs/next/examples"><span>Examples</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#low-level-backend">Low-level Backend</a><ul class="to [...]
    The Apache Software Foundation. All rights reserved.
    Apache SINGA, Apache, the Apache feather logo, and
    the Apache SINGA project logos are trademarks of The
diff --git a/content/docs/next/software-stack/index.html b/content/docs/next/software-stack/index.html
index 8bf5e16..56873ac 100644
--- a/content/docs/next/software-stack/index.html
+++ b/content/docs/next/software-stack/index.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -68,8 +68,9 @@ learning models, hardware abstractions for scheduling and executing operations,
 and communication components for distributed training. The Python interface
 wraps some CPP data structures and provides additional high-level classes for
 neural network training, which makes it convenient to implement complex neural
-network models. Next, we introduce the software stack in a bottom-up manner.</p>
-<p><img src="/docs/assets/singav3-sw.png" alt="SINGA V3 software stack"> <br/> <strong>Figure 1 - SINGA V3
+network models.</p>
+<p>Next, we introduce the software stack in a bottom-up manner.</p>
+<p><img src="/docs/assets/singav3.1-sw.png" alt="SINGA V3 software stack"> <br/> <strong>Figure 1 - SINGA V3
 software stack.</strong></p>
 <h2><a class="anchor" aria-hidden="true" id="low-level-backend"></a><a href="#low-level-backend" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2- [...]
 <h3><a class="anchor" aria-hidden="true" id="device"></a><a href="#device" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
@@ -160,11 +161,19 @@ by recording the execution of the forward functions of the operators calling the
 backward functions automatically in the reverse order. All functions can be
 buffered by the <code>Scheduler</code> to create a <a href="./graph">computational graph</a> for
 efficiency and memory optimization.</p>
-<h3><a class="anchor" aria-hidden="true" id="module"></a><a href="#module" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
-<p><code>Module</code> provides an easy interface to implement new network models. You just
-need to inherit <code>Module</code> and define the forward propagation of the model by
-creating and calling the layers or operators. <code>Module</code> will do autograd and
-update the parameters via <code>Opt</code> automatically when training data is fed into it.</p>
+<h3><a class="anchor" aria-hidden="true" id="model"></a><a href="#model" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p><a href="./graph">Model</a> provides an easy interface to implement new network models. You
+just need to inherit <code>Model</code> and define the forward propagation of the model by
+creating and calling the layers or operators. <code>Model</code> will do autograd and
+update the parameters via <code>Opt</code> automatically when training data is fed into it.
+With the <code>Model</code> API, SINGA enjoys the advantages of imperative programming and
+declarative programming. Users implement a network using the <a href="./graph">Model</a>
+API following the imperative programming style like PyTorch. Different to
+PyTorch which recreates the operations in every iteration, SINGA buffers the
+operations to create a computational graph implicitly (when this feature is
+enabled) after the first iteration. The graph is similar to that created by
+libraries using declarative programming, e.g., TensorFlow. Therefore, SINGA can
+apply the memory and speed optimization techniques over the computational graph.</p>
 <h3><a class="anchor" aria-hidden="true" id="onnx"></a><a href="#onnx" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <p>To support ONNX, SINGA implmenets a <a href="./onnx">sonnx</a> module, which includes</p>
 <ul>
@@ -172,7 +181,7 @@ update the parameters via <code>Opt</code> automatically when training data is f
 <li>SingaBackend for loading onnx format model into SINGA for training and
 inference.</li>
 </ul>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/9/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/next/installation"><span class="arrow-prev">← </span><span>Installation</span></a><a class="docs-next button" href="/docs/next/examples"><span>Examples</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#low-level-backend">Low-level Backend</a><ul class="toc [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 9/24/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/next/installation"><span class="arrow-prev">← </span><span>Installation</span></a><a class="docs-next button" href="/docs/next/examples"><span>Examples</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#low-level-backend">Low-level Backend</a><ul class="to [...]
    The Apache Software Foundation. All rights reserved.
    Apache SINGA, Apache, the Apache feather logo, and
    the Apache SINGA project logos are trademarks of The
diff --git a/content/docs/next/team-list.html b/content/docs/next/team-list.html
index 94c0827..160e5eb 100644
--- a/content/docs/next/team-list.html
+++ b/content/docs/next/team-list.html
@@ -95,10 +95,13 @@ Zhejiang University, NetEase, Osaka University, yzBigData, etc.</p>
 <tr><th>Name</th><th>Email</th><th>Organization</th></tr>
 </thead>
 <tbody>
+<tr><td>Xiangrui Cai</td><td><a href="mailto:caixr@apache.org">caixr@apache.org</a></td><td>Nankai University</td></tr>
 <tr><td>Chonho Lee</td><td><a href="mailto:chonho@apache.org">chonho@apache.org</a></td><td>Osaka University</td></tr>
+<tr><td>Shicong Lin</td><td><a href="mailto:shicong@apache.org">shicong@apache.org</a></td><td>National University of Singapore</td></tr>
 <tr><td>Sheng Wang</td><td><a href="mailto:wangsh@apache.org">wangsh@apache.org</a></td><td>DAMO Academy, Alibaba Group</td></tr>
+<tr><td>Rulin Xing</td><td><a href="mailto:rulin@apache.org">rulin@apache.org</a></td><td>Huazhong University of Science and Technology</td></tr>
 <tr><td>Wanqi Xue</td><td><a href="mailto:xuewanqi@apache.org">xuewanqi@apache.org</a></td><td>Nanyang Technological University</td></tr>
-<tr><td>Xiangrui Cai</td><td><a href="mailto:caixr@apache.org">caixr@apache.org</a></td><td>Nankai University</td></tr>
+<tr><td>Joddiy Zhang</td><td><a href="mailto:joddiyzhang@apache.org">joddiyzhang@apache.org</a></td><td>National University of Singapore</td></tr>
 </tbody>
 </table>
 <h2><a class="anchor" aria-hidden="true" id="contributors"></a><a href="#contributors" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
@@ -108,20 +111,17 @@ Zhejiang University, NetEase, Osaka University, yzBigData, etc.</p>
 </thead>
 <tbody>
 <tr><td>Haibo Chen</td><td><a href="mailto:hzchenhaibo@corp.netease.com">hzchenhaibo@corp.netease.com</a></td><td>NetEase</td></tr>
+<tr><td>Shicheng Chen</td><td><a href="mailto:chengsc@comp.nus.edu.sg">chengsc@comp.nus.edu.sg</a></td><td>National University of Singapore</td></tr>
 <tr><td>Xin Ji</td><td><a href="mailto:vincent.j.xin@gmail.com">vincent.j.xin@gmail.com</a></td><td>Visenze, Singapore</td></tr>
 <tr><td>Anthony K. H. Tung</td><td><a href="mailto:atung@comp.nus.edu.sg">atung@comp.nus.edu.sg</a></td><td>National University of Singapore</td></tr>
 <tr><td>Ji Wang</td><td><a href="mailto:wangji@mzhtechnologies.com">wangji@mzhtechnologies.com</a></td><td>Hangzhou MZH Technologies</td></tr>
 <tr><td>Yuan Wang</td><td><a href="mailto:wangyuan@corp.netease.com">wangyuan@corp.netease.com</a></td><td>NetEase</td></tr>
 <tr><td>Wenfeng Wu</td><td><a href="mailto:dcswuw@gmail.com">dcswuw@gmail.com</a></td><td>Freelancer, China</td></tr>
-<tr><td>Chang Yao</td><td><a href="mailto:yaochang2009@gmail.com">yaochang2009@gmail.com</a></td><td>Hangzhou MZH Technologies</td></tr>
-<tr><td>Shicheng Chen</td><td><a href="mailto:chengsc@comp.nus.edu.sg">chengsc@comp.nus.edu.sg</a></td><td>National University of Singapore</td></tr>
-<tr><td>Joddiy Zhang</td><td><a href="mailto:joddiyzhang@gmail.com">joddiyzhang@gmail.com</a></td><td>National University of Singapore</td></tr>
-<tr><td>Shicong Lin</td><td><a href="mailto:dcslin@nus.edu.sg">dcslin@nus.edu.sg</a></td><td>National University of Singapore</td></tr>
 <tr><td>Kaiyuan Yang</td><td><a href="mailto:yangky@comp.nus.edu.sg">yangky@comp.nus.edu.sg</a></td><td>National University of Singapore</td></tr>
-<tr><td>Rulin Xing</td><td><a href="mailto:xjdkcsq3@gmail.com">xjdkcsq3@gmail.com</a></td><td>Huazhong University of Science and Technology</td></tr>
+<tr><td>Chang Yao</td><td><a href="mailto:yaochang2009@gmail.com">yaochang2009@gmail.com</a></td><td>Hangzhou MZH Technologies</td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/21/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/next/security"><span class="arrow-prev">← </span><span>Security</span></a><a class="docs-next button" href="/docs/next/history-singa"><span>History of SINGA</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#pmc">PMC</a></li><li><a href="#committers">Commi [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 6/28/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/next/security"><span class="arrow-prev">← </span><span>Security</span></a><a class="docs-next button" href="/docs/next/history-singa"><span>History of SINGA</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#pmc">PMC</a></li><li><a href="#committers">Commi [...]
    The Apache Software Foundation. All rights reserved.
    Apache SINGA, Apache, the Apache feather logo, and
    the Apache SINGA project logos are trademarks of The
diff --git a/content/docs/next/team-list/index.html b/content/docs/next/team-list/index.html
index 94c0827..160e5eb 100644
--- a/content/docs/next/team-list/index.html
+++ b/content/docs/next/team-list/index.html
@@ -95,10 +95,13 @@ Zhejiang University, NetEase, Osaka University, yzBigData, etc.</p>
 <tr><th>Name</th><th>Email</th><th>Organization</th></tr>
 </thead>
 <tbody>
+<tr><td>Xiangrui Cai</td><td><a href="mailto:caixr@apache.org">caixr@apache.org</a></td><td>Nankai University</td></tr>
 <tr><td>Chonho Lee</td><td><a href="mailto:chonho@apache.org">chonho@apache.org</a></td><td>Osaka University</td></tr>
+<tr><td>Shicong Lin</td><td><a href="mailto:shicong@apache.org">shicong@apache.org</a></td><td>National University of Singapore</td></tr>
 <tr><td>Sheng Wang</td><td><a href="mailto:wangsh@apache.org">wangsh@apache.org</a></td><td>DAMO Academy, Alibaba Group</td></tr>
+<tr><td>Rulin Xing</td><td><a href="mailto:rulin@apache.org">rulin@apache.org</a></td><td>Huazhong University of Science and Technology</td></tr>
 <tr><td>Wanqi Xue</td><td><a href="mailto:xuewanqi@apache.org">xuewanqi@apache.org</a></td><td>Nanyang Technological University</td></tr>
-<tr><td>Xiangrui Cai</td><td><a href="mailto:caixr@apache.org">caixr@apache.org</a></td><td>Nankai University</td></tr>
+<tr><td>Joddiy Zhang</td><td><a href="mailto:joddiyzhang@apache.org">joddiyzhang@apache.org</a></td><td>National University of Singapore</td></tr>
 </tbody>
 </table>
 <h2><a class="anchor" aria-hidden="true" id="contributors"></a><a href="#contributors" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
@@ -108,20 +111,17 @@ Zhejiang University, NetEase, Osaka University, yzBigData, etc.</p>
 </thead>
 <tbody>
 <tr><td>Haibo Chen</td><td><a href="mailto:hzchenhaibo@corp.netease.com">hzchenhaibo@corp.netease.com</a></td><td>NetEase</td></tr>
+<tr><td>Shicheng Chen</td><td><a href="mailto:chengsc@comp.nus.edu.sg">chengsc@comp.nus.edu.sg</a></td><td>National University of Singapore</td></tr>
 <tr><td>Xin Ji</td><td><a href="mailto:vincent.j.xin@gmail.com">vincent.j.xin@gmail.com</a></td><td>Visenze, Singapore</td></tr>
 <tr><td>Anthony K. H. Tung</td><td><a href="mailto:atung@comp.nus.edu.sg">atung@comp.nus.edu.sg</a></td><td>National University of Singapore</td></tr>
 <tr><td>Ji Wang</td><td><a href="mailto:wangji@mzhtechnologies.com">wangji@mzhtechnologies.com</a></td><td>Hangzhou MZH Technologies</td></tr>
 <tr><td>Yuan Wang</td><td><a href="mailto:wangyuan@corp.netease.com">wangyuan@corp.netease.com</a></td><td>NetEase</td></tr>
 <tr><td>Wenfeng Wu</td><td><a href="mailto:dcswuw@gmail.com">dcswuw@gmail.com</a></td><td>Freelancer, China</td></tr>
-<tr><td>Chang Yao</td><td><a href="mailto:yaochang2009@gmail.com">yaochang2009@gmail.com</a></td><td>Hangzhou MZH Technologies</td></tr>
-<tr><td>Shicheng Chen</td><td><a href="mailto:chengsc@comp.nus.edu.sg">chengsc@comp.nus.edu.sg</a></td><td>National University of Singapore</td></tr>
-<tr><td>Joddiy Zhang</td><td><a href="mailto:joddiyzhang@gmail.com">joddiyzhang@gmail.com</a></td><td>National University of Singapore</td></tr>
-<tr><td>Shicong Lin</td><td><a href="mailto:dcslin@nus.edu.sg">dcslin@nus.edu.sg</a></td><td>National University of Singapore</td></tr>
 <tr><td>Kaiyuan Yang</td><td><a href="mailto:yangky@comp.nus.edu.sg">yangky@comp.nus.edu.sg</a></td><td>National University of Singapore</td></tr>
-<tr><td>Rulin Xing</td><td><a href="mailto:xjdkcsq3@gmail.com">xjdkcsq3@gmail.com</a></td><td>Huazhong University of Science and Technology</td></tr>
+<tr><td>Chang Yao</td><td><a href="mailto:yaochang2009@gmail.com">yaochang2009@gmail.com</a></td><td>Hangzhou MZH Technologies</td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/21/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/next/security"><span class="arrow-prev">← </span><span>Security</span></a><a class="docs-next button" href="/docs/next/history-singa"><span>History of SINGA</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#pmc">PMC</a></li><li><a href="#committers">Commi [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 6/28/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/next/security"><span class="arrow-prev">← </span><span>Security</span></a><a class="docs-next button" href="/docs/next/history-singa"><span>History of SINGA</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#pmc">PMC</a></li><li><a href="#committers">Commi [...]
    The Apache Software Foundation. All rights reserved.
    Apache SINGA, Apache, the Apache feather logo, and
    the Apache SINGA project logos are trademarks of The
diff --git a/content/docs/next/tensor.html b/content/docs/next/tensor.html
index 4beb55e..e4c89d6 100644
--- a/content/docs/next/tensor.html
+++ b/content/docs/next/tensor.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -90,6 +90,13 @@ array([[<span class="hljs-number">1.</span>, <span class="hljs-number">0.</span>
  [<span class="hljs-number">0.</span> <span class="hljs-number">1.</span>]
  [<span class="hljs-number">0.</span> <span class="hljs-number">0.</span>]]
 </code></pre>
+<p><code>tensor</code> transformation up to 6 dims</p>
+<pre><code class="hljs css language-python"><span class="hljs-meta">&gt;&gt;&gt; </span>a = tensor.random((<span class="hljs-number">2</span>,<span class="hljs-number">3</span>,<span class="hljs-number">4</span>,<span class="hljs-number">5</span>,<span class="hljs-number">6</span>,<span class="hljs-number">7</span>))
+<span class="hljs-meta">&gt;&gt;&gt; </span>a.shape
+(<span class="hljs-number">2</span>, <span class="hljs-number">3</span>, <span class="hljs-number">4</span>, <span class="hljs-number">5</span>, <span class="hljs-number">6</span>, <span class="hljs-number">7</span>)
+<span class="hljs-meta">&gt;&gt;&gt; </span>a.reshape((<span class="hljs-number">2</span>,<span class="hljs-number">3</span>,<span class="hljs-number">4</span>,<span class="hljs-number">5</span>,<span class="hljs-number">7</span>,<span class="hljs-number">6</span>)).transpose((<span class="hljs-number">3</span>,<span class="hljs-number">2</span>,<span class="hljs-number">1</span>,<span class="hljs-number">0</span>,<span class="hljs-number">4</span>,<span class="hljs-number">5</span>)).shape
+(<span class="hljs-number">5</span>, <span class="hljs-number">4</span>, <span class="hljs-number">3</span>, <span class="hljs-number">2</span>, <span class="hljs-number">7</span>, <span class="hljs-number">6</span>)
+</code></pre>
 <h3><a class="anchor" aria-hidden="true" id="tensor-arithmetic-methods"></a><a href="#tensor-arithmetic-methods" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c [...]
 <p><code>tensor</code> is evaluated in real time.</p>
 <pre><code class="hljs css language-python"><span class="hljs-meta">&gt;&gt;&gt; </span>t + <span class="hljs-number">1</span>
@@ -99,6 +106,33 @@ array([[<span class="hljs-number">1.</span>, <span class="hljs-number">0.</span>
 [[<span class="hljs-number">0.2</span> <span class="hljs-number">0.</span>  <span class="hljs-number">0.</span> ]
  [<span class="hljs-number">0.</span>  <span class="hljs-number">0.2</span> <span class="hljs-number">0.</span> ]]
 </code></pre>
+<p><code>tensor</code> broadcasting arithmetic:</p>
+<pre><code class="hljs css language-python"><span class="hljs-meta">&gt;&gt;&gt; </span>a
+[[<span class="hljs-number">1.</span> <span class="hljs-number">2.</span> <span class="hljs-number">3.</span>]
+ [<span class="hljs-number">4.</span> <span class="hljs-number">5.</span> <span class="hljs-number">6.</span>]]
+<span class="hljs-meta">&gt;&gt;&gt; </span>b
+[[<span class="hljs-number">1.</span> <span class="hljs-number">2.</span> <span class="hljs-number">3.</span>]]
+<span class="hljs-meta">&gt;&gt;&gt; </span>a + b
+[[<span class="hljs-number">2.</span> <span class="hljs-number">4.</span> <span class="hljs-number">6.</span>]
+ [<span class="hljs-number">5.</span> <span class="hljs-number">7.</span> <span class="hljs-number">9.</span>]]
+<span class="hljs-meta">&gt;&gt;&gt; </span>a * b
+[[ <span class="hljs-number">1.</span>  <span class="hljs-number">4.</span>  <span class="hljs-number">9.</span>]
+ [ <span class="hljs-number">4.</span> <span class="hljs-number">10.</span> <span class="hljs-number">18.</span>]]
+<span class="hljs-meta">&gt;&gt;&gt; </span>a / b
+[[<span class="hljs-number">1.</span>  <span class="hljs-number">1.</span>  <span class="hljs-number">1.</span> ]
+ [<span class="hljs-number">4.</span>  <span class="hljs-number">2.5</span> <span class="hljs-number">2.</span> ]]
+<span class="hljs-meta">&gt;&gt;&gt; </span>a/=b <span class="hljs-comment"># inplace operation</span>
+<span class="hljs-meta">&gt;&gt;&gt; </span>a
+[[<span class="hljs-number">1.</span>  <span class="hljs-number">1.</span>  <span class="hljs-number">1.</span> ]
+ [<span class="hljs-number">4.</span>  <span class="hljs-number">2.5</span> <span class="hljs-number">2.</span> ]]
+</code></pre>
+<p><code>tensor</code> broadcasting on matrix multiplication (GEMM)</p>
+<pre><code class="hljs css language-python"><span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> singa <span class="hljs-keyword">import</span> tensor
+<span class="hljs-meta">&gt;&gt;&gt; </span>a = tensor.random((<span class="hljs-number">2</span>,<span class="hljs-number">2</span>,<span class="hljs-number">2</span>,<span class="hljs-number">3</span>))
+<span class="hljs-meta">&gt;&gt;&gt; </span>b = tensor.random((<span class="hljs-number">2</span>,<span class="hljs-number">3</span>,<span class="hljs-number">4</span>))
+<span class="hljs-meta">&gt;&gt;&gt; </span>tensor.mult(a,b).shape
+(<span class="hljs-number">2</span>, <span class="hljs-number">2</span>, <span class="hljs-number">2</span>, <span class="hljs-number">4</span>)
+</code></pre>
 <h3><a class="anchor" aria-hidden="true" id="tensor-functions"></a><a href="#tensor-functions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
 <p>Functions in module <code>singa.tensor</code> return new <code>tensor</code> object after applying the
 transformation defined in the function.</p>
@@ -119,50 +153,49 @@ between <code>device</code>s via <code>to_device()</code> function.</p>
 <span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-comment"># move to host</span>
 <span class="hljs-meta">&gt;&gt;&gt; </span>x.to_device(device.get_default_device())
 </code></pre>
-<h3><a class="anchor" aria-hidden="true" id="simple-neural-network-example"></a><a href="#simple-neural-network-example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
-<pre><code class="hljs css language-python"><span class="hljs-keyword">from</span> singa <span class="hljs-keyword">import</span> device
-<span class="hljs-keyword">from</span> singa <span class="hljs-keyword">import</span> tensor
-<span class="hljs-keyword">from</span> singa <span class="hljs-keyword">import</span> opt
-<span class="hljs-keyword">from</span> singa <span class="hljs-keyword">import</span> autograd
-<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">MLP</span>:</span>
-    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__init__</span><span class="hljs-params">(self)</span>:</span>
-        self.linear1 = autograd.Linear(<span class="hljs-number">3</span>, <span class="hljs-number">4</span>)
-        self.linear2 = autograd.Linear(<span class="hljs-number">4</span>, <span class="hljs-number">5</span>)
-    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">forward</span><span class="hljs-params">(self, x)</span>:</span>
-        y=self.linear1(x)
-        <span class="hljs-keyword">return</span> self.linear2(y)
-<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">train</span><span class="hljs-params">(model, x, t, dev, epochs=<span class="hljs-number">10</span>)</span>:</span>
-    <span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> range(epochs):
-        y = model.forward(x)
-        loss = autograd.mse_loss(y, t)
-        print(<span class="hljs-string">"loss: "</span>, loss)
-        sgd = opt.SGD()
-        <span class="hljs-keyword">for</span> p, gp <span class="hljs-keyword">in</span> autograd.backward(loss):
-            sgd.update(p, gp)
-        sgd.step()
-    print(<span class="hljs-string">"training completed"</span>)
-<span class="hljs-keyword">if</span> __name__ == <span class="hljs-string">"__main__"</span>:
-    autograd.training = <span class="hljs-literal">True</span>
-    model = MLP()
-    dev = device.get_default_device()
-    x = tensor.Tensor((<span class="hljs-number">2</span>, <span class="hljs-number">3</span>), dev)
-    t = tensor.Tensor((<span class="hljs-number">2</span>, <span class="hljs-number">5</span>), dev)
-    x.gaussian(<span class="hljs-number">1</span>,<span class="hljs-number">1</span>)
-    t.gaussian(<span class="hljs-number">1</span>,<span class="hljs-number">1</span>)
-    train(model, x, t, dev)
+<h3><a class="anchor" aria-hidden="true" id="use-tensor-to-train-mlp"></a><a href="#use-tensor-to-train-mlp" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 [...]
+<pre><code class="hljs css language-python">
+<span class="hljs-string">"""
+  code snipet from examples/mlp/module.py
+"""</span>
+
+label = get_label()
+data = get_data()
+
+dev = device.create_cuda_gpu_on(<span class="hljs-number">0</span>)
+sgd = opt.SGD(<span class="hljs-number">0.05</span>)
+
+<span class="hljs-comment"># define tensor for input data and label</span>
+tx = tensor.Tensor((<span class="hljs-number">400</span>, <span class="hljs-number">2</span>), dev, tensor.float32)
+ty = tensor.Tensor((<span class="hljs-number">400</span>,), dev, tensor.int32)
+model = MLP(data_size=<span class="hljs-number">2</span>, perceptron_size=<span class="hljs-number">3</span>, num_classes=<span class="hljs-number">2</span>)
+
+<span class="hljs-comment"># attached model to graph</span>
+model.set_optimizer(sgd)
+model.compile([tx], is_train=<span class="hljs-literal">True</span>, use_graph=<span class="hljs-literal">True</span>, sequential=<span class="hljs-literal">False</span>)
+model.train()
+
+<span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> range(<span class="hljs-number">1001</span>):
+    tx.copy_from_numpy(data)
+    ty.copy_from_numpy(label)
+    out, loss = model(tx, ty, <span class="hljs-string">'fp32'</span>, spars=<span class="hljs-literal">None</span>)
+
+    <span class="hljs-keyword">if</span> i % <span class="hljs-number">100</span> == <span class="hljs-number">0</span>:
+        print(<span class="hljs-string">"training loss = "</span>, tensor.to_numpy(loss)[<span class="hljs-number">0</span>])
 </code></pre>
 <p>Output:</p>
-<pre><code class="hljs"><span class="hljs-attr">loss</span>:  <span class="hljs-string">[4.917431]</span>
-<span class="hljs-attr">loss</span>:  <span class="hljs-string">[2.5147934]</span>
-<span class="hljs-attr">loss</span>:  <span class="hljs-string">[2.0670078]</span>
-<span class="hljs-attr">loss</span>:  <span class="hljs-string">[1.9179827]</span>
-<span class="hljs-attr">loss</span>:  <span class="hljs-string">[1.8192691]</span>
-<span class="hljs-attr">loss</span>:  <span class="hljs-string">[1.7269677]</span>
-<span class="hljs-attr">loss</span>:  <span class="hljs-string">[1.6308627]</span>
-<span class="hljs-attr">loss</span>:  <span class="hljs-string">[1.52674]</span>
-<span class="hljs-attr">loss</span>:  <span class="hljs-string">[1.4122975]</span>
-<span class="hljs-attr">loss</span>:  <span class="hljs-string">[1.2866782]</span>
-<span class="hljs-attr">training</span> <span class="hljs-string">completed</span>
+<pre><code class="hljs css language-bash">$ python3 examples/mlp/module.py
+training loss =  0.6158037
+training loss =  0.52852553
+training loss =  0.4571422
+training loss =  0.37274635
+training loss =  0.30146334
+training loss =  0.24906921
+training loss =  0.21128304
+training loss =  0.18390492
+training loss =  0.16362564
+training loss =  0.148164
+training loss =  0.13589878
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="tensor-implementation"></a><a href="#tensor-implementation" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
 <p>The previous section shows the general usage of <code>Tensor</code>, the implementation
@@ -242,7 +275,7 @@ generated function in <code>singa_wrap.py</code></li>
 <p><em>work in progress</em></p>
 <h2><a class="anchor" aria-hidden="true" id="cpp-api"></a><a href="#cpp-api" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
 <p><em>work in progress</em></p>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/3/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/next/device"><span class="arrow-prev">← </span><span>Device</span></a><a class="docs-next button" href="/docs/next/autograd"><span>Autograd</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#tensor-usage">Tensor Usage</a><ul class="toc-headings"><li><a href [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 9/18/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/next/device"><span class="arrow-prev">← </span><span>Device</span></a><a class="docs-next button" href="/docs/next/autograd"><span>Autograd</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#tensor-usage">Tensor Usage</a><ul class="toc-headings"><li><a hre [...]
    The Apache Software Foundation. All rights reserved.
    Apache SINGA, Apache, the Apache feather logo, and
    the Apache SINGA project logos are trademarks of The
diff --git a/content/docs/next/tensor/index.html b/content/docs/next/tensor/index.html
index 4beb55e..e4c89d6 100644
--- a/content/docs/next/tensor/index.html
+++ b/content/docs/next/tensor/index.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -90,6 +90,13 @@ array([[<span class="hljs-number">1.</span>, <span class="hljs-number">0.</span>
  [<span class="hljs-number">0.</span> <span class="hljs-number">1.</span>]
  [<span class="hljs-number">0.</span> <span class="hljs-number">0.</span>]]
 </code></pre>
+<p><code>tensor</code> transformation up to 6 dims</p>
+<pre><code class="hljs css language-python"><span class="hljs-meta">&gt;&gt;&gt; </span>a = tensor.random((<span class="hljs-number">2</span>,<span class="hljs-number">3</span>,<span class="hljs-number">4</span>,<span class="hljs-number">5</span>,<span class="hljs-number">6</span>,<span class="hljs-number">7</span>))
+<span class="hljs-meta">&gt;&gt;&gt; </span>a.shape
+(<span class="hljs-number">2</span>, <span class="hljs-number">3</span>, <span class="hljs-number">4</span>, <span class="hljs-number">5</span>, <span class="hljs-number">6</span>, <span class="hljs-number">7</span>)
+<span class="hljs-meta">&gt;&gt;&gt; </span>a.reshape((<span class="hljs-number">2</span>,<span class="hljs-number">3</span>,<span class="hljs-number">4</span>,<span class="hljs-number">5</span>,<span class="hljs-number">7</span>,<span class="hljs-number">6</span>)).transpose((<span class="hljs-number">3</span>,<span class="hljs-number">2</span>,<span class="hljs-number">1</span>,<span class="hljs-number">0</span>,<span class="hljs-number">4</span>,<span class="hljs-number">5</span>)).shape
+(<span class="hljs-number">5</span>, <span class="hljs-number">4</span>, <span class="hljs-number">3</span>, <span class="hljs-number">2</span>, <span class="hljs-number">7</span>, <span class="hljs-number">6</span>)
+</code></pre>
 <h3><a class="anchor" aria-hidden="true" id="tensor-arithmetic-methods"></a><a href="#tensor-arithmetic-methods" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c [...]
 <p><code>tensor</code> is evaluated in real time.</p>
 <pre><code class="hljs css language-python"><span class="hljs-meta">&gt;&gt;&gt; </span>t + <span class="hljs-number">1</span>
@@ -99,6 +106,33 @@ array([[<span class="hljs-number">1.</span>, <span class="hljs-number">0.</span>
 [[<span class="hljs-number">0.2</span> <span class="hljs-number">0.</span>  <span class="hljs-number">0.</span> ]
  [<span class="hljs-number">0.</span>  <span class="hljs-number">0.2</span> <span class="hljs-number">0.</span> ]]
 </code></pre>
+<p><code>tensor</code> broadcasting arithmetic:</p>
+<pre><code class="hljs css language-python"><span class="hljs-meta">&gt;&gt;&gt; </span>a
+[[<span class="hljs-number">1.</span> <span class="hljs-number">2.</span> <span class="hljs-number">3.</span>]
+ [<span class="hljs-number">4.</span> <span class="hljs-number">5.</span> <span class="hljs-number">6.</span>]]
+<span class="hljs-meta">&gt;&gt;&gt; </span>b
+[[<span class="hljs-number">1.</span> <span class="hljs-number">2.</span> <span class="hljs-number">3.</span>]]
+<span class="hljs-meta">&gt;&gt;&gt; </span>a + b
+[[<span class="hljs-number">2.</span> <span class="hljs-number">4.</span> <span class="hljs-number">6.</span>]
+ [<span class="hljs-number">5.</span> <span class="hljs-number">7.</span> <span class="hljs-number">9.</span>]]
+<span class="hljs-meta">&gt;&gt;&gt; </span>a * b
+[[ <span class="hljs-number">1.</span>  <span class="hljs-number">4.</span>  <span class="hljs-number">9.</span>]
+ [ <span class="hljs-number">4.</span> <span class="hljs-number">10.</span> <span class="hljs-number">18.</span>]]
+<span class="hljs-meta">&gt;&gt;&gt; </span>a / b
+[[<span class="hljs-number">1.</span>  <span class="hljs-number">1.</span>  <span class="hljs-number">1.</span> ]
+ [<span class="hljs-number">4.</span>  <span class="hljs-number">2.5</span> <span class="hljs-number">2.</span> ]]
+<span class="hljs-meta">&gt;&gt;&gt; </span>a/=b <span class="hljs-comment"># inplace operation</span>
+<span class="hljs-meta">&gt;&gt;&gt; </span>a
+[[<span class="hljs-number">1.</span>  <span class="hljs-number">1.</span>  <span class="hljs-number">1.</span> ]
+ [<span class="hljs-number">4.</span>  <span class="hljs-number">2.5</span> <span class="hljs-number">2.</span> ]]
+</code></pre>
+<p><code>tensor</code> broadcasting on matrix multiplication (GEMM)</p>
+<pre><code class="hljs css language-python"><span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> singa <span class="hljs-keyword">import</span> tensor
+<span class="hljs-meta">&gt;&gt;&gt; </span>a = tensor.random((<span class="hljs-number">2</span>,<span class="hljs-number">2</span>,<span class="hljs-number">2</span>,<span class="hljs-number">3</span>))
+<span class="hljs-meta">&gt;&gt;&gt; </span>b = tensor.random((<span class="hljs-number">2</span>,<span class="hljs-number">3</span>,<span class="hljs-number">4</span>))
+<span class="hljs-meta">&gt;&gt;&gt; </span>tensor.mult(a,b).shape
+(<span class="hljs-number">2</span>, <span class="hljs-number">2</span>, <span class="hljs-number">2</span>, <span class="hljs-number">4</span>)
+</code></pre>
 <h3><a class="anchor" aria-hidden="true" id="tensor-functions"></a><a href="#tensor-functions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
 <p>Functions in module <code>singa.tensor</code> return new <code>tensor</code> object after applying the
 transformation defined in the function.</p>
@@ -119,50 +153,49 @@ between <code>device</code>s via <code>to_device()</code> function.</p>
 <span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-comment"># move to host</span>
 <span class="hljs-meta">&gt;&gt;&gt; </span>x.to_device(device.get_default_device())
 </code></pre>
-<h3><a class="anchor" aria-hidden="true" id="simple-neural-network-example"></a><a href="#simple-neural-network-example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
-<pre><code class="hljs css language-python"><span class="hljs-keyword">from</span> singa <span class="hljs-keyword">import</span> device
-<span class="hljs-keyword">from</span> singa <span class="hljs-keyword">import</span> tensor
-<span class="hljs-keyword">from</span> singa <span class="hljs-keyword">import</span> opt
-<span class="hljs-keyword">from</span> singa <span class="hljs-keyword">import</span> autograd
-<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">MLP</span>:</span>
-    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__init__</span><span class="hljs-params">(self)</span>:</span>
-        self.linear1 = autograd.Linear(<span class="hljs-number">3</span>, <span class="hljs-number">4</span>)
-        self.linear2 = autograd.Linear(<span class="hljs-number">4</span>, <span class="hljs-number">5</span>)
-    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">forward</span><span class="hljs-params">(self, x)</span>:</span>
-        y=self.linear1(x)
-        <span class="hljs-keyword">return</span> self.linear2(y)
-<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">train</span><span class="hljs-params">(model, x, t, dev, epochs=<span class="hljs-number">10</span>)</span>:</span>
-    <span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> range(epochs):
-        y = model.forward(x)
-        loss = autograd.mse_loss(y, t)
-        print(<span class="hljs-string">"loss: "</span>, loss)
-        sgd = opt.SGD()
-        <span class="hljs-keyword">for</span> p, gp <span class="hljs-keyword">in</span> autograd.backward(loss):
-            sgd.update(p, gp)
-        sgd.step()
-    print(<span class="hljs-string">"training completed"</span>)
-<span class="hljs-keyword">if</span> __name__ == <span class="hljs-string">"__main__"</span>:
-    autograd.training = <span class="hljs-literal">True</span>
-    model = MLP()
-    dev = device.get_default_device()
-    x = tensor.Tensor((<span class="hljs-number">2</span>, <span class="hljs-number">3</span>), dev)
-    t = tensor.Tensor((<span class="hljs-number">2</span>, <span class="hljs-number">5</span>), dev)
-    x.gaussian(<span class="hljs-number">1</span>,<span class="hljs-number">1</span>)
-    t.gaussian(<span class="hljs-number">1</span>,<span class="hljs-number">1</span>)
-    train(model, x, t, dev)
+<h3><a class="anchor" aria-hidden="true" id="use-tensor-to-train-mlp"></a><a href="#use-tensor-to-train-mlp" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 [...]
+<pre><code class="hljs css language-python">
+<span class="hljs-string">"""
+  code snipet from examples/mlp/module.py
+"""</span>
+
+label = get_label()
+data = get_data()
+
+dev = device.create_cuda_gpu_on(<span class="hljs-number">0</span>)
+sgd = opt.SGD(<span class="hljs-number">0.05</span>)
+
+<span class="hljs-comment"># define tensor for input data and label</span>
+tx = tensor.Tensor((<span class="hljs-number">400</span>, <span class="hljs-number">2</span>), dev, tensor.float32)
+ty = tensor.Tensor((<span class="hljs-number">400</span>,), dev, tensor.int32)
+model = MLP(data_size=<span class="hljs-number">2</span>, perceptron_size=<span class="hljs-number">3</span>, num_classes=<span class="hljs-number">2</span>)
+
+<span class="hljs-comment"># attached model to graph</span>
+model.set_optimizer(sgd)
+model.compile([tx], is_train=<span class="hljs-literal">True</span>, use_graph=<span class="hljs-literal">True</span>, sequential=<span class="hljs-literal">False</span>)
+model.train()
+
+<span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> range(<span class="hljs-number">1001</span>):
+    tx.copy_from_numpy(data)
+    ty.copy_from_numpy(label)
+    out, loss = model(tx, ty, <span class="hljs-string">'fp32'</span>, spars=<span class="hljs-literal">None</span>)
+
+    <span class="hljs-keyword">if</span> i % <span class="hljs-number">100</span> == <span class="hljs-number">0</span>:
+        print(<span class="hljs-string">"training loss = "</span>, tensor.to_numpy(loss)[<span class="hljs-number">0</span>])
 </code></pre>
 <p>Output:</p>
-<pre><code class="hljs"><span class="hljs-attr">loss</span>:  <span class="hljs-string">[4.917431]</span>
-<span class="hljs-attr">loss</span>:  <span class="hljs-string">[2.5147934]</span>
-<span class="hljs-attr">loss</span>:  <span class="hljs-string">[2.0670078]</span>
-<span class="hljs-attr">loss</span>:  <span class="hljs-string">[1.9179827]</span>
-<span class="hljs-attr">loss</span>:  <span class="hljs-string">[1.8192691]</span>
-<span class="hljs-attr">loss</span>:  <span class="hljs-string">[1.7269677]</span>
-<span class="hljs-attr">loss</span>:  <span class="hljs-string">[1.6308627]</span>
-<span class="hljs-attr">loss</span>:  <span class="hljs-string">[1.52674]</span>
-<span class="hljs-attr">loss</span>:  <span class="hljs-string">[1.4122975]</span>
-<span class="hljs-attr">loss</span>:  <span class="hljs-string">[1.2866782]</span>
-<span class="hljs-attr">training</span> <span class="hljs-string">completed</span>
+<pre><code class="hljs css language-bash">$ python3 examples/mlp/module.py
+training loss =  0.6158037
+training loss =  0.52852553
+training loss =  0.4571422
+training loss =  0.37274635
+training loss =  0.30146334
+training loss =  0.24906921
+training loss =  0.21128304
+training loss =  0.18390492
+training loss =  0.16362564
+training loss =  0.148164
+training loss =  0.13589878
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="tensor-implementation"></a><a href="#tensor-implementation" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
 <p>The previous section shows the general usage of <code>Tensor</code>, the implementation
@@ -242,7 +275,7 @@ generated function in <code>singa_wrap.py</code></li>
 <p><em>work in progress</em></p>
 <h2><a class="anchor" aria-hidden="true" id="cpp-api"></a><a href="#cpp-api" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
 <p><em>work in progress</em></p>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/3/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/next/device"><span class="arrow-prev">← </span><span>Device</span></a><a class="docs-next button" href="/docs/next/autograd"><span>Autograd</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#tensor-usage">Tensor Usage</a><ul class="toc-headings"><li><a href [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 9/18/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/next/device"><span class="arrow-prev">← </span><span>Device</span></a><a class="docs-next button" href="/docs/next/autograd"><span>Autograd</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#tensor-usage">Tensor Usage</a><ul class="toc-headings"><li><a hre [...]
    The Apache Software Foundation. All rights reserved.
    Apache SINGA, Apache, the Apache feather logo, and
    the Apache SINGA project logos are trademarks of The
diff --git a/content/docs/next/wheel-cpu-dev.html b/content/docs/next/wheel-cpu-dev.html
index 65ff739..a155eac 100644
--- a/content/docs/next/wheel-cpu-dev.html
+++ b/content/docs/next/wheel-cpu-dev.html
@@ -11,7 +11,7 @@
 <li><a href="https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.0.0.dev200720-cp37-cp37m-manylinux2014_x86_64.whl">Python 3.7</a></li>
 <li><a href="https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.0.0.dev200720-cp38-cp38-manylinux2014_x86_64.whl">Python 3.8</a></li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#300dev200720">3.0.0.dev200720</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/singa-logo-square.png" alt="Apache SINGA" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/installation">Getting Started</a><a href="/docs/device">Guides</a><a href="/en/https://apa [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/2/2020</em></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#300dev200720">3.0.0.dev200720</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/singa-logo-square.png" alt="Apache SINGA" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/installation">Getting St [...]
    The Apache Software Foundation. All rights reserved.
    Apache SINGA, Apache, the Apache feather logo, and
    the Apache SINGA project logos are trademarks of The
diff --git a/content/docs/next/wheel-cpu-dev/index.html b/content/docs/next/wheel-cpu-dev/index.html
index 65ff739..a155eac 100644
--- a/content/docs/next/wheel-cpu-dev/index.html
+++ b/content/docs/next/wheel-cpu-dev/index.html
@@ -11,7 +11,7 @@
 <li><a href="https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.0.0.dev200720-cp37-cp37m-manylinux2014_x86_64.whl">Python 3.7</a></li>
 <li><a href="https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.0.0.dev200720-cp38-cp38-manylinux2014_x86_64.whl">Python 3.8</a></li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#300dev200720">3.0.0.dev200720</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/singa-logo-square.png" alt="Apache SINGA" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/installation">Getting Started</a><a href="/docs/device">Guides</a><a href="/en/https://apa [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/2/2020</em></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#300dev200720">3.0.0.dev200720</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/singa-logo-square.png" alt="Apache SINGA" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/installation">Getting St [...]
    The Apache Software Foundation. All rights reserved.
    Apache SINGA, Apache, the Apache feather logo, and
    the Apache SINGA project logos are trademarks of The
diff --git a/content/docs/next/wheel-cpu.html b/content/docs/next/wheel-cpu.html
index f89b29b..be3dd20 100644
--- a/content/docs/next/wheel-cpu.html
+++ b/content/docs/next/wheel-cpu.html
@@ -5,13 +5,19 @@
           )
         });
         </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
+<h2><a class="anchor" aria-hidden="true" id="310rc1"></a><a href="#310rc1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
+<ul>
+<li><a href="https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.1.0rc1-cp36-cp36m-manylinux2014_x86_64.whl">Python 3.6</a></li>
+<li><a href="https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.1.0rc1-cp37-cp37m-manylinux2014_x86_64.whl">Python 3.7</a></li>
+<li><a href="https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.1.0rc1-cp38-cp38-manylinux2014_x86_64.whl">Python 3.8</a></li>
+</ul>
 <h2><a class="anchor" aria-hidden="true" id="300"></a><a href="#300" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.2 [...]
 <ul>
 <li><a href="https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.0.0-cp36-cp36m-manylinux2014_x86_64.whl">Python 3.6</a></li>
 <li><a href="https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.0.0-cp37-cp37m-manylinux2014_x86_64.whl">Python 3.7</a></li>
 <li><a href="https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.0.0-cp38-cp38-manylinux2014_x86_64.whl">Python 3.8</a></li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#300">3.0.0</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/singa-logo-square.png" alt="Apache SINGA" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/installation">Getting Started</a><a href="/docs/device">Guides</a><a href="/en/https://apache-singa.readthedo [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/2/2020</em></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#310rc1">3.1.0.RC1</a></li><li><a href="#300">3.0.0</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/singa-logo-square.png" alt="Apache SINGA" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/ins [...]
    The Apache Software Foundation. All rights reserved.
    Apache SINGA, Apache, the Apache feather logo, and
    the Apache SINGA project logos are trademarks of The
diff --git a/content/docs/next/wheel-cpu/index.html b/content/docs/next/wheel-cpu/index.html
index f89b29b..be3dd20 100644
--- a/content/docs/next/wheel-cpu/index.html
+++ b/content/docs/next/wheel-cpu/index.html
@@ -5,13 +5,19 @@
           )
         });
         </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
+<h2><a class="anchor" aria-hidden="true" id="310rc1"></a><a href="#310rc1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
+<ul>
+<li><a href="https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.1.0rc1-cp36-cp36m-manylinux2014_x86_64.whl">Python 3.6</a></li>
+<li><a href="https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.1.0rc1-cp37-cp37m-manylinux2014_x86_64.whl">Python 3.7</a></li>
+<li><a href="https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.1.0rc1-cp38-cp38-manylinux2014_x86_64.whl">Python 3.8</a></li>
+</ul>
 <h2><a class="anchor" aria-hidden="true" id="300"></a><a href="#300" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.2 [...]
 <ul>
 <li><a href="https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.0.0-cp36-cp36m-manylinux2014_x86_64.whl">Python 3.6</a></li>
 <li><a href="https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.0.0-cp37-cp37m-manylinux2014_x86_64.whl">Python 3.7</a></li>
 <li><a href="https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.0.0-cp38-cp38-manylinux2014_x86_64.whl">Python 3.8</a></li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#300">3.0.0</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/singa-logo-square.png" alt="Apache SINGA" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/installation">Getting Started</a><a href="/docs/device">Guides</a><a href="/en/https://apache-singa.readthedo [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/2/2020</em></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#310rc1">3.1.0.RC1</a></li><li><a href="#300">3.0.0</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/singa-logo-square.png" alt="Apache SINGA" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/ins [...]
    The Apache Software Foundation. All rights reserved.
    Apache SINGA, Apache, the Apache feather logo, and
    the Apache SINGA project logos are trademarks of The
diff --git a/content/docs/next/wheel-gpu-dev.html b/content/docs/next/wheel-gpu-dev.html
index 876a5a5..3357322 100644
--- a/content/docs/next/wheel-gpu-dev.html
+++ b/content/docs/next/wheel-gpu-dev.html
@@ -11,7 +11,7 @@
 <li><a href="https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.0.0.dev200720%2Bcuda10.2-cp37-cp37m-manylinux2014_x86_64.whl">CUDA10.2, cuDNN 7.6.5, Python 3.7</a></li>
 <li><a href="https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.0.0.dev200720%2Bcuda10.2-cp38-cp38-manylinux2014_x86_64.whl">CUDA10.2, cuDNN 7.6.5, Python 3.8</a></li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#300dev200720">3.0.0.dev200720</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/singa-logo-square.png" alt="Apache SINGA" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/installation">Getting Started</a><a href="/docs/device">Guides</a><a href="/en/https://apa [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/2/2020</em></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#300dev200720">3.0.0.dev200720</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/singa-logo-square.png" alt="Apache SINGA" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/installation">Getting St [...]
    The Apache Software Foundation. All rights reserved.
    Apache SINGA, Apache, the Apache feather logo, and
    the Apache SINGA project logos are trademarks of The
diff --git a/content/docs/next/wheel-gpu-dev/index.html b/content/docs/next/wheel-gpu-dev/index.html
index 876a5a5..3357322 100644
--- a/content/docs/next/wheel-gpu-dev/index.html
+++ b/content/docs/next/wheel-gpu-dev/index.html
@@ -11,7 +11,7 @@
 <li><a href="https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.0.0.dev200720%2Bcuda10.2-cp37-cp37m-manylinux2014_x86_64.whl">CUDA10.2, cuDNN 7.6.5, Python 3.7</a></li>
 <li><a href="https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.0.0.dev200720%2Bcuda10.2-cp38-cp38-manylinux2014_x86_64.whl">CUDA10.2, cuDNN 7.6.5, Python 3.8</a></li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#300dev200720">3.0.0.dev200720</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/singa-logo-square.png" alt="Apache SINGA" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/installation">Getting Started</a><a href="/docs/device">Guides</a><a href="/en/https://apa [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/2/2020</em></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#300dev200720">3.0.0.dev200720</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/singa-logo-square.png" alt="Apache SINGA" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/installation">Getting St [...]
    The Apache Software Foundation. All rights reserved.
    Apache SINGA, Apache, the Apache feather logo, and
    the Apache SINGA project logos are trademarks of The
diff --git a/content/docs/next/wheel-gpu.html b/content/docs/next/wheel-gpu.html
index 583942d..98b3a7d 100644
--- a/content/docs/next/wheel-gpu.html
+++ b/content/docs/next/wheel-gpu.html
@@ -5,13 +5,22 @@
           )
         });
         </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
+<h2><a class="anchor" aria-hidden="true" id="310rc1"></a><a href="#310rc1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
+<ul>
+<li>[CUDA10.2, cuDNN 7.6.5, Python
+3.6]<a href="https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.1.0rc1%2Bcuda10.2-cp36-cp36m-manylinux2014_x86_64.whl">https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.1.0rc1%2Bcuda10.2-cp36-cp36m-manylinux2014_x86_64.whl</a>)</li>
+<li>[CUDA10.2, cuDNN 7.6.5, Python
+3.7]<a href="https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.1.0rc1%2Bcuda10.2-cp37-cp37m-manylinux2014_x86_64.whl">https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.1.0rc1%2Bcuda10.2-cp37-cp37m-manylinux2014_x86_64.whl</a>)</li>
+<li>[CUDA10.2, cuDNN 7.6.5, Python
+3.8]<a href="https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.1.0rc1%2Bcuda10.2-cp38-cp38-manylinux2014_x86_64.whl">https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.1.0rc1%2Bcuda10.2-cp38-cp38-manylinux2014_x86_64.whl</a>)</li>
+</ul>
 <h2><a class="anchor" aria-hidden="true" id="300"></a><a href="#300" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.2 [...]
 <ul>
 <li><a href="https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.0.0%2Bcuda10.2-cp36-cp36m-manylinux2014_x86_64.whl">CUDA10.2, cuDNN 7.6.5, Python 3.6</a></li>
 <li><a href="https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.0.0%2Bcuda10.2-cp37-cp37m-manylinux2014_x86_64.whl">CUDA10.2, cuDNN 7.6.5, Python 3.7</a></li>
 <li><a href="https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.0.0%2Bcuda10.2-cp38-cp38-manylinux2014_x86_64.whl">CUDA10.2, cuDNN 7.6.5, Python 3.8</a></li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#300">3.0.0</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/singa-logo-square.png" alt="Apache SINGA" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/installation">Getting Started</a><a href="/docs/device">Guides</a><a href="/en/https://apache-singa.readthedo [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 9/24/2020</em></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#310rc1">3.1.0.RC1</a></li><li><a href="#300">3.0.0</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/singa-logo-square.png" alt="Apache SINGA" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/in [...]
    The Apache Software Foundation. All rights reserved.
    Apache SINGA, Apache, the Apache feather logo, and
    the Apache SINGA project logos are trademarks of The
diff --git a/content/docs/next/wheel-gpu/index.html b/content/docs/next/wheel-gpu/index.html
index 583942d..98b3a7d 100644
--- a/content/docs/next/wheel-gpu/index.html
+++ b/content/docs/next/wheel-gpu/index.html
@@ -5,13 +5,22 @@
           )
         });
         </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-interna [...]
+<h2><a class="anchor" aria-hidden="true" id="310rc1"></a><a href="#310rc1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
+<ul>
+<li>[CUDA10.2, cuDNN 7.6.5, Python
+3.6]<a href="https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.1.0rc1%2Bcuda10.2-cp36-cp36m-manylinux2014_x86_64.whl">https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.1.0rc1%2Bcuda10.2-cp36-cp36m-manylinux2014_x86_64.whl</a>)</li>
+<li>[CUDA10.2, cuDNN 7.6.5, Python
+3.7]<a href="https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.1.0rc1%2Bcuda10.2-cp37-cp37m-manylinux2014_x86_64.whl">https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.1.0rc1%2Bcuda10.2-cp37-cp37m-manylinux2014_x86_64.whl</a>)</li>
+<li>[CUDA10.2, cuDNN 7.6.5, Python
+3.8]<a href="https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.1.0rc1%2Bcuda10.2-cp38-cp38-manylinux2014_x86_64.whl">https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.1.0rc1%2Bcuda10.2-cp38-cp38-manylinux2014_x86_64.whl</a>)</li>
+</ul>
 <h2><a class="anchor" aria-hidden="true" id="300"></a><a href="#300" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.2 [...]
 <ul>
 <li><a href="https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.0.0%2Bcuda10.2-cp36-cp36m-manylinux2014_x86_64.whl">CUDA10.2, cuDNN 7.6.5, Python 3.6</a></li>
 <li><a href="https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.0.0%2Bcuda10.2-cp37-cp37m-manylinux2014_x86_64.whl">CUDA10.2, cuDNN 7.6.5, Python 3.7</a></li>
 <li><a href="https://singa-wheel.s3-ap-southeast-1.amazonaws.com/singa-3.0.0%2Bcuda10.2-cp38-cp38-manylinux2014_x86_64.whl">CUDA10.2, cuDNN 7.6.5, Python 3.8</a></li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#300">3.0.0</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/singa-logo-square.png" alt="Apache SINGA" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/installation">Getting Started</a><a href="/docs/device">Guides</a><a href="/en/https://apache-singa.readthedo [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 9/24/2020</em></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#310rc1">3.1.0.RC1</a></li><li><a href="#300">3.0.0</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/singa-logo-square.png" alt="Apache SINGA" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/in [...]
    The Apache Software Foundation. All rights reserved.
    Apache SINGA, Apache, the Apache feather logo, and
    the Apache SINGA project logos are trademarks of The
diff --git a/content/docs/onnx.html b/content/docs/onnx.html
index 8189a95..e74c2ac 100644
--- a/content/docs/onnx.html
+++ b/content/docs/onnx.html
@@ -752,7 +752,7 @@ of the model and run the SINGA operators one by one following the operators
 queue. The user can use <code>last_layers</code> to decide to run the model till the last
 few layers. Set <code>all_outputs</code> as <code>False</code> to get only the final output, <code>True</code> to
 also get all the intermediate output.</p>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/10/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/graph"><span class="arrow-prev">← </span><span>Computational Graph</span></a><a class="docs-next button" href="/docs/dist-train"><span>Distributed Training</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#general-usage">General usage</a><ul class="toc-he [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/10/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/graph"><span class="arrow-prev">← </span><span>Model</span></a><a class="docs-next button" href="/docs/dist-train"><span>Distributed Training</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#general-usage">General usage</a><ul class="toc-headings"><li><a [...]
    The Apache Software Foundation. All rights reserved.
    Apache SINGA, Apache, the Apache feather logo, and
    the Apache SINGA project logos are trademarks of The
diff --git a/content/docs/onnx/index.html b/content/docs/onnx/index.html
index 8189a95..e74c2ac 100644
--- a/content/docs/onnx/index.html
+++ b/content/docs/onnx/index.html
@@ -752,7 +752,7 @@ of the model and run the SINGA operators one by one following the operators
 queue. The user can use <code>last_layers</code> to decide to run the model till the last
 few layers. Set <code>all_outputs</code> as <code>False</code> to get only the final output, <code>True</code> to
 also get all the intermediate output.</p>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/10/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/graph"><span class="arrow-prev">← </span><span>Computational Graph</span></a><a class="docs-next button" href="/docs/dist-train"><span>Distributed Training</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#general-usage">General usage</a><ul class="toc-he [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/10/2020</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/graph"><span class="arrow-prev">← </span><span>Model</span></a><a class="docs-next button" href="/docs/dist-train"><span>Distributed Training</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#general-usage">General usage</a><ul class="toc-headings"><li><a [...]
    The Apache Software Foundation. All rights reserved.
    Apache SINGA, Apache, the Apache feather logo, and
    the Apache SINGA project logos are trademarks of The
diff --git a/content/en/index.html b/content/en/index.html
index e35f883..e164193 100644
--- a/content/en/index.html
+++ b/content/en/index.html
@@ -8,7 +8,7 @@
 </span></div></h2><div><span><p>SINGA <a href="./docs/dist-train">parallelizes the training and optimizes the communication cost</a> to improve training scalability.</p>
 </span></div></div></div></div></div></div><div class="container mainPageContainer lightBackground paddingBottom paddingTop"><div class="wrapper"><div class="gridBlock"><div class="blockElement imageAlignSide imageAlignRight twoByGridBlock"><div class="blockContent"><h2><div><span><p>Efficiency</p>
 </span></div></h2><div><span><p>SINGA <a href="./docs/graph">builds a computational graph</a> to optimizes the training speed and memory footprint.</p>
-</span></div></div><div class="blockImage"><img src="/img/GraphOfMLP.png" alt="Efficiency"/></div></div></div></div></div><div class="container mainPageContainer paddingBottom paddingTop"><div class="wrapper"><div class="gridBlock"><div class="blockElement imageAlignSide imageAlignLeft twoByGridBlock"><div class="blockImage"><img src="/img/singav3-sw.png" alt="Usability"/></div><div class="blockContent"><h2><div><span><p>Usability</p>
+</span></div></div><div class="blockImage"><img src="/img/GraphOfMLP.png" alt="Efficiency"/></div></div></div></div></div><div class="container mainPageContainer paddingBottom paddingTop"><div class="wrapper"><div class="gridBlock"><div class="blockElement imageAlignSide imageAlignLeft twoByGridBlock"><div class="blockImage"><img src="/img/singav3.1-sw.png" alt="Usability"/></div><div class="blockContent"><h2><div><span><p>Usability</p>
 </span></div></h2><div><span><p>SINGA has a simple <a href="./docs/software-stack">software stack and Python interface</a> to improve usability.</p>
 </span></div></div></div></div></div></div><div class="productShowcaseSection paddingBottom"><h2 style="color:#904600">Users of Apache SINGA</h2><p>Apache SINGA powers the following organizations and companies...</p><div class="showcase"><a class="link" href="http://tech.163.com/17/0602/17/CLUL016I00098GJ5.html"><img src="/img/users/NetEase.jpg" alt="NetEase" title="NetEase"/><span class="caption">NetEase</span></a><a class="link" href="https://www.nuh.com.sg/Pages/Home.aspx"><img src="/ [...]
    The Apache Software Foundation. All rights reserved.
diff --git a/content/img/singav3.1-sw.png b/content/img/singav3.1-sw.png
new file mode 100644
index 0000000..89a4557
Binary files /dev/null and b/content/img/singav3.1-sw.png differ
diff --git a/content/index.html b/content/index.html
index f4fd94f..bd9b971 100644
--- a/content/index.html
+++ b/content/index.html
@@ -8,7 +8,7 @@
 </span></div></h2><div><span><p>SINGA <a href="./docs/dist-train">parallelizes the training and optimizes the communication cost</a> to improve training scalability.</p>
 </span></div></div></div></div></div></div><div class="container mainPageContainer lightBackground paddingBottom paddingTop"><div class="wrapper"><div class="gridBlock"><div class="blockElement imageAlignSide imageAlignRight twoByGridBlock"><div class="blockContent"><h2><div><span><p>Efficiency</p>
 </span></div></h2><div><span><p>SINGA <a href="./docs/graph">builds a computational graph</a> to optimizes the training speed and memory footprint.</p>
-</span></div></div><div class="blockImage"><img src="/img/GraphOfMLP.png" alt="Efficiency"/></div></div></div></div></div><div class="container mainPageContainer paddingBottom paddingTop"><div class="wrapper"><div class="gridBlock"><div class="blockElement imageAlignSide imageAlignLeft twoByGridBlock"><div class="blockImage"><img src="/img/singav3-sw.png" alt="Usability"/></div><div class="blockContent"><h2><div><span><p>Usability</p>
+</span></div></div><div class="blockImage"><img src="/img/GraphOfMLP.png" alt="Efficiency"/></div></div></div></div></div><div class="container mainPageContainer paddingBottom paddingTop"><div class="wrapper"><div class="gridBlock"><div class="blockElement imageAlignSide imageAlignLeft twoByGridBlock"><div class="blockImage"><img src="/img/singav3.1-sw.png" alt="Usability"/></div><div class="blockContent"><h2><div><span><p>Usability</p>
 </span></div></h2><div><span><p>SINGA has a simple <a href="./docs/software-stack">software stack and Python interface</a> to improve usability.</p>
 </span></div></div></div></div></div></div><div class="productShowcaseSection paddingBottom"><h2 style="color:#904600">Users of Apache SINGA</h2><p>Apache SINGA powers the following organizations and companies...</p><div class="showcase"><a class="link" href="http://tech.163.com/17/0602/17/CLUL016I00098GJ5.html"><img src="/img/users/NetEase.jpg" alt="NetEase" title="NetEase"/><span class="caption">NetEase</span></a><a class="link" href="https://www.nuh.com.sg/Pages/Home.aspx"><img src="/ [...]
    The Apache Software Foundation. All rights reserved.