MekkCyber commited on
Commit
9be6f61
·
1 Parent(s): 749044f
Files changed (3) hide show
  1. .gradio/certificate.pem +31 -0
  2. app.py +38 -31
  3. requirements.txt +2 -3
.gradio/certificate.pem ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ -----BEGIN CERTIFICATE-----
2
+ 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
31
+ -----END CERTIFICATE-----
app.py CHANGED
@@ -7,7 +7,6 @@ from huggingface_hub import list_models
7
  from gradio_huggingfacehub_search import HuggingfaceHubSearch
8
  from packaging import version
9
  import os
10
- import spaces
11
 
12
 
13
  def hello(profile: gr.OAuthProfile | None, oauth_token: gr.OAuthToken | None) -> str:
@@ -62,10 +61,7 @@ model = AutoModel.from_pretrained("{model_name}")"""
62
  return model_card
63
 
64
  def load_model(model_name, quantization_config, auth_token) :
65
- return AutoModel.from_pretrained(model_name, quantization_config=quantization_config, device_map="cuda", use_auth_token=auth_token.token)
66
-
67
- def load_model_cpu(model_name, quantization_config, auth_token) :
68
- return AutoModel.from_pretrained(model_name, quantization_config=quantization_config, use_auth_token=auth_token.token)
69
 
70
  def quantize_model(model_name, quantization_type, threshold, quant_type_4, double_quant_4, auth_token=None, username=None):
71
  print(f"Quantizing model: {quantization_type}")
@@ -89,14 +85,12 @@ def save_model(model, model_name, quantization_type, threshold, quant_type_4, do
89
  with tempfile.TemporaryDirectory() as tmpdirname:
90
 
91
 
92
- model.save_pretrained(tmpdirname, safe_serialization=False, use_auth_token=auth_token.token)
93
  if quantized_model_name :
94
  repo_name = f"{username}/{quantized_model_name}"
95
- else :
96
- if quantization_type == "int4_weight_only" :
97
- repo_name = f"{username}/{model_name.split('/')[-1]}-BNB-{quantization_type}"
98
- else :
99
- repo_name = f"{username}/{model_name.split('/')[-1]}-BNB-{quantization_type}"
100
 
101
  model_card = create_model_card(repo_name, quantization_type, threshold, quant_type_4, double_quant_4)
102
  with open(os.path.join(tmpdirname, "README.md"), "w") as f:
@@ -132,17 +126,18 @@ def quantize_and_save(profile: gr.OAuthProfile | None, oauth_token: gr.OAuthToke
132
 
133
  threshold = float(threshold)
134
 
135
- try:
136
- quantized_model = quantize_model(model_name, quantization_type, threshold, quant_type_4, double_quant_4, oauth_token, profile.username)
137
- return save_model(quantized_model, model_name, quantization_type, threshold, quant_type_4, double_quant_4, profile.username, oauth_token, quantized_model_name)
138
- except Exception as e :
139
- return f"An error occurred: {str(e)}"
 
140
 
141
 
142
  css="""/* Custom CSS to allow scrolling */
143
  .gradio-container {overflow-y: auto;}
144
  """
145
- with gr.Blocks(theme=gr.themes.Ocean(), css=css) as app:
146
  gr.Markdown(
147
  """
148
  # 🤗 LLM Model BitsAndBytes Quantization App
@@ -154,10 +149,10 @@ with gr.Blocks(theme=gr.themes.Ocean(), css=css) as app:
154
  gr.LoginButton(elem_id="login-button", elem_classes="center-button", min_width=250)
155
 
156
  m1 = gr.Markdown()
157
- app.load(hello, inputs=None, outputs=m1)
158
 
159
 
160
- radio = gr.Radio(["show", "hide"], label="Show Instructions")
161
  instructions = gr.Markdown(
162
  """
163
  ## Instructions
@@ -174,13 +169,24 @@ with gr.Blocks(theme=gr.themes.Ocean(), css=css) as app:
174
  """,
175
  visible=False
176
  )
177
- def update_visibility(radio): # Accept the event argument, even if not used
178
- value = radio # Get the selected value from the radio button
179
- if value == "show":
180
- return gr.Textbox(visible=True) #make it visible
181
- else:
182
- return gr.Textbox(visible=False)
183
- radio.change(update_visibility, radio, instructions)
 
 
 
 
 
 
 
 
 
 
 
184
 
185
  with gr.Row():
186
  with gr.Column():
@@ -228,18 +234,18 @@ with gr.Blocks(theme=gr.themes.Ocean(), css=css) as app:
228
  )
229
  with gr.Column():
230
  quantize_button = gr.Button("Quantize and Save Model", variant="primary")
231
- output_link = gr.Markdown(label="Quantized Model Link", container=True, min_height=40)
232
 
233
 
234
  # Adding CSS styles for the username box
235
- app.css = """
236
  #username-box {
237
  background-color: #f0f8ff; /* Light color */
238
  border-radius: 8px;
239
  padding: 10px;
240
  }
241
  """
