victor HF Staff commited on
Commit
3632d3d
·
verified ·
1 Parent(s): 7ac42fb

Put eval.py

Browse files
Files changed (1) hide show
  1. eval.py +13 -4
eval.py CHANGED
@@ -65,12 +65,13 @@ def evaluate(model, ds, tokenizer, batch, device):
65
  targets = labs[:, 1:]
66
  mask = targets != -100
67
  preds = logits.argmax(-1)
68
- corr = ((preds == targets) & mask)
69
  n = mask.sum().item()
70
  tok_sum += n
71
  corr_sum += corr.sum().item()
72
  if n > 0:
73
  nll_sum += out.loss.item() * n
 
74
  loss = nll_sum / max(tok_sum, 1)
75
  acc = corr_sum / max(tok_sum, 1)
76
  return loss, acc
@@ -79,11 +80,11 @@ def evaluate(model, ds, tokenizer, batch, device):
79
  def main():
80
  ap = argparse.ArgumentParser()
81
  ap.add_argument("--max_length", type=int, default=8192)
82
- ap.add_argument("--batch", type=int, default=8)
83
  args = ap.parse_args()
84
 
85
  device = "cuda" if torch.cuda.is_available() else "cpu"
86
- print("device:", device)
87
 
88
  tokenizer = AutoTokenizer.from_pretrained(BASE, trust_remote_code=True)
89
  if tokenizer.pad_token is None:
@@ -95,7 +96,13 @@ def main():
95
  eval_ds = eval_ds.map(
96
  lambda r: tokenize_row(r, tokenizer, args.max_length), remove_columns=["text"]
97
  )
98
- print("held-out rows:", len(eval_ds))
 
 
 
 
 
 
99
 
100
  dtype = torch.bfloat16 if torch.cuda.is_bf16_supported() else torch.float16
101
 
@@ -103,6 +110,8 @@ def main():
103
  base = AutoModelForCausalLM.from_pretrained(BASE, trust_remote_code=True, torch_dtype=dtype).to(device)
104
  base_loss, base_acc = evaluate(base, eval_ds, tokenizer, args.batch, device)
105
  print(f"base eval_loss={base_loss:.4f} eval_token_acc={base_acc:.4f}")
 
 
106
 
107
  print("\n=== Finetuned (base + LoRA adapter) ===")
108
  ft = AutoModelForCausalLM.from_pretrained(BASE, trust_remote_code=True, torch_dtype=dtype).to(device)
 
65
  targets = labs[:, 1:]
66
  mask = targets != -100
67
  preds = logits.argmax(-1)
68
+ corr = (preds == targets) & mask
69
  n = mask.sum().item()
70
  tok_sum += n
71
  corr_sum += corr.sum().item()
72
  if n > 0:
73
  nll_sum += out.loss.item() * n
74
+ del out, logits
75
  loss = nll_sum / max(tok_sum, 1)
76
  acc = corr_sum / max(tok_sum, 1)
77
  return loss, acc
 
80
  def main():
81
  ap = argparse.ArgumentParser()
82
  ap.add_argument("--max_length", type=int, default=8192)
83
+ ap.add_argument("--batch", type=int, default=1)
84
  args = ap.parse_args()
85
 
86
  device = "cuda" if torch.cuda.is_available() else "cpu"
87
+ print("device:", device, "| batch:", args.batch)
88
 
89
  tokenizer = AutoTokenizer.from_pretrained(BASE, trust_remote_code=True)
90
  if tokenizer.pad_token is None:
 
96
  eval_ds = eval_ds.map(
97
  lambda r: tokenize_row(r, tokenizer, args.max_length), remove_columns=["text"]
98
  )
99
+ lens = sorted(len(r["input_ids"]) for r in eval_ds)
100
+ print(
101
+ "held-out rows:", len(eval_ds),
102
+ "| len p50=%d p95=%d max=%d" % (
103
+ lens[len(lens) // 2], lens[int(len(lens) * 0.95)], lens[-1],
104
+ ),
105
+ )
106
 
107
  dtype = torch.bfloat16 if torch.cuda.is_bf16_supported() else torch.float16
108
 
 
110
  base = AutoModelForCausalLM.from_pretrained(BASE, trust_remote_code=True, torch_dtype=dtype).to(device)
111
  base_loss, base_acc = evaluate(base, eval_ds, tokenizer, args.batch, device)
112
  print(f"base eval_loss={base_loss:.4f} eval_token_acc={base_acc:.4f}")
113
+ del base
114
+ torch.cuda.empty_cache()
115
 
116
  print("\n=== Finetuned (base + LoRA adapter) ===")
117
  ft = AutoModelForCausalLM.from_pretrained(BASE, trust_remote_code=True, torch_dtype=dtype).to(device)