class_docstr: Synchronizer.
  
  Given a variable, can modify the TF Graph to synchronize its
  gradients in either an in-graph or a between-graph fashion.
  
  - In-graph means the synchronization happens in one `tf.Graph`
  - Between-graph means the synchronization happens across
      multiple `tf.Graphs` (e.g., each worker has its own graph)
docstr: Store cluster information in the synchronizer.
docstr_tok: ["Store","cluster","information","in","the","synchronizer","."]
code: def assign_cluster_information(
      self,
      num_workers,
      num_replicas,
      worker_device,
      worker_id,
      canonical_replica_devices,
      is_chief=False,
  ):
      """Store cluster information in the synchronizer."""
      self.num_workers = num_workers
      self.num_replicas = num_replicas
      self.worker_device = worker_device  # local worker device
      self.worker_id = worker_id  # local worker id
      self.all_canonical_replica_devices = canonical_replica_devices
      self.is_chief = is_chief
      return self
  
file_path: autodist/autodist/kernel/synchronization/synchronizer.py
imports: from abc import ABC, abstractmethod
  from tensorflow.python import ops
  from autodist.kernel.common.utils import get_op_name, update_consumers, update_control_consumers, replica_prefix, strip_replica_prefix, get_index_from_tensor_name
label_desc: Use image node_id 2 for calling the Synchronizer obj's underlying member method code with example usage: obj.assign_cluster_information(num_workers, num_replicas, worker_device, worker_id, canonical_replica_devices, is_chief) and returns: self