242
- app.css = """
243
  .center-button {
244
  display: flex;
245
  justify-content: center;
@@ -254,6 +260,7 @@ with gr.Blocks(theme=gr.themes.Ocean(), css=css) as app:
254
  outputs=[output_link]
255
  )
256
 
257
-
 
258
  # Launch the app
259
- app.launch()
 
7
  from gradio_huggingfacehub_search import HuggingfaceHubSearch
8
  from packaging import version
9
  import os
 
10
 
11
 
12
  def hello(profile: gr.OAuthProfile | None, oauth_token: gr.OAuthToken | None) -> str:
 
61
  return model_card
62
 
63
  def load_model(model_name, quantization_config, auth_token) :
64
+ return AutoModel.from_pretrained(model_name, quantization_config=quantization_config, device_map="cpu", use_auth_token=auth_token.token)
 
 
 
65
 
66
  def quantize_model(model_name, quantization_type, threshold, quant_type_4, double_quant_4, auth_token=None, username=None):
67
  print(f"Quantizing model: {quantization_type}")
 
85
  with tempfile.TemporaryDirectory() as tmpdirname:
86
 
87
 
88
+ model.save_pretrained(tmpdirname, safe_serialization=True, use_auth_token=auth_token.token)
89
  if quantized_model_name :
90
  repo_name = f"{username}/{quantized_model_name}"
91
+ else :
92
+ repo_name = f"{username}/{model_name.split('/')[-1]}-BNB-{quantization_type}"
93
+
 
 
94
 
95
  model_card = create_model_card(repo_name, quantization_type, threshold, quant_type_4, double_quant_4)
96
  with open(os.path.join(tmpdirname, "README.md"), "w") as f:
 
126
 
127
  threshold = float(threshold)
128
 
129
+ # try:
130
+ quantized_model = quantize_model(model_name, quantization_type, threshold, quant_type_4, double_quant_4, oauth_token, profile.username)
131
+ return save_model(quantized_model, model_name, quantization_type, threshold, quant_type_4, double_quant_4, profile.username, oauth_token, quantized_model_name)
132
+ # except Exception as e :
133
+ # print(e)
134
+ # return f"An error occurred: {str(e)}"
135
 
136
 
137
  css="""/* Custom CSS to allow scrolling */
138
  .gradio-container {overflow-y: auto;}
139
  """
140
+ with gr.Blocks(theme=gr.themes.Ocean(), css=css) as demo:
141
  gr.Markdown(
142
  """
143
  # 🤗 LLM Model BitsAndBytes Quantization App
 
149
  gr.LoginButton(elem_id="login-button", elem_classes="center-button", min_width=250)
150
 
151
  m1 = gr.Markdown()
152
+ demo.load(hello, inputs=None, outputs=m1)
153
 
154
 
155
+ # radio = gr.Radio(["show", "hide"], label="Show Instructions")
156
  instructions = gr.Markdown(
157
  """
158
  ## Instructions
 
169
  """,
170
  visible=False
171
  )
172
+
173
+ instructions_visible = gr.State(False)
174
+ toggle_button = gr.Button("▼ Show Instructions", elem_id="toggle-button", elem_classes="toggle-button")
175
+
176
+ def toggle_instructions(instructions_visible):
177
+ new_visibility = not instructions_visible # Toggle the state
178
+ new_label = "▲ Hide Instructions" if new_visibility else "▼ Show Instructions" # Change label based on visibility
179
+ return gr.update(visible=new_visibility), new_visibility, gr.update(value=new_label) # Toggle visibility and return new state
180
+
181
+ toggle_button.click(toggle_instructions, instructions_visible, [instructions, instructions_visible, toggle_button])
182
+
183
+ # def update_visibility(radio): # Accept the event argument, even if not used
184
+ # value = radio # Get the selected value from the radio button
185
+ # if value == "show":
186
+ # return gr.Textbox(visible=True) #make it visible
187
+ # else:
188
+ # return gr.Textbox(visible=False)
189
+ # radio.change(update_visibility, radio, instructions)
190
 
191
  with gr.Row():
192
  with gr.Column():
 
234
  )
235
  with gr.Column():
236
  quantize_button = gr.Button("Quantize and Save Model", variant="primary")
237
+ output_link = gr.Markdown(label="Quantized Model Link", container=True, min_height=80)
238
 
239
 
240
  # Adding CSS styles for the username box
241
+ demo.css = """
242
  #username-box {
243
  background-color: #f0f8ff; /* Light color */
244
  border-radius: 8px;
245
  padding: 10px;
246
  }
247
  """
248
+ demo.css = """
249
  .center-button {
250
  display: flex;
251
  justify-content: center;
 
260
  outputs=[output_link]
261
  )
262
 
263
+ if __name__ == "__main__":
264
+ demo.launch(share=True)
265
  # Launch the app
266
+ # demo.launch(share=True, debug=True)
requirements.txt CHANGED
@@ -1,6 +1,5 @@
1
- git+https://github.com/huggingface/transformers.git@main#egg=transformers
2
  accelerate
3
- torchao
4
  huggingface-hub
5
  gradio-huggingfacehub-search
6
- bitsandbytes
 
1
+ transformers
2
  accelerate
 
3
  huggingface-hub
4
  gradio-huggingfacehub-search
5
+ https://github.com/bitsandbytes-foundation/bitsandbytes/releases/download/continuous-release_multi-backend-refactor/bitsandbytes-0.44.1.dev0-py3-none-manylinux_2_24_x86_64.whl