|
import os |
|
import gradio as gr |
|
from transformers import AutoModel, AutoTokenizer |
|
|
|
def process_models(model_name, save_dir, additional_models): |
|
log_lines = [] |
|
|
|
|
|
log_lines.append(f"π Loading model: {model_name}") |
|
try: |
|
model = AutoModel.from_pretrained(model_name) |
|
tokenizer = AutoTokenizer.from_pretrained(model_name) |
|
model_save_path = os.path.join(save_dir, model_name.replace("/", "_")) |
|
os.makedirs(model_save_path, exist_ok=True) |
|
model.save_pretrained(model_save_path) |
|
log_lines.append(f"β
Saved {model_name} to {model_save_path}") |
|
except Exception as e: |
|
log_lines.append(f"β Error with {model_name}: {e}") |
|
|
|
|
|
if additional_models: |
|
for m in additional_models: |
|
log_lines.append(f"π Loading model: {m}") |
|
try: |
|
model = AutoModel.from_pretrained(m) |
|
tokenizer = AutoTokenizer.from_pretrained(m) |
|
model_save_path = os.path.join(save_dir, m.replace("/", "_")) |
|
os.makedirs(model_save_path, exist_ok=True) |
|
model.save_pretrained(model_save_path) |
|
log_lines.append(f"β
Saved {m} to {model_save_path}") |
|
except Exception as e: |
|
log_lines.append(f"β Error with {m}: {e}") |
|
|
|
return "\n".join(log_lines) |
|
|
|
with gr.Blocks() as demo: |
|
gr.Markdown("# HuggingFace Model Loader & Saver") |
|
gr.Markdown("Load and save HuggingFace models locally using Transformers.") |
|
|
|
with gr.Row(): |
|
model_name_input = gr.Textbox(label="π Model", value="openai-gpt", placeholder="Enter model name") |
|
save_dir_input = gr.Textbox(label="πΎ Save Dir", value="./hugging", placeholder="Enter save directory") |
|
|
|
additional_models_input = gr.Dropdown( |
|
label="π§© Additional Models", |
|
choices=["bert-base-uncased", "gpt2", "roberta-base"], |
|
value=[], |
|
multiselect=True, |
|
info="Select additional models" |
|
) |
|
|
|
run_button = gr.Button("Load & Save Model") |
|
output_log = gr.Textbox(label="Output Log", lines=10) |
|
|
|
run_button.click( |
|
fn=process_models, |
|
inputs=[model_name_input, save_dir_input, additional_models_input], |
|
outputs=output_log |
|
) |
|
|
|
if __name__ == "__main__": |
|
|
|
demo.launch(server_name="0.0.0.0", server_port=7860) |
|
|