code: def push_pull_async(
      tensor, average=True, name=None, version=0, priority=0
  ):
      """
      A function that performs asynchronous averaging or summation of the input tensor
      over all the BytePS processes. The input tensor is not modified.
      The reduction operation is keyed by the name. If name is not provided, an incremented
      auto-generated name is used. The tensor type and shape must be the same on all
      BytePS processes for a given name. The reduction will not start until all processes
      are ready to send and receive the tensor.
      Arguments:
          tensor: A tensor to average and sum.
          average: A flag indicating whether to compute average or summation,
                   defaults to average.
          name: A name of the reduction operation.
      Returns:
          A handle to the push_pull operation that can be used with `poll()` or
          `synchronize()`.
      """
      output = tensor.new(tensor.shape)
      return _do_push_pull_async(
          tensor, output, average, name, version, priority
      )
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from distutils.version import LooseVersion
  import torch
  from byteps.torch import c_lib
  from byteps.common import BytePSBasics
  from byteps.torch.compression import Compression
label_desc: Use image node_id 6 for calling a global function with example usage: push_pull_async(tensor, average, name, version, priority) and returns: _do_push_pull_async