class_docstr: Large-scale distributed sampling face recognition training Module, of course sampling is an option,
  There will be no loss of accuracy in sampling in large-scale identities training tasks, uses only
  8 NVIDIA RTX2080Ti to complete classification tasks with 10 millions of identities, 64 NVIDIA
  RTX2080Ti can complete classification tasks with 100 million of identities.
  
  See the original paper:
  https://arxiv.org/abs/2203.15565
  
  Parameters
  ----------
  symbol: Symbol
      Backbone symbol.
  fc7_model: Object
      Object of margin loss.
  memory_bank: Memory bank Object.
      Object of memory bank, which maintain local class centers and their momentum.
  memory_optimizer: Optimizer object.
      The updater of memory bank, default is sgd optimizer.
  logger:
code: def backward_all(
      self,
      total_feature,
      total_label,
  ):
      # get memory bank learning rate
      self.memory_lr = self.memory_optimizer.lr_scheduler(
          self.num_update
      )
  
      self.grad_cache = self.get_ndarray(
          self.gpu, "grad_cache", total_feature.shape
      )
      self.loss_cache = self.get_ndarray(self.gpu, "loss_cache", [1])
  
      self.grad_cache[:] = 0
      self.loss_cache[:] = 0
  
      if not bool(config.sample_ratio - 1):
          grad, loss = self.backward(total_feature, total_label)
      else:
          grad, loss = self.backward_sample(total_feature, total_label)
  
      self.loss_cache[0] = loss
  
      total_feature_grad = grad
      total_feature_grad = hvd.allreduce(
          total_feature_grad, average=False
      )
  
      fc1_grad = total_feature_grad[
          self.batch_size * self.rank : self.batch_size * self.rank
          + self.batch_size
      ]
      self.backbone_module.backward(out_grads=[fc1_grad / self.size])
  
imports: import logging
  import warnings
  from collections import namedtuple
  import horovod.mxnet
  import mxnet
  import mxnet.ndarray
  import numpy
  from default import config
  from optimizer import DistributedOptimizer
label_desc: Use image node_id 12 for calling the SampleDistributeModule obj's underlying member method code with example usage: obj.backward_all(total_feature, total_label) without return types