class_docstr: # Trial 🏃‍
  
  Every trial in an experiment has same configs.
  It's just multiple runs.
  
  A new trial will replace checkpoints
  or previous trials, you should make a copy if needed.
  The performance log in `trials.yaml` is not replaced.
  
  You should run new trials after bug fixes or to see performance is
   consistent.
  
  If you want to try different configs, create multiple experiments.
class_docstr_tok: ["#","Trial","\ud83c\udfc3\u200d","Every","trial","in","an","experiment","has","same","configs",".","It","'s","just","multiple","runs",".","A","new","trial","will","replace","checkpoints","or","previous","trials",",","you","should","make","a","copy","if","needed",".","The","performance","log","in","`","trials.yaml","`","is","not","replaced",".","You","should","run","new","trials","after","bug","fixes","or","to","see","performance","is","consistent",".","If","you","want","to","try","different","configs",",","create","multiple","experiments","."]
code: def save_info(self):
      self.make_path()
  
      assert not self.pid_path.exists(), str(self.pid_path)
      assert os.getpid() == self.pid, f"{os.getpid()} != {self.pid}"
  
      with open(str(self.pid_path), "w") as f:
          f.write(f"{self.pid}")
  
      with open(str(self.info_path), "w") as file:
          file.write(util.yaml_dump(self.to_dict()))
  
      if self.diff is not None:
          with open(str(self.diff_path), "w") as f:
              f.write(self.diff)
  
imports: import os
  import time
  from pathlib import Path
  from typing import List, Dict, Optional
  from labml import lab
  from labml.internal.configs.processor import load_configs
  from ..None import util
  from ..manage.runs import get_run_by_uuid
  from ...logger import Text
  from ...utils.notice import labml_notice
label_desc: Use image node_id 4 for calling the Run obj's underlying member method code with example usage: obj.save_info() without return types