              os.remove(backupfile)
          if os.path.exists(origfile):
              os.rename(origfile, backupfile)
  
      def snapshot_model(self):
          """ Take a snapshot of the model at current state and back up """
          logger.info("Saving snapshot")
          src = os.path.dirname(self.filename)
          dst = get_folder("{}_{}".format(src, self.iterations))
          for filename in os.listdir(src):
              if filename.endswith(".bk"):
                  continue
              srcfile = os.path.join(src, filename)
              dstfile = os.path.join(dst, filename)
              copyfunc = copytree if os.path.isdir(srcfile) else copyfile
              logger.debug("Saving snapshot: '%s' > '%s'", srcfile, dstfile)
              copyfunc(srcfile, dstfile)
          logger.info("Saved snapshot")
  
      def replace_config(self, config_changeable_items):
          """ Replace the loaded config with the one contained within the state file
              Check for any fixed=False parameters changes and log info changes
          """
          global _CONFIG  # pylint: disable=global-statement
 
</s> remove         if snapshot:
            self.snapshot_model()
 </s> add  </s> remove         # Put in a line break to avoid jumbled console
 </s> add  </s> remove     def save(self, should_backup=False, snapshot=False):
 </s> add     def save(self, should_backup=False):
              os.remove(backupfile)
          if os.path.exists(origfile):
              os.rename(origfile, backupfile)
  















      def replace_config(self, config_changeable_items):
          """ Replace the loaded config with the one contained within the state file
              Check for any fixed=False parameters changes and log info changes
          """
          global _CONFIG  # pylint: disable=global-statement
keep keep keep keep replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace keep keep keep keep keep
 Minor changes

Convert - Force prediction batchsize to 1 when converting on CPU
Training: Move snapshot saving to outside of the save threads to avoid race condition
GUI Summary stats. Show iteration count for current training session (fixed to last save amount). 
plugins/train/model/_base.py