code: def _sync_model(self, model, src=0, sync_trainable_only=True):
      if self._world_size <= 1:
          return
  
      if self._local_rank == self._master_rank:
          for p in model.parameters():
              if (not sync_trainable_only) or (
                  sync_trainable_only and p.requires_grad
              ):
                  scatter_list = [
                      p.data for _ in range(self._world_size)
                  ]
                  dist.scatter(p.data, scatter_list, async_op=False)
      else:
          for p in model.parameters():
              if (not sync_trainable_only) or (
                  sync_trainable_only and p.requires_grad
              ):
                  dist.scatter(p.data, src=src, async_op=False)
  
imports: import logging
  import numpy
  import torch
  import torch.distributed
  from transformers.training_args import TrainingArguments
  from fate.ml.aggregator import AggregatorType, aggregator_map
label_desc: Use image node_id 5 for calling the AggregatorClientWrapper obj's underlying member method code with example usage: obj._sync_model(model, src, sync_trainable_only) without return types