You can see the source code for save here:

  
      github.com
  
  
    fastai/fastai/blob/master/fastai/basic_train.py#L246 16

    #layer_groups -> need to find a way
    #TO SEE: do we save model structure and weights separately?
    with ModelOnCPU(self.model) as m:
        state['model'] = m
        xtra = dict(normalize=self.data.norm.keywords) if getattr(self.data, 'norm', False) else {}
        state['data'] = self.data.valid_ds.get_state(**xtra)
        state['cls'] = self.__class__
        try_save(state, self.path, file)
    if destroy: self.destroy()


def save(self, file:PathLikeOrBinaryStream=None, return_path:bool=False, with_opt:bool=True):
    "Save model and optimizer state (if `with_opt`) with `file` to `self.model_dir`. `file` can be file-like (file or buffer)"
    if is_pathlike(file): self._test_writeable_path()
    if rank_distrib(): return # don't save if slave proc
    target = self.path/self.model_dir/f'{file}.pth' if is_pathlike(file) else file
    if not hasattr(self, 'opt'): with_opt=False
    if not with_opt: state = get_model(self.model).state_dict()
    else: state = {'model': get_model(self.model).state_dict(), 'opt':self.opt.state_dict()}
    torch.save(state, target)
    if return_path: return target





  
  
    
    
  
  


(@ptrblck you linked to v0.7 - you can see the ‘old’ in the path to it; v1 is in ‘fastai’, not ‘old’)
As you can see from the source, if with_opt is false, then the saved file is just the model state_dict; if it’s true, it’s a dictionary with the state_dict and the optimizer state.