index_en.html 12.2 KB
Newer Older
1 2


3 4


5 6 7 8 9 10 11 12
<!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">
  
13
  <title>Distributed Training &mdash; PaddlePaddle  documentation</title>
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
  

  
  

  

  
  
    

  

  
  
    <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
  

  
33

34 35 36 37 38
  
        <link rel="index" title="Index"
              href="../../genindex.html"/>
        <link rel="search" title="Search" href="../../search.html"/>
    <link rel="top" title="PaddlePaddle  documentation" href="../../index.html"/>
39
        <link rel="up" title="HOW TO" href="../index_en.html"/>
40
        <link rel="next" title="Preparations" href="preparations_en.html"/>
41
        <link rel="prev" title="Detail Description" href="../cmd_parameter/detail_introduction_en.html"/> 
42 43 44 45 46 47 48 49 50 51
<script>
var _hmt = _hmt || [];
(function() {
  var hm = document.createElement("script");
  hm.src = "//hm.baidu.com/hm.js?b9a314ab40d04d805655aab1deee08ba";
  var s = document.getElementsByTagName("script")[0]; 
  s.parentNode.insertBefore(hm, s);
})();
</script>

52 53 54 55 56 57 58 59

  
  <script src="../../_static/js/modernizr.min.js"></script>

</head>

<body class="wy-body-for-nav" role="document">

60 61 62 63 64 65 66 67 68 69 70 71 72
  <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_en.html" class="icon icon-home"> PaddlePaddle
          

          
73 74
          </a>

75 76 77 78 79 80
          
            
            
          

          
81 82 83 84 85 86
<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>
87
</div>
88 89

          
90 91 92 93
        </div>

        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
          
94 95 96 97 98 99 100 101 102 103 104 105 106 107
<nav class="doc-menu-vertical" role="navigation">

<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../getstarted/index_en.html">GET STARTED</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../getstarted/quickstart_en.html">Quick Start</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getstarted/concepts/use_concepts_en.html">Basic Concept</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../build_and_install/index_en.html">Install and Build</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../build_and_install/pip_install_en.html">Install using pip</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../build_and_install/docker_install_en.html">Run in Docker Containers</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../build_and_install/build_from_source_en.html">Build from Sources</a></li>
</ul>
</li>
108
<li class="toctree-l1 current"><a class="reference internal" href="../index_en.html">HOW TO</a><ul class="current">
109 110 111 112 113 114
<li class="toctree-l2"><a class="reference internal" href="../cmd_parameter/index_en.html">Set Command-line Parameters</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../cmd_parameter/use_case_en.html">Use Case</a></li>
<li class="toctree-l3"><a class="reference internal" href="../cmd_parameter/arguments_en.html">Argument Outline</a></li>
<li class="toctree-l3"><a class="reference internal" href="../cmd_parameter/detail_introduction_en.html">Detail Description</a></li>
</ul>
</li>
115 116 117
<li class="toctree-l2 current"><a class="current reference internal" href="#">Distributed Training</a><ul>
<li class="toctree-l3"><a class="reference internal" href="preparations_en.html">Preparations</a></li>
<li class="toctree-l3"><a class="reference internal" href="cmd_argument_en.html">Command-line arguments</a></li>
118 119 120 121 122 123 124 125 126
<li class="toctree-l3"><a class="reference internal" href="multi_cluster/index_en.html">Use different clusters</a><ul>
<li class="toctree-l4"><a class="reference internal" href="multi_cluster/fabric_en.html">Fabric</a></li>
<li class="toctree-l4"><a class="reference internal" href="multi_cluster/openmpi_en.html">OpenMPI</a></li>
<li class="toctree-l4"><a class="reference internal" href="multi_cluster/k8s_en.html">Kubernetes</a></li>
<li class="toctree-l4"><a class="reference internal" href="multi_cluster/k8s_aws_en.html">Kubernetes on AWS</a></li>
</ul>
</li>
</ul>
</li>
127 128 129 130 131 132
<li class="toctree-l2"><a class="reference internal" href="../capi/index_en.html">C-API Prediction Library</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../capi/compile_paddle_lib_en.html">Install and Build</a></li>
<li class="toctree-l3"><a class="reference internal" href="../capi/organization_of_the_inputs_en.html">Input/Output Data Organization</a></li>
<li class="toctree-l3"><a class="reference internal" href="../capi/workflow_of_capi_en.html">C-API Workflow</a></li>
</ul>
</li>
133 134 135 136 137
<li class="toctree-l2"><a class="reference internal" href="../rnn/index_en.html">RNN Models</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../rnn/rnn_config_en.html">RNN Configuration</a></li>
<li class="toctree-l3"><a class="reference internal" href="../rnn/recurrent_group_en.html">Recurrent Group Tutorial</a></li>
<li class="toctree-l3"><a class="reference internal" href="../rnn/hierarchical_layer_en.html">Layers supporting hierarchical sequence as input</a></li>
<li class="toctree-l3"><a class="reference internal" href="../rnn/hrnn_rnn_api_compare_en.html">API comparision between RNN and hierarchical RNN</a></li>
138 139 140 141 142
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../optimization/gpu_profiling_en.html">Tune GPU Performance</a></li>
</ul>
</li>
143 144 145
<li class="toctree-l1"><a class="reference internal" href="../../dev/index_en.html">Development</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../dev/contribute_to_paddle_en.html">Contribute Code</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../dev/write_docs_en.html">Contribute Documentation</a></li>
146
<li class="toctree-l2"><a class="reference internal" href="../../dev/new_layer_en.html">Write New Layers</a></li>
147 148 149 150 151 152 153 154 155 156
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../faq/index_en.html">FAQ</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../faq/build_and_install/index_en.html">Install, Build and Unit test</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../faq/model/index_en.html">Model Configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../faq/parameter/index_en.html">Parameter Setting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../faq/local/index_en.html">Local Training and Prediction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../faq/cluster/index_en.html">Cluster Training and Prediction</a></li>
</ul>
</li>
157 158
</ul>

