dar-tau commited on
Commit
af967c9
·
verified ·
1 Parent(s): e8f7052

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +7 -3
app.py CHANGED
@@ -21,6 +21,11 @@ MAX_PROMPT_TOKENS = 60
21
  MAX_NUM_LAYERS = 50
22
  welcome_message = '**You are now running {model_name}!!** 🥳🥳🥳'
23
 
 
 
 
 
 
24
  @dataclass
25
  class LocalState:
26
  hidden_states: Optional[torch.Tensor] = None
@@ -96,8 +101,8 @@ def get_hidden_states(raw_original_prompt, force_hidden_states=False):
96
  outputs = model(**model_inputs, output_hidden_states=True, return_dict=True)
97
  hidden_states = torch.stack([h.squeeze(0).cpu().detach() for h in outputs.hidden_states], dim=0)
98
  # TODO: document this!
99
- hidden_scores = F.normalize(hidden_states, dim=-1).diff(dim=0).norm(dim=-1).cpu() # num_layers x num_tokens
100
- important_tokens = (1 + np.unravel_index(hidden_scores.flatten().topk(k=5).indices.numpy(), hidden_scores.shape)[1])
101
  print(f'{important_tokens=}\t\t{hidden_states.shape=}')
102
  global_state.local_state.hidden_states = hidden_states.cpu().detach()
103
 
@@ -162,7 +167,6 @@ def run_interpretation(raw_original_prompt, raw_interpretation_prompt, max_new_t
162
  diff_score = ((diff_score1 - diff_score1.min()) / (diff_score1.max() - diff_score1.min())
163
  + (diff_score2 - diff_score2.min()) / (diff_score2.max() - diff_score2.min()))
164
 
165
- avoid_first, avoid_last = 3, 3 # layers that are usually never important
166
  assert avoid_first >= 1 # due to .diff() we will not be able to compute a score for the first layer
167
  diff_score = diff_score[avoid_first-1:len(diff_score)-avoid_last]
168
  important_idxs = avoid_first + diff_score.topk(k=int(np.ceil(0.3 * len(diff_score)))).indices.cpu().numpy() #
 
21
  MAX_NUM_LAYERS = 50
22
  welcome_message = '**You are now running {model_name}!!** 🥳🥳🥳'
23
 
24
+ # Used by the layer and token importance heuristic in this file.
25
+ # These layers are usually not important. We will ignore them when looking for important layers
26
+ avoid_first, avoid_last = 3, 2
27
+
28
+
29
  @dataclass
30
  class LocalState:
31
  hidden_states: Optional[torch.Tensor] = None
 
101
  outputs = model(**model_inputs, output_hidden_states=True, return_dict=True)
102
  hidden_states = torch.stack([h.squeeze(0).cpu().detach() for h in outputs.hidden_states], dim=0)
103
  # TODO: document this!
104
+ hidden_scores = F.normalize(hidden_states[avoid_first-1:len(hidden_states)-avoid_last], dim=-1).diff(dim=0).norm(dim=-1).cpu() # num_layers x num_tokens
105
+ important_tokens = np.unravel_index(hidden_scores.flatten().topk(k=5).indices.numpy(), hidden_scores.shape)[1]
106
  print(f'{important_tokens=}\t\t{hidden_states.shape=}')
107
  global_state.local_state.hidden_states = hidden_states.cpu().detach()
108
 
 
167
  diff_score = ((diff_score1 - diff_score1.min()) / (diff_score1.max() - diff_score1.min())
168
  + (diff_score2 - diff_score2.min()) / (diff_score2.max() - diff_score2.min()))
169
 
 
170
  assert avoid_first >= 1 # due to .diff() we will not be able to compute a score for the first layer
171
  diff_score = diff_score[avoid_first-1:len(diff_score)-avoid_last]
172
  important_idxs = avoid_first + diff_score.topk(k=int(np.ceil(0.3 * len(diff_score)))).indices.cpu().numpy() #