title: Explanation/interpretation of the parameters in the spaCy config file
body: <p>I have a couple of questions regarding the parameters that we define in the <code>config.cfg</code> file. Although spaCy's docs do try to explain them, I feel that the explanation isn't really descriptive enough and that lots of things are scattered around the docs, making it difficult to find exactly what you need, especially with spaCy v3, (unless I'm looking at wrong parts of the website) which is recent and hence has really less question/answers in the forums.
  I'm basically building a Named Entity Recognition (NER) model along with a transformer component. My questions are as follows:</p>
  <ol>
  <li><p>In the following part (same question for <code>corpora.train</code> also), what is the difference between <code>max_length</code> and <code>limit</code>?</p>
  <p>For <code>max_length</code> the docs say &quot;Limitations on training document length&quot;<br />
  For <code>limit</code>, the docs say &quot;Limitation on number of training examples&quot;</p>
  <p>Aren't they both more or less the same thing? I mean I can limit the number of training examples by limiting the document's length itself, right?</p>
  </li>
  </ol>
  <pre><code>[corpora.dev]
  @readers = &quot;spacy.Corpus.v1&quot;
  path = ${paths.dev}
  max_length = 0
  gold_preproc = false
  limit = 0
  augmenter = null
  </code></pre>
  <ol start="2">
  <li>In the below snippet, what is the meaning of one 'step'? I understand <code>max_steps=0</code> means infinite steps. But how do I know how many such 'steps' make one epoch? Also how many example sentences are covered in 1 such step?</li>
  </ol>
  <pre><code>[training]
  train_corpus = &quot;corpora.train&quot;
  dev_corpus = &quot;corpora.dev&quot;
  seed = ${system.seed}
  gpu_allocator = ${system.gpu_allocator}
  dropout = 0.1
  accumulate_gradient = 1
  patience = 1600
  max_epochs = 10
  max_steps = 0
  eval_frequency = 200
  frozen_components = []
  before_to_disk = null
  </code></pre>
  <ol start="3">
  <li>How exactly is the <code>learn_rate</code> being modified in the below snippet of code, during the training process? More specifically, what do <code>total_steps</code> and <code>warmup_steps</code> mean?</li>
  </ol>
  <pre><code>[training.optimizer.learn_rate]
  @schedules = &quot;warmup_linear.v1&quot;
  warmup_steps = 250
  total_steps = 200
  initial_rate = 0.00005
  </code></pre>
  <ol start="4">
  <li>Finally, in the CLI output of the training process, What exactly is this '#'? It was mentioned in one of <a href="https://github.com/explosion/spaCy/discussions/7450#discussioncomment-487000" rel="nofollow noreferrer">GitHub discussions</a> that <em>&quot;The # column is the number of optimization steps (= batches processed)&quot;</em> , but what exactly is this 1 batch or 'optimization step'? If the training process shows me the scores for after 200 such 'batches' how do I interpret it (as in how many example sentences have been processed till that point)?</li>
  </ol>