159 160
</nav>

161 162
        </div>
      </div>
163 164
    </nav>

165
    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
166

167 168 169 170 171
      
      <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_en.html">PaddlePaddle</a>
      </nav>
172 173


174 175 176 177
      
      <div class="wy-nav-content">
        <div class="rst-content">
          
178

179
 
180 181 182 183 184



<div role="navigation" aria-label="breadcrumbs navigation">
  <ul class="wy-breadcrumbs">
185
    <li><a href="../../index_en.html">Docs</a> &raquo;</li>
186
      
187
          <li><a href="../index_en.html">HOW TO</a> &raquo;</li>
188
      
189
    <li>Distributed Training</li>
190 191 192 193 194 195 196
      <li class="wy-breadcrumbs-aside">
        
          
            <a href="../../_sources/howto/cluster/index_en.rst.txt" rel="nofollow"> View page source</a>
          
        
      </li>
197
  </ul>
198
  <hr/>
199 200 201 202
</div>
          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
           <div itemprop="articleBody">
            
203 204
  <div class="section" id="distributed-training">
<h1>Distributed Training<a class="headerlink" href="#distributed-training" title="Permalink to this headline"></a></h1>
205 206 207 208 209 210 211 212 213
<p>In this section, we&#8217;ll explain how to run distributed training jobs with PaddlePaddle on different types of clusters. The diagram below shows the main architecture of a distributed trainning job:</p>
<a class="reference internal image-reference" href="../../_images/ps_en.png"><img alt="../../_images/ps_en.png" src="../../_images/ps_en.png" style="width: 500px;" /></a>
<ul class="simple">
<li>Data shard: training data will be split into multiple partitions, trainers use the partitions of the whole dataset to do the training job.</li>
<li>Trainer: each trainer reads the data shard, and train the neural network. Then the trainer will upload calculated &#8220;gradients&#8221; to parameter servers, and wait for parameters to be optimized on the parameter server side. When that finishes, the trainer download optimized parameters and continues its training.</li>
<li>Parameter server: every parameter server stores part of the whole neural network model data. They will do optimization calculations when gradients are uploaded from trainers, and then send updated parameters to trainers.</li>
</ul>
<p>PaddlePaddle can support both synchronize stochastic gradient descent (SGD) and asynchronous SGD.</p>
<p>When training with synchronize SGD, PaddlePaddle uses an internal &#8220;synchronize barrier&#8221; which makes gradients update and parameter download in strict order. On the other hand, asynchronous SGD won&#8217;t wait for all trainers to finish upload at a single step, this will increase the parallelism of distributed training: parameter servers do not depend on each other, they&#8217;ll do parameter optimization concurrently. Parameter servers will not wait for trainers, so trainers will also do their work concurrently. But asynchronous SGD will introduce more randomness and noises in the gradient.</p>
214 215
<div class="toctree-wrapper compound">
<ul>
216 217 218
<li class="toctree-l1"><a class="reference internal" href="preparations_en.html">Preparations</a></li>
<li class="toctree-l1"><a class="reference internal" href="cmd_argument_en.html">Command-line arguments</a></li>
<li class="toctree-l1"><a class="reference internal" href="multi_cluster/index_en.html">Use different clusters</a></li>
219 220 221 222 223 224 225 226 227 228 229
</ul>
</div>
</div>


           </div>
          </div>
          <footer>
  
    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
      
230
        <a href="preparations_en.html" class="btn btn-neutral float-right" title="Preparations" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
231 232
      
      
233
        <a href="../cmd_parameter/detail_introduction_en.html" class="btn btn-neutral" title="Detail Description" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266
      
    </div>
  

  <hr/>

  <div role="contentinfo">
    <p>
        &copy; Copyright 2016, PaddlePaddle developers.

    </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:'',
            COLLAPSE_INDEX:false,
            FILE_SUFFIX:'.html',
267
            HAS_SOURCE:  true
268 269 270 271 272
        };
    </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>
273
      <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
274

275 276 277 278 279 280
  

  
  
    <script type="text/javascript" src="../../_static/js/theme.js"></script>
  
281

282
  
283 284 285 286 287 288 289
  
  <script type="text/javascript">
      jQuery(function () {
          SphinxRtdTheme.StickyNav.enable();
      });
  </script>
   
290 291

</body>
292
</html>