docstr: Saves current experiment progress
  :return:
docstr_tok: ["Saves","current","experiment","progress",":","return",":"]
code: def save(self):
      """
      Saves current experiment progress
      :return:
      """
      if self.debug or self.rank > 0:
          return
  
      # save images and replace the image array with the
      # file name
      self.__save_images(self.metrics)
      metrics_file_path = (
          self.get_data_path(self.name, self.version) + "/metrics.csv"
      )
      meta_tags_path = (
          self.get_data_path(self.name, self.version) + "/meta_tags.csv"
      )
  
      obj = {
          "name": self.name,
          "version": self.version,
          "tags_path": meta_tags_path,
          "metrics_path": metrics_file_path,
          "autosave": self.autosave,
          "description": self.description,
          "created_at": self.created_at,
          "exp_hash": self.exp_hash,
      }
  
      # save the experiment meta file
      with atomic_write(self.__get_log_name()) as tmp_path:
          with open(tmp_path, "w") as file:
              json.dump(obj, file, ensure_ascii=False)
  
      # save the metatags file
      df = pd.DataFrame(
          {
              "key": list(self.tags.keys()),
              "value": list(self.tags.values()),
          }
      )
      with atomic_write(meta_tags_path) as tmp_path:
          df.to_csv(tmp_path, index=False)
  
      # save the metrics data
      df = pd.DataFrame(self.metrics)
      with atomic_write(metrics_file_path) as tmp_path:
          df.to_csv(tmp_path, index=False)
  
      # write new vals to disk
      self.flush()
  
      # until hparam plugin is fixed, generate hparams as text
      if not self.tag_markdown_saved and len(self.tags) > 0:
          self.tag_markdown_saved = True
          self.add_text("hparams", self.__generate_tfx_meta_log())
  
imports: import contextlib
  import json
  import os
  import shutil
  from datetime import datetime
  import numpy
  import pandas
  from imageio import imwrite
  from tensorboard.compat.proto.event_pb2 import Event
  from tensorboard.compat.proto.event_pb2 import SessionLog
  from torch.utils.tensorboard import SummaryWriter, FileWriter
label_desc: Use image node_id 14 for calling the Experiment obj's underlying member method code with example usage: obj.save() without return types