code: def forward_backward(self, x):
          
          (src_seq, tgt_seq, src_valid_length, tgt_valid_length), batch_size = x
          with mx.autograd.record():
              out, _ = self._model(src_seq, tgt_seq[:, :-1],
                                   src_valid_length, tgt_valid_length - 1)
              smoothed_label = self._label_smoothing(tgt_seq[:, 1:])
              ls = self._loss(out, smoothed_label, tgt_valid_length - 1).sum()
              ls = (ls * (tgt_seq.shape[1] - 1)) / batch_size / self._rescale_loss
          ls.backward()
          return ls
docs: Perform forward and backward computation for a batch of src seq and dst seq