def load_ensemble_for_inference(filenames, src_dict=None, dst_dict=None, data_dir=None): """Load an ensemble of models for inference. The source and target dictionaries can be given explicitly, or loaded from the `data_dir` directory. """ from fairseq import data, models # load model architectures and weights states = [] for filename in filenames: if not os.path.exists(filename): raise IOError('Model file not found: {}'.format(filename)) states.append( torch.load(filename, map_location=lambda s, l: default_restore_location(s, 'cpu')) ) args = states[0]['args'] args = _upgrade_args(args) if src_dict is None or dst_dict is None: assert data_dir is not None src_dict, dst_dict = data.load_dictionaries(data_dir, args.source_lang, args.target_lang) # build ensemble ensemble = [] for state in states: model = models.build_model(args, src_dict, dst_dict) model.load_state_dict(state['model']) ensemble.append(model) return ensemble, args
def load_ensemble_for_inference(filenames, src_dict=None, dst_dict=None, data_dir=None): """Load an ensemble of models for inference. The source and target dictionaries can be given explicitly, or loaded from the `data_dir` directory. """ # load model architectures and weights states = [] for filename in filenames: if not os.path.exists(filename): raise IOError('Model file not found: {}'.format(filename)) states.append( torch.load(filename, map_location=lambda s, l: default_restore_location(s, 'cpu')) ) args = states[0]['args'] args = _upgrade_args(args) if src_dict is None or dst_dict is None: assert data_dir is not None src_dict, dst_dict = data.load_dictionaries(data_dir, args.source_lang, args.target_lang) # build ensemble ensemble = [] for state in states: model = build_model(args, src_dict, dst_dict) model.load_state_dict(state['model']) ensemble.append(model) return ensemble, args