<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>singa-incubating-0.2.0 Release Notes · 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.  The ASF licenses this file to you under the Apache License, Version 2.0 (the &quot;License&quot;); you may not use this file except in compliance with the License.  You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the specific language governing permissions and limitations under the License.  --&gt;"/><meta name="docsearch:version" content="next"/><meta name="docsearch:language" content="en"/><meta property="og:title" content="singa-incubating-0.2.0 Release Notes · Apache SINGA"/><meta property="og:type" content="website"/><meta property="og:url" content="https://feynmandna.github.io/"/><meta property="og: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.  The ASF licenses this file to you under the Apache License, Version 2.0 (the &quot;License&quot;); you may not use this file except in compliance with the License.  You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the specific language governing permissions and limitations under the License.  --&gt;"/><meta property="og:image" content="https://feynmandna.github.io/img/singa_twitter_banner.jpeg"/><meta name="twitter:card" content="summary"/><meta name="twitter:image" content="https://feynmandna.github.io/img/singa_twitter_banner.jpeg"/><link rel="shortcut icon" href="/img/favicon.ico"/><link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/atom-one-dark.min.css"/><link rel="alternate" type="application/atom+xml" href="https://feynmandna.github.io/blog/atom.xml" title="Apache SINGA Blog ATOM Feed"/><link rel="alternate" type="application/rss+xml" href="https://feynmandna.github.io/blog/feed.xml" title="Apache SINGA Blog RSS Feed"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script src="https://unpkg.com/vanilla-back-to-top@7.1.14/dist/vanilla-back-to-top.min.js"></script><script>
        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-internal"><li class=""><a href="/docs/next/installation" target="_self">Docs</a></li><li class=""><a href="/docs/next/source-repository" target="_self">Community</a></li><li class=""><a href="/blog/" target="_self">News</a></li><li class=""><a href="https://apache-singa.readthedocs.io/en/latest/" target="_self">API</a></li><li class=""><a target="_self"></a></li><li class=""><a href="https://github.com/apache/singa-doc" target="_self">GitHub</a></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><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/releases/RELEASE_NOTES_0.2.0.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">singa-incubating-0.2.0 Release Notes</h1></header><article><div><span><!--- 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.  The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.  You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the specific language governing permissions and limitations under the License.  -->
