Steelskull commited on
Commit
ed2f92c
·
verified ·
1 Parent(s): 16f7e99

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -10
app.py CHANGED
@@ -4,6 +4,8 @@ import matplotlib.pyplot as plt
4
  import seaborn as sns
5
  from tqdm import tqdm
6
  import gradio as gr
 
 
7
 
8
  def calculate_weight_diff(base_weight, chat_weight):
9
  return torch.abs(base_weight - chat_weight).mean().item()
@@ -46,7 +48,7 @@ def calculate_layer_diffs(base_model, chat_model, load_one_at_a_time=False):
46
 
47
  return layer_diffs
48
 
49
- def visualize_layer_diffs(layer_diffs, base_model_name, chat_model_name): # Added model names as parameters
50
  num_layers = len(layer_diffs)
51
  num_components = len(layer_diffs[0])
52
 
@@ -65,26 +67,31 @@ def visualize_layer_diffs(layer_diffs, base_model_name, chat_model_name): # Add
65
  axs[i].invert_yaxis()
66
 
67
  plt.tight_layout()
68
- return fig
 
 
 
 
 
 
69
 
70
  def gradio_interface(base_model_name, chat_model_name, hf_token, load_one_at_a_time=False):
71
- base_model = AutoModelForCausalLM.from_pretrained(base_model_name, torch_dtype=torch.bfloat16, use_auth_token=hf_token)
72
- chat_model = AutoModelForCausalLM.from_pretrained(chat_model_name, torch_dtype=torch.bfloat16, use_auth_token=hf_token)
 
73
 
74
  layer_diffs = calculate_layer_diffs(base_model, chat_model, load_one_at_a_time=load_one_at_a_time)
75
- fig = visualize_layer_diffs(layer_diffs, base_model_name, chat_model_name) # Pass model names to visualization
76
-
77
- return fig
78
 
79
  iface = gr.Interface(
80
  fn=gradio_interface,
81
  inputs=[
82
  gr.Textbox(lines=2, placeholder="Enter base model name"),
83
- gr.Textbox(lines=2, placeholder="Enter finetuned model name"),
84
- gr.Textbox(lines=2, placeholder="Enter Hugging Face token"),
85
  gr.Checkbox(label="Load one layer at a time")
86
  ],
87
- outputs="image",
88
  title="Model Weight Difference Visualizer"
89
  )
90
 
 
4
  import seaborn as sns
5
  from tqdm import tqdm
6
  import gradio as gr
7
+ import io
8
+ import PIL.Image
9
 
10
  def calculate_weight_diff(base_weight, chat_weight):
11
  return torch.abs(base_weight - chat_weight).mean().item()
 
48
 
49
  return layer_diffs
50
 
51
+ def visualize_layer_diffs(layer_diffs, base_model_name, chat_model_name):
52
  num_layers = len(layer_diffs)
53
  num_components = len(layer_diffs[0])
54
 
 
67
  axs[i].invert_yaxis()
68
 
69
  plt.tight_layout()
70
+
71
+ # Convert plot to image
72
+ buf = io.BytesIO()
73
+ fig.savefig(buf, format='png', dpi=300, bbox_inches='tight')
74
+ buf.seek(0)
75
+ plt.close(fig) # Close the figure to free memory
76
+ return PIL.Image.open(buf)
77
 
78
  def gradio_interface(base_model_name, chat_model_name, hf_token, load_one_at_a_time=False):
79
+ # Update to use 'token' instead of 'use_auth_token' to handle deprecation warning
80
+ base_model = AutoModelForCausalLM.from_pretrained(base_model_name, torch_dtype=torch.bfloat16, token=hf_token)
81
+ chat_model = AutoModelForCausalLM.from_pretrained(chat_model_name, torch_dtype=torch.bfloat16, token=hf_token)
82
 
83
  layer_diffs = calculate_layer_diffs(base_model, chat_model, load_one_at_a_time=load_one_at_a_time)
84
+ return visualize_layer_diffs(layer_diffs, base_model_name, chat_model_name)
 
 
85
 
86
  iface = gr.Interface(
87
  fn=gradio_interface,
88
  inputs=[
89
  gr.Textbox(lines=2, placeholder="Enter base model name"),
90
+ gr.Textbox(lines=2, placeholder="Enter chat model name"),
91
+ gr.Textbox(lines=2, placeholder="Enter Hugging Face token", type="password"), # Hide token input
92
  gr.Checkbox(label="Load one layer at a time")
93
  ],
94
+ outputs=gr.Image(type="pil"), # Specify PIL image output
95
  title="Model Weight Difference Visualizer"
96
  )
97