class_docstr: 该类用于我们 fastNLP 自己内部为了训练流程所记录的一些状态，当然是要暴露给用户给用户使用的；
  我们保存的 state 大部分上是 trainer 断点重训 需要重新加载的；
  专属于 `Trainer` 的状态记载的类；
  
  :param n_epochs: 训练过程中总共的 epoch 的数量；
  :param cur_epoch_idx: 当前正在运行第几个 epoch；
  :param global_forward_batches: 当前模型总共 forward 了多少个 step；
  :param batch_idx_in_epoch: 训练中在当前 epoch 的第几个 step；
  :param num_batches_per_epoch: 每一个 epoch 会 forward 多少个 step；
  :param n_batches: 完整训练过程会 forward 的 step 数量，注意 ``n_batches = num_batches_per_epoch * n_epochs`` ；
docstr: 用于断点重训来重新加载保存的状态字典；
  
  :param state_dict: 用于加载的状态字典；
code: def load_state_dict(self, state_dict: Dict):
      r"""
      用于断点重训来重新加载保存的状态字典；
  
      :param state_dict: 用于加载的状态字典；
      """
      for key in state_dict:
          assert key in {
              "cur_epoch_idx",
              "global_forward_batches",
              "batch_idx_in_epoch",
          }, "Wrong state_dict for `TrainerState`."
          setattr(self, key, state_dict[key])
  
file_path: fastNLP/fastNLP/core/controllers/utils/state.py
imports: from dataclasses import dataclass
  from typing import Optional, Dict
label_desc: Use image node_id 2 for calling the TrainerState obj's underlying member method code with example usage: obj.load_state_dict(state_dict) without return types