Spaces:
Build error
Build error
import gradio as gr | |
import subprocess | |
import os | |
from huggingface_hub import HfApi, snapshot_download | |
from gradio_huggingfacehub_search import HuggingfaceHubSearch | |
from apscheduler.schedulers.background import BackgroundScheduler | |
HF_TOKEN = os.environ.get("HF_TOKEN") | |
api = HfApi() | |
def process_model(model_id: str, file_path: str, key: str, value: str, hf_token): | |
MODEL_NAME = model_id.split("/")[-1] | |
FILE_NAME = file_path.split("/")[-1] | |
api.snapshot_download( | |
repo_id=model_id, | |
allow_patterns=file_path, | |
local_dir=f"{MODEL_NAME}", | |
) | |
print("Model downloaded successully!") | |
metadata_update = f"python llama.cpp/gguf-py/scripts/gguf_set_metadata.py {MODEL_NAME}/{file_path} {key} {value}" | |
subprocess.run(metadata_update, shell=True) | |
print(f"Model metadata {key} updated to {value} successully!") | |
# Upload gguf files | |
api.upload_folder( | |
folder_path=MODEL_NAME, | |
repo_id=model_id, | |
allow_patterns=["*.gguf", "$.md"], | |
token=hf_token, | |
) | |
print("Uploaded successfully!") | |
return "Processing complete." | |
# Create Gradio interface | |
iface = gr.Interface( | |
fn=process_model, | |
inputs=[ | |
gr.Textbox(lines=1, label="Model ID"), | |
gr.Textbox(lines=1, label="File path"), | |
gr.Textbox(lines=1, label="Key"), | |
gr.Textbox(lines=1, label="Value"), | |
gr.Textbox(lines=1, label="Token"), | |
], | |
outputs="text", | |
) | |
# Launch the interface | |
iface.launch(debug=True) | |
def restart_space(): | |
HfApi().restart_space( | |
repo_id="bartowski/gguf-metadata-updated", token=HF_TOKEN, factory_reboot=True | |
) | |
scheduler = BackgroundScheduler() | |
scheduler.add_job(restart_space, "interval", seconds=21600) | |
scheduler.start() | |
# Launch the interface | |
demo.queue(default_concurrency_limit=1, max_size=5).launch(debug=True, show_api=False) | |