def train_drqa(cmdline_args, use_cuda=True): # Parse cmdline args and setup environment parser = argparse.ArgumentParser( 'DrQA Document Reader', formatter_class=argparse.ArgumentDefaultsHelpFormatter) add_train_args(parser) config.add_model_args(parser) args = parser.parse_args(cmdline_args) set_defaults(args) # Set cuda # args.cuda = not args.no_cuda and torch.cuda.is_available() args.cuda = use_cuda and torch.cuda.is_available() if args.cuda: logger.info('Using GPU') torch.cuda.set_device(args.gpu) else: logger.info('Using CPU') if args.use_bert_embeddings: assert args.cuda, 'Must use CUDA if doing BERT training.' # NOTE: The code below is commented out because it is done in smallfry utils. # Set random state # np.random.seed(args.random_seed) # torch.manual_seed(args.random_seed) # if args.cuda: # torch.cuda.manual_seed(args.random_seed) # Set logging # logger.setLevel(logging.INFO) # fmt = logging.Formatter('%(asctime)s: [ %(message)s ]', # '%m/%d/%Y %I:%M:%S %p') # console = logging.StreamHandler() # console.setFormatter(fmt) # logger.addHandler(console) # if args.log_file: # if args.checkpoint: # logfile = logging.FileHandler(args.log_file, 'a') # else: # logfile = logging.FileHandler(args.log_file, 'w') # logfile.setFormatter(fmt) # logger.addHandler(logfile) # logger.info('COMMAND: %s' % ' '.join(sys.argv)) # Run! return main(args)
pin_memory=args.cuda, ) stats = {'timer': utils.Timer(), 'epoch': 0, 'best_valid': 0} scores, pred_objs = compute_expected_metric(args, dev_loader, model, stats, dev_offsets, dev_texts, dev_answers) return scores, pred_objs if __name__ == '__main__': # Parse cmdline args and setup environment parser = argparse.ArgumentParser( 'DrQA Document Reader', formatter_class=argparse.ArgumentDefaultsHelpFormatter) add_train_args(parser) config.add_model_args(parser) args = parser.parse_args() set_defaults(args) # Set cuda args.cuda = not args.no_cuda and torch.cuda.is_available() if args.cuda: torch.cuda.set_device(args.gpu) # Set random state np.random.seed(args.random_seed) torch.manual_seed(args.random_seed) if args.cuda: torch.cuda.manual_seed(args.random_seed) # Set logging
if result[args.valid_metric] > stats['best_valid']: logger.info('Best valid: %s = %.2f (epoch %d, %d updates)' % (args.valid_metric, result[args.valid_metric], stats['epoch'], model.updates)) model.save(args.model_file) stats['best_valid'] = result[args.valid_metric] if __name__ == '__main__': # Parse cmdline args and setup environment parser = argparse.ArgumentParser( 'DrQA Document Reader', formatter_class=argparse.ArgumentDefaultsHelpFormatter ) add_train_args(parser) config.add_model_args(parser) args = parser.parse_args() set_defaults(args) # Set cuda args.cuda = not args.no_cuda and torch.cuda.is_available() if args.cuda: torch.cuda.set_device(args.gpu) # Set random state np.random.seed(args.random_seed) torch.manual_seed(args.random_seed) if args.cuda: torch.cuda.manual_seed(args.random_seed) # Set logging
action='store_true', help='Only store single top span instead of top N list') parser.add_argument('--use-default', action="store_true") args = parser.parse_args() t0 = time.time() args.cuda = not args.no_cuda and torch.cuda.is_available() if args.cuda: torch.cuda.set_device(args.gpu) logger.info('CUDA enabled (GPU %d)' % args.gpu) else: logger.info('Running on CPU only.') if args.use_default: other_parser = argparse.ArgumentParser() add_model_args(other_parser) other_args = other_parser.parse_args([]) else: print("no other args") other_args = None predictor = Predictor(model=args.model, tokenizer=args.tokenizer, embedding_file=args.embedding_file, num_workers=args.num_workers, other_args=other_args) if args.cuda: predictor.cuda() # ------------------------------------------------------------------------------ # Read in dataset and make predictions.