blob: 4f4e96b92b39e772e6d3a4e191571ca06d054f5e [file] [log] [blame]
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>개요 &mdash; incubator-singa 0.3.0 documentation</title>
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="top" title="incubator-singa 0.3.0 documentation" href="../index.html"/>
<script src="../_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="../index.html" class="icon icon-home"> incubator-singa
<img src="../_static/singa.png" class="logo" />
</a>
<div class="version">
0.3.0
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="index.html">최신 문서</a></li>
</ul>
<p class="caption"><span class="caption-text">Development</span></p>
<ul class="simple">
</ul>
<p class="caption"><span class="caption-text">Community</span></p>
<ul class="simple">
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">incubator-singa</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html">Docs</a> &raquo;</li>
<li>개요</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="">
<span id="id1"></span><h1>개요<a class="headerlink" href="#" title="Permalink to this headline"></a></h1>
<hr class="docutils" />
<p>SINGA는 대규모 데이터 분석을 위한 딥러닝 모델의 트레이닝을 목적으로 한 &#8220;분산 딥러닝 플랫폼&#8221; 입니다. 모델이 되는 뉴럴네트워크의 &#8220;Layer&#8221; 개념에 따라서 직관적인 프로그래밍을 할 수 있도록 디자인되어 있습니다.</p>
<ul class="simple">
<li>Convolutional Neural Network 와 같은 피드포워드 네트워크와 Restricted Boltzmann Machine 과 같은 에너지 모델, Recurrent Neural Network 모델 등 다양한 모델을 지원합니다.</li>
<li>다양한 기능을 가지는 &#8220;Layer&#8221;들이 Built-in Layer 로 준비되어 있습니다.</li>
<li>SINGA 아키텍처는 synchronous (동기), asynchronous (비동기), 그리고 hybrid (하이브리드) 트레이닝을 할 수 있도록 설계되어 있습니다.</li>
<li>대형 모델의 트레이닝을 병렬화하는 다양한 partition 스킴 (배치 및 특징 분할)을 지원합니다.</li>
</ul>
<div class="section" id="">
<span id="id2"></span><h2>목적<a class="headerlink" href="#" title="Permalink to this headline"></a></h2>
<p>확장성 : 분산 시스템으로써 더 많은 자원을 이용하여 특정 정밀도에 도달 할 때까지 트레이닝 속도를 향상시킨다.</p>
<p>유용성 : 대규모 분산 모델의 효율적인 트레이닝에 필요한 데이터와 모델의 분할, 네트워크 통신등 프로그래머의 작업을 단순화하고, 복잡한 모델 및 알고리즘의 구축을 쉽게 한다.</p>
</div>
<div class="section" id="">
<span id="id3"></span><h2>설계 이념<a class="headerlink" href="#" title="Permalink to this headline"></a></h2>
<p>확장성은 분산 딥러닝에서 중요한 연구 과제입니다.
SINGA는 다양한 트레이닝 프레임워크의 확장성을 유지할 수 있도록 설계되어 있습니다.</p>
<ul class="simple">
<li>Synchronous (동기) : 트레이닝의 1단계에서 얻을 수있는 효과를 높입니다.</li>
<li>Asynchronous (비동기) : 트레이닝의 수렴 속도를 향상시킵니다.</li>
<li>Hybrid (하이브리드) : 코스트 및 리소스 (클러스터 크기 등)에 맞는 효과와 수렴 속도의 균형을 잡고 확장성을 향상시킵니다.</li>
</ul>
<p>SINGA는 딥러닝 모델의 네트워크 &#8220;레이어&#8221; 개념에 따라 직관적으로 프로그래밍을 할 수 있도록 디자인되어 있습니다. 다양한 모델을 쉽게 구축하고 트레이닝 할 수 있습니다.</p>
</div>
<div class="section" id="">
<span id="id4"></span><h2>시스템 개요<a class="headerlink" href="#" title="Permalink to this headline"></a></h2>
<p><img src = "../_static/images/sgd.png" align="center" width="400px"/>
<span><strong> Figure 1 - SGD Flow </strong></span></p>
<p>&#8220;딥러닝 모델을 학습한다&#8221;는 것은 특정 작업(분류, 예측 등)을 달성하기 위하여 사용되는 특징량(feature)을 생성하는 변환 함수의 최적 파라미터를 찾는다는 것입니다.
그 변수의 좋고 나쁨은, Cross-Entropy Loss (https://en.wikipedia.org/wiki/Cross_entropy) 등의 loss function (손실 함수)으로 확인합니다. 이 함수는 일반적으로 비선형 또는 비 볼록 함수이므로 閉解을 찾기가 힘듭니다.</p>
<p>그래서 Stochastic Gradient Descent (확률적구배강하법)을 이용합니다.
Figure 1과 같이 랜덤으로 초기화 된 파라미터 값을, 손실 함수가 작아 지도록 반복 업데이트하고 있습니다.</p>
<p><img src = "../_static/images/overview.png" align="center" width="400px"/>
<span> <strong> Figure 2 - SINGA Overview </strong> </span></p>
<p>트레이닝에 필요한 워크로드는 workers 와 servers 에 분산됩니다.
Figure 2와 같이 루프(iteration)마다 workers 는 <em>TrainOneBatch</em> 함수를 불러서 파라미터 구배를 계산합니다.
<em>TrainOneBatch</em> 는 뉴럴네트워크의 구조가 기술 된 <em>NeuralNet</em> 정보에 따라서 &#8220;Layer&#8221;를 차례로 둘러봅니다.
계산 된 구배는 로컬노드의 stub 에 보내져 집계 된 후, 해당 servers 에 전송됩니다. Servers 는 업데이트 된 파라미터 값을 workers 한테 되돌려주고, 다음 루프(iteration)를 진행합니다.</p>
</div>
<div class="section" id="job">
<span id="job"></span><h2>Job<a class="headerlink" href="#job" title="Permalink to this headline"></a></h2>
<p>SINGA에서 &#8220;Job&#8221;이란 뉴럴네트워크 모델과 데이터 트레이닝 방법, 클러스터 토폴로지 등이 기술 된 &#8220;Job Configuration&#8221;을 말합니다.
Job configuration 은 Figure 2에 그려진 다음의 4가지 요소를 가집니다.</p>
<ul class="simple">
<li><a class="reference external" href="neural-net.html">NeuralNet</a> : 뉴럴네트워크의 구조와 각 &#8220;레이어&#8221;의 설정을 기술합니다.</li>
<li><a class="reference external" href="train-one-batch.html">TrainOneBatch</a> : 모델 카테고리에 적합한 알고리즘을 기술합니다.</li>
<li><a class="reference external" href="updater.html">Updater</a> : server에서 매개 변수를 업데이트하는 방법을 기술합니다.</li>
<li><a class="reference external" href="distributed-training.html">Cluster Topology</a> : workers와 servers 분산 토폴로지를 기술합니다.</li>
</ul>
<p><a class="reference external" href="programming-guide.html">main 함수</a>의 SINGA 드라이버를 써서 Job 을 넘깁니다.</p>
<p>이 프로세스는 Hadoop에서의 Job 서브미션과 비슷합니다.
유저가 main 함수에서 작업 설정을 합니다.
Hadoop 유저는 자신의 mapper와 reducer를 설정하지만 SINGA 에서는 유저의 Layer 나 Updater 등을 설정합니다.</p>
</div>
</div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2016 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..
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../',
VERSION:'0.3.0',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../_static/jquery.js"></script>
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<script type="text/javascript" src="../_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
<div class="rst-versions shift-up" data-toggle="rst-versions" role="note" aria-label="versions">
<img src="../_static/apache.jpg">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> incubator-singa </span>
v: 0.3.0
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions">
<dl>
<dt>Languages</dt>
<dd><a href="../../en/index.html">English</a></dd>
<dd><a href="../../zh/index.html">中文</a></dd>
<dd><a href="../../jp/index.html">日本語</a></dd>
<dd><a href="../../kr/index.html">한국어</a></dd>
</dl>
</div>
</div>
<a href="https://github.com/apache/incubator-singa">
<img style="position: absolute; top: 0; right: 0; border: 0; z-index: 10000;"
src="https://s3.amazonaws.com/github/ribbons/forkme_right_orange_ff7600.png"
alt="Fork me on GitHub">
</a>
</body>
</html>