Auditt commited on
Commit
f9568f4
·
verified ·
1 Parent(s): a4fe417

Fix Transformers batch generation and targeted dataset loading

Browse files
Files changed (1) hide show
  1. app.py +19 -9
app.py CHANGED
@@ -30,10 +30,14 @@ ans = (a + b);"""
30
  def _load_semantics() -> dict[tuple[str, str], SemanticsSpec]:
31
  specs: dict[tuple[str, str], SemanticsSpec] = {}
32
  for formalization in ("S", "K"):
 
33
  standard_split = load_dataset(
34
- DATASET_ID,
35
- "predstate",
36
- split=f"{formalization}_Standard_Human_Written",
 
 
 
37
  )
38
  standard = standard_split[0]
39
  specs[(formalization, "Standard")] = SemanticsSpec(
@@ -43,9 +47,12 @@ def _load_semantics() -> dict[tuple[str, str], SemanticsSpec]:
43
 
44
  nonstandard_split_name = f"{formalization}_NonStandard_Human_Written"
45
  nonstandard_split = load_dataset(
46
- DATASET_ID,
47
- "predstate",
48
- split=nonstandard_split_name,
 
 
 
49
  )
50
  for intervention in ("KeywordSwap", "KeywordObf"):
51
  record = next(
@@ -71,7 +78,7 @@ SEMANTICS_SPECS = _load_semantics()
71
  TOKENIZER = AutoTokenizer.from_pretrained(MODEL_ID)
72
  MODEL = AutoModelForCausalLM.from_pretrained(
73
  MODEL_ID,
74
- torch_dtype=torch.bfloat16,
75
  ).to("cuda")
76
  MODEL.eval()
77
 
@@ -99,19 +106,22 @@ def predict(
99
  model_inputs = TOKENIZER.apply_chat_template(
100
  messages,
101
  add_generation_prompt=True,
 
102
  return_tensors="pt",
 
103
  ).to("cuda")
 
104
 
105
  with torch.inference_mode():
106
  generated = MODEL.generate(
107
- model_inputs,
108
  max_new_tokens=512,
109
  do_sample=False,
110
  pad_token_id=TOKENIZER.eos_token_id,
111
  )
112
 
113
  response = TOKENIZER.decode(
114
- generated[0, model_inputs.shape[-1] :],
115
  skip_special_tokens=True,
116
  ).strip()
117
  answer = _extract_answer(response)
 
30
  def _load_semantics() -> dict[tuple[str, str], SemanticsSpec]:
31
  specs: dict[tuple[str, str], SemanticsSpec] = {}
32
  for formalization in ("S", "K"):
33
+ standard_split_name = f"{formalization}_Standard_Human_Written"
34
  standard_split = load_dataset(
35
+ "parquet",
36
+ data_files=(
37
+ f"https://huggingface.co/datasets/{DATASET_ID}/resolve/main/"
38
+ f"predstate/{standard_split_name}-00000-of-00001.parquet"
39
+ ),
40
+ split="train",
41
  )
42
  standard = standard_split[0]
43
  specs[(formalization, "Standard")] = SemanticsSpec(
 
47
 
48
  nonstandard_split_name = f"{formalization}_NonStandard_Human_Written"
49
  nonstandard_split = load_dataset(
50
+ "parquet",
51
+ data_files=(
52
+ f"https://huggingface.co/datasets/{DATASET_ID}/resolve/main/"
53
+ f"predstate/{nonstandard_split_name}-00000-of-00001.parquet"
54
+ ),
55
+ split="train",
56
  )
57
  for intervention in ("KeywordSwap", "KeywordObf"):
58
  record = next(
 
78
  TOKENIZER = AutoTokenizer.from_pretrained(MODEL_ID)
79
  MODEL = AutoModelForCausalLM.from_pretrained(
80
  MODEL_ID,
81
+ dtype=torch.bfloat16,
82
  ).to("cuda")
83
  MODEL.eval()
84
 
 
106
  model_inputs = TOKENIZER.apply_chat_template(
107
  messages,
108
  add_generation_prompt=True,
109
+ tokenize=True,
110
  return_tensors="pt",
111
+ return_dict=True,
112
  ).to("cuda")
113
+ input_ids = model_inputs["input_ids"]
114
 
115
  with torch.inference_mode():
116
  generated = MODEL.generate(
117
+ **model_inputs,
118
  max_new_tokens=512,
119
  do_sample=False,
120
  pad_token_id=TOKENIZER.eos_token_id,
121
  )
122
 
123
  response = TOKENIZER.decode(
124
+ generated[0, input_ids.shape[-1] :],
125
  skip_special_tokens=True,
126
  ).strip()
127
  answer = _extract_answer(response)