<p>SINGA is a general distributed deep learning platform for training big deep
learning models over large datasets. It is designed with an intuitive
programming model based on the layer abstraction. SINGA supports a wide variety
of popular deep learning models.</p>
<p>This release includes the following <strong>major features</strong>:</p>
<ul>
<li><a href="../docs/gpu.html">Training on GPU</a> enables training of complex models on a
single node with multiple GPU cards.</li>
<li><a href="../docs/hybrid.html">Hybrid neural net partitioning</a> supports data and model
parallelism at the same time.</li>
<li><a href="../docs/python.html">Python wrapper</a> makes it easy to configure the job,
including neural net and SGD algorithm.</li>
<li><a href="../docs/general-rnn.html">RNN model and BPTT algorithm</a> are implemented to
support applications based on RNN models, e.g., GRU.</li>
<li><a href="../docs/distributed-training.md">Cloud software integration</a> includes Mesos,
Docker and HDFS.</li>
</ul>
<p><strong>More details</strong> are listed as follows,</p>
<ul>
<li>Programming model
<ul>
<li>[SINGA-80] New Blob Level and Address Level Math Operation Interface</li>
<li>[SINGA-82] Refactor input layers using data store abstraction</li>
<li>[SINGA-87] Replace exclude field to include field for layer configuration</li>
<li>[SINGA-110] Add Layer member datavec* and gradvec*</li>
<li>[SINGA-120] Implemented GRU and BPTT (BPTTWorker)</li>
</ul></li>
</ul>
<ul>
<li>Neuralnet layers
<ul>
<li>[SINGA-91] Add SoftmaxLayer and ArgSortLayer</li>
<li>[SINGA-106] Add dummy layer for test purpose</li>
<li>[SINGA-120] Implemented GRU and BPTT (GRULayer and OneHotLayer)</li>
</ul></li>
</ul>
<ul>
<li>GPU training support
<ul>
<li>[SINGA-100] Implement layers using CUDNN for GPU training</li>
<li>[SINGA-104] Add Context Class</li>
<li>[SINGA-105] Update GUN make files for compiling cuda related code</li>
<li>[SINGA-98] Add Support for AlexNet ImageNet Classification Model</li>
</ul></li>
</ul>
<ul>
<li>Model/Hybrid partition
<ul>
<li>[SINGA-109] Refine bridge layers</li>
<li>[SINGA-111] Add slice, concate and split layers</li>
<li>[SINGA-113] Model/Hybrid Partition Support</li>
</ul></li>
</ul>
<ul>
<li>Python binding
<ul>
<li>[SINGA-108] Add Python wrapper to singa</li>
</ul></li>
</ul>
<ul>
<li>Predict-only mode
<ul>
<li>[SINGA-85] Add functions for extracting features and test new data</li>
</ul></li>
</ul>
<ul>
<li>Integrate with third-party tools
<ul>
<li>[SINGA-11] Start SINGA on Apache Mesos</li>
<li>[SINGA-78] Use Doxygen to generate documentation</li>
<li>[SINGA-89] Add Docker support</li>
</ul></li>
</ul>
<ul>
<li>Unit test
<ul>
<li>[SINGA-95] Add make test after building</li>
</ul></li>
</ul>
<ul>
<li>Other improvment
<ul>
<li>[SINGA-84] Header Files Rearrange</li>
<li>[SINGA-93] Remove the asterisk in the log <a href="tcp://169.254.12.152">tcp://169.254.12.152</a>:*:49152</li>
<li>[SINGA-94] Move call to google::InitGoogleLogging() from Driver::Init() to
main()</li>
<li>[SINGA-96] Add Momentum to Cifar10 Example</li>
<li>[SINGA-101] Add ll (ls -l) command in .bashrc file when using docker</li>
<li>[SINGA-114] Remove short logs in tmp directory</li>
<li>[SINGA-115] Print layer debug information in the neural net graph file</li>
<li>[SINGA-118] Make protobuf LayerType field id easy to assign</li>
<li>[SIGNA-97] Add HDFS Store</li>
</ul></li>
</ul>
<ul>
<li>Bugs fixed
<ul>
<li>[SINGA-85] Fix compilation errors in examples</li>
<li>[SINGA-90] Miscellaneous trivial bug fixes</li>
<li>[SINGA-107] Error from loading pre-trained params for training stacked RBMs</li>
<li>[SINGA-116] Fix a bug in InnerProductLayer caused by weight matrix sharing</li>
</ul></li>
</ul>
</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"></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/#">API Reference (coming soon)</a><a href="/docs/model-zoo-cnn-cifar10">Model Zoo</a><a href="/docs/download-singa">Development</a></div><div><h5>Community</h5><a href="/en/users.html">User Showcase</a><a href="/docs/history-singa">SINGA History</a><a href="/docs/team-list">SINGA Team</a><a href="/news">SINGA News</a><a href="https://github.com/apache/singa-doc">GitHub</a><div class="social"><a class="github-button" href="https://github.com/apache/singa-doc" data-count-href="/apache/singa/stargazers" data-show-count="true" data-count-aria-label="# stargazers on GitHub" aria-label="Star this project on GitHub">apache/singa-doc</a></div><div class="social"><a href="https://twitter.com/ApacheSINGA" class="twitter-follow-button">Follow @ApacheSINGA</a></div></div><div><h5>Apache Software Foundation</h5><a href="https://apache.org/" target="_blank" rel="noreferrer noopener">Foundation</a><a href="http://www.apache.org/licenses/" target="_blank" rel="noreferrer noopener">License</a><a href="http://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noreferrer noopener">Sponsorship</a><a href="http://www.apache.org/foundation/thanks.html" target="_blank" rel="noreferrer noopener">Thanks</a><a href="http://www.apache.org/events/current-event" target="_blank" rel="noreferrer noopener">Events</a><a href="http://www.apache.org/security/" target="_blank" rel="noreferrer noopener">Security</a></div></section><div style="width:100%;text-align:center"><a href="https://apache.org/" target="_blank" rel="noreferrer noopener" class="ApacheOpenSource"><img src="/img/asf_logo_wide.svg" alt="Apache Open Source"/></a><section class="copyright" style="max-width:60%;margin:0 auto">Copyright © 2020
   The Apache Software Foundation. All rights reserved.
   Apache SINGA, Apache, the Apache feather logo, and
   the Apache SINGA project logos are trademarks of The
   Apache Software Foundation. All other marks mentioned
   may be trademarks or registered trademarks of their
   respective owners.</section></div></footer></div><script>window.twttr=(function(d,s, id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src='https://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js, fjs);t._e = [];t.ready = function(f) {t._e.push(f);};return t;}(document, 'script', 'twitter-wjs'));</script></body></html>