in src/run_paraphrase.py [0:0]
def main(args):
roberta = RobertaModel.from_pretrained(args.load_dir,
checkpoint_file='model.pt',
dropout=0.0)
# Load model
roberta.to('cuda')
roberta.eval()
print('Finished loading model.')
# Read test data
test_data = read_data(args.dataset, roberta)
print(f'{args.dataset}: Loaded {len(test_data)} test examples.')
if args.train_ft:
all_results = []
for kshot_seed in KSHOT_SEEDS:
random.seed(args.rng_seed)
torch.manual_seed(args.rng_seed)
train_data = read_data(args.dataset, roberta, train=True, kshot_seed=kshot_seed)
print(f'Loaded {len(train_data)} training examples for kshot-seed {kshot_seed}.')
dev_data = read_data(args.dataset, roberta, kshot_seed=kshot_seed)
print(f'Loaded {len(dev_data)} dev examples.')
model = train_ft(roberta, train_data, dev_data, args.logit_scale,
args.batch_size, args.learning_rate, args.num_epochs)
pred_scores = predict_ft(test_data, model, roberta.device, args.batch_size)
stats = evaluate(test_data, pred_scores, threshold=0.0)
all_results.append(stats)
print(f'kshot-seed {kshot_seed}: {json.dumps(stats)}')
print(f'Average: {json.dumps(average_results(all_results))}')
elif args.train_skl:
test_features = prune_features(featurize_dataset(test_data, roberta, args.batch_size))
all_results = []
for kshot_seed in KSHOT_SEEDS:
train_data = read_data(args.dataset, roberta, train=True, kshot_seed=kshot_seed)
print(f'Loaded {len(train_data)} training examples for kshot-seed {kshot_seed}.')
train_features = prune_features(featurize_dataset(
train_data, roberta, args.batch_size))
vectorizer, scaler, model = train_skl(train_data, train_features, skl_C=args.skl_C)
pred_scores = predict_skl(test_features, vectorizer, scaler, model)
stats = evaluate(test_data, pred_scores, threshold=0.0)
all_results.append(stats)
print(f'kshot-seed {kshot_seed}: {json.dumps(stats)}')
print(f'Average: {json.dumps(average_results(all_results))}')
else:
feat_dicts = featurize_dataset(test_data, roberta, args.batch_size)
preds_per_layer = predict_zeroshot(test_data, feat_dicts)
for name, pred_scores in preds_per_layer.items():
stats = evaluate(test_data, pred_scores)
print(f'{name}: {json.dumps(stats)}')