class_docstr: Track a series of values and provide access to smoothed values over a
  window or the global series average.
class_docstr_tok: ["Track","a","series","of","values","and","provide","access","to","smoothed","values","over","a","window","or","the","global","series","average","."]
docstr: Distributed synchronization of the metric
  Warning: does not synchronize the deque!
docstr_tok: ["Distributed","synchronization","of","the","metric","Warning",":","does","not","synchronize","the","deque","!"]
code: def synchronize_between_processes(self):
      """
      Distributed synchronization of the metric
      Warning: does not synchronize the deque!
      """
      if not distributed.is_enabled():
          return
      t = torch.tensor(
          [self.count, self.total], dtype=torch.float64, device="cuda"
      )
      torch.distributed.barrier()
      torch.distributed.all_reduce(t)
      t = t.tolist()
      self.count = int(t[0])
      self.total = t[1]
  
imports: from collections import defaultdict, deque
  import datetime
  import json
  import logging
  import time
  import torch
  import dinov2.distributed
label_desc: Use image node_id 3 for calling the SmoothedValue obj's underlying member method code with example usage: obj.synchronize_between_processes() without return types