ngxson HF staff commited on
Commit
114dc33
·
verified ·
1 Parent(s): 674f636

add --base-model-id

Browse files
Files changed (1) hide show
  1. app.py +19 -3
app.py CHANGED
@@ -14,9 +14,13 @@ from apscheduler.schedulers.background import BackgroundScheduler
14
 
15
  CONVERSION_SCRIPT = "convert_lora_to_gguf.py"
16
 
17
- def process_model(peft_model_id: str, q_method: str, private_repo, oauth_token: gr.OAuthToken | None):
18
  if oauth_token is None or oauth_token.token is None:
19
  raise gr.Error("You must be logged in to use GGUF-my-lora")
 
 
 
 
20
  model_name = peft_model_id.split('/')[-1]
21
  gguf_output_name = f"{model_name}-{q_method.lower()}.gguf"
22
 
@@ -62,7 +66,7 @@ def process_model(peft_model_id: str, q_method: str, private_repo, oauth_token:
62
  if not os.path.exists(adapter_config_dir):
63
  raise Exception('adapter_config.json not found. Please ensure the selected repo is a PEFT LoRA model.<br/><br/>If you are converting a model (not a LoRA adapter), please use <a href="https://huggingface.co/spaces/ggml-org/gguf-my-repo" target="_blank" style="text-decoration:underline">GGUF-my-repo</a> instead.')
64
 
65
- result = subprocess.run([
66
  "python",
67
  f"llama.cpp/{CONVERSION_SCRIPT}",
68
  local_dir,
@@ -70,7 +74,12 @@ def process_model(peft_model_id: str, q_method: str, private_repo, oauth_token:
70
  q_method.lower(),
71
  "--outfile",
72
  gguf_output_path,
73
- ], shell=False, capture_output=True)
 
 
 
 
 
74
  print(result)
75
  if result.returncode != 0:
76
  raise Exception(f"Error converting to GGUF {q_method}: {result.stderr}")
@@ -148,6 +157,12 @@ with gr.Blocks(css=css) as demo:
148
  search_type="model",
149
  )
150
 
 
 
 
 
 
 
151
  q_method = gr.Dropdown(
152
  ["F32", "F16", "Q8_0"],
153
  label="Quantization Method",
@@ -167,6 +182,7 @@ with gr.Blocks(css=css) as demo:
167
  fn=process_model,
168
  inputs=[
169
  peft_model_id,
 
170
  q_method,
171
  private_repo,
172
  ],
 
14
 
15
  CONVERSION_SCRIPT = "convert_lora_to_gguf.py"
16
 
17
+ def process_model(peft_model_id: str, base_model_id: str, q_method: str, private_repo, oauth_token: gr.OAuthToken | None):
18
  if oauth_token is None or oauth_token.token is None:
19
  raise gr.Error("You must be logged in to use GGUF-my-lora")
20
+
21
+ # validate the oauth token
22
+ whoami(oauth_token.token)
23
+
24
  model_name = peft_model_id.split('/')[-1]
25
  gguf_output_name = f"{model_name}-{q_method.lower()}.gguf"
26
 
 
66
  if not os.path.exists(adapter_config_dir):
67
  raise Exception('adapter_config.json not found. Please ensure the selected repo is a PEFT LoRA model.<br/><br/>If you are converting a model (not a LoRA adapter), please use <a href="https://huggingface.co/spaces/ggml-org/gguf-my-repo" target="_blank" style="text-decoration:underline">GGUF-my-repo</a> instead.')
68
 
69
+ cmd = [
70
  "python",
71
  f"llama.cpp/{CONVERSION_SCRIPT}",
72
  local_dir,
 
74
  q_method.lower(),
75
  "--outfile",
76
  gguf_output_path,
77
+ ]
78
+ if base_model_id:
79
+ cmd.extend(["--base-model-id", base_model_id])
80
+ print("cmd", cmd)
81
+
82
+ result = subprocess.run(cmd, shell=False, capture_output=True)
83
  print(result)
84
  if result.returncode != 0:
85
  raise Exception(f"Error converting to GGUF {q_method}: {result.stderr}")
 
157
  search_type="model",
158
  )
159
 
160
+ base_model_id = HuggingfaceHubSearch(
161
+ label="Base model repository (Optional)",
162
+ placeholder="If empty, we will use the value from adapter_config.json",
163
+ search_type="model",
164
+ )
165
+
166
  q_method = gr.Dropdown(
167
  ["F32", "F16", "Q8_0"],
168
  label="Quantization Method",
 
182
  fn=process_model,
183
  inputs=[
184
  peft_model_id,
185
+ base_model_id,
186
  q_method,
187
  private_repo,
188
  ],