logger.info("%s -> %.6f" % (k, v)) if params.is_master: logger.info("__log__:%s" % json.dumps(scores)) # end of epoch if params.validation_metrics != '': trainer.save_best_model(scores) trainer.save_periodic() trainer.end_epoch(scores) if __name__ == '__main__': # generate parser / parse parameters parser = get_parser() params = parser.parse_args() # debug mode if params.debug: params.exp_name = 'debug' params.exp_id = 'debug_%08i' % random.randint(0, 100000000) params.debug_slurm = True params.debug_train = True # check parameters check_data_params(params) check_model_params(params) # run experiment main(params)
def main(params): # check_data_params(params) check_model_params(params) # initialize the experiment logger = initialize_exp(params) # load data data = load_data(params) # check_vocab(data) # build model if params.encoder_only: model = build_model(params, data['source_dico']) else: encoder, decoder = build_model(params, data['source_dico'], data['target_dico']) # build trainer, reload potential checkpoints / build evaluator if params.encoder_only: trainer = SingleTrainer(model, data, params) evaluator = SingleEvaluator(trainer, data, params) else: trainer = EncDecTrainer(encoder, decoder, data, params) evaluator = EncDecEvaluator(trainer, data, params) # evaluation if params.eval_only: scores = evaluator.run_all_evals(trainer) for k, v in scores.items(): logger.info("%s -> %.6f" % (k, v)) logger.info("__log__:%s" % json.dumps(scores)) exit() # language model training for _ in range(params.max_epoch): logger.info("============ Starting epoch %i ... ============" % trainer.epoch) trainer.n_iter = 0 while trainer.n_iter < trainer.epoch_size: if params.cs_step: trainer.content_selection_step(params.lambda_cs) if params.sm_step: trainer.summarization_step(params.lambda_sm) if params.lm_step: trainer.clm_step(params.lambda_lm) trainer.iter() logger.info("============ End of epoch %i ============" % trainer.epoch) # evaluate perplexity scores = evaluator.run_all_evals(trainer) # print / JSON log for k, v in scores.items(): logger.info("%s -> %.6f" % (k, v)) logger.info("__log__:%s" % json.dumps(scores)) # end of epoch trainer.save_best_model(scores) trainer.save_periodic() trainer.end_epoch()