ivanenclonar commited on
Commit
c89cf7e
·
verified ·
1 Parent(s): 89aaa8d

Initial commit

Browse files
Files changed (3) hide show
  1. inference.py +40 -0
  2. lgb_layer_1.txt +0 -0
  3. requirements.txt +4 -0
inference.py ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ from transformers import AutoModelForCausalLM, AutoTokenizer
3
+ import lightgbm as lgb
4
+ import numpy as np
5
+
6
+ class LinearProbeWrapper:
7
+ def __init__(self, model_name):
8
+ self.tokenizer = AutoTokenizer.from_pretrained(model_name)
9
+ self.model = AutoModelForCausalLM.from_pretrained(model_name, output_hidden_states=True)
10
+ self.linear_probe = lgb.Booster(model_file='lgb_layer_1.txt')
11
+
12
+
13
+ def __call__(self, inputs):
14
+ prompt = inputs.get("inputs", "")
15
+ inputs_tensors = self.tokenizer(prompt, return_tensors="pt")
16
+
17
+ with torch.no_grad():
18
+ # Get hidden states
19
+ outputs = self.model(**inputs_tensors)
20
+ # Access the hidden states (residual stream) - adjust index as needed
21
+ layer_1_hidden_state = outputs.hidden_states[1]
22
+ layer_1_hidden_state_np = layer_1_hidden_state.cpu().numpy().copy()
23
+
24
+ #Predict given hidden state
25
+ y_pred = self.linear_probe.predict(layer_1_hidden_state_np[0]);
26
+ y_pred_class = np.argmax(y_pred)
27
+
28
+ # Generate text
29
+ generation_output = self.model.generate(
30
+ **inputs_tensors, max_length=50, num_return_sequences=1
31
+ )
32
+ generated_text = self.tokenizer.decode(generation_output[0], skip_special_tokens=True)
33
+
34
+ return {
35
+ "generated_text": generated_text,
36
+ "probe_output": y_pred[y_pred_class]
37
+ }
38
+
39
+ def model_fn():
40
+ return LinearProbeWrapper("mistralai/Mistral-7B-Instruct-v0.2") # Replace with desired model
lgb_layer_1.txt ADDED
The diff for this file is too large to render. See raw diff
 
requirements.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ torch
2
+ transformers
3
+ lightgbm
4
+ numpy