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: Apply in-graph synchronization to the grad and target in the graph.
  
  Args:
      graph_item (graph_item.GraphItem): The graph to put the new ops in.
      var_name (str): The variable name w/o the replica prefix.
  
  Returns:
      graph_item.GraphItem
docstr_tok: ["Apply","in-graph","synchronization","to","the","grad","and","target","in","the","graph",".","Args",":","graph_item","(","graph_item.GraphItem",")",":","The","graph","to","put","the","new","ops","in",".","var_name","(","str",")",":","The","variable","name","w\/o","the","replica","prefix",".","Returns",":","graph_item.GraphItem"]
code: def in_graph_apply(self, graph_item, var_name):
      """
      Apply in-graph synchronization to the grad and target in the graph.
  
      Args:
          graph_item (graph_item.GraphItem): The graph to put the new ops in.
          var_name (str): The variable name w/o the replica prefix.
  
      Returns:
          graph_item.GraphItem
      """
      return
  
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 3 for calling the Synchronizer obj's underlying member method code with example usage: obj.in_graph_apply(graph_item, var_name) without return types