Tune-A-Video-Training-UI / app_upload.py
Abdessamad12's picture
Duplicate from Tune-A-Video-library/Tune-A-Video-Training-UI
4e12bd4
raw
history blame
2.76 kB
#!/usr/bin/env python
from __future__ import annotations
import os
import gradio as gr
from constants import MODEL_LIBRARY_ORG_NAME, UploadTarget
from uploader import upload
from utils import find_exp_dirs
def load_local_model_list() -> dict:
choices = find_exp_dirs()
return gr.update(choices=choices, value=choices[0] if choices else None)
def create_upload_demo(disable_run_button: bool = False) -> gr.Blocks:
model_dirs = find_exp_dirs()
with gr.Blocks() as demo:
with gr.Box():
gr.Markdown('Local Models')
reload_button = gr.Button('Reload Model List')
model_dir = gr.Dropdown(
label='Model names',
choices=model_dirs,
value=model_dirs[0] if model_dirs else None)
with gr.Box():
gr.Markdown('Upload Settings')
with gr.Row():
use_private_repo = gr.Checkbox(label='Private', value=True)
delete_existing_repo = gr.Checkbox(
label='Delete existing repo of the same name', value=False)
upload_to = gr.Radio(label='Upload to',
choices=[_.value for _ in UploadTarget],
value=UploadTarget.MODEL_LIBRARY.value)
model_name = gr.Textbox(label='Model Name')
hf_token = gr.Text(label='Hugging Face Write Token',
type='password',
visible=os.getenv('HF_TOKEN') is None)
upload_button = gr.Button('Upload', interactive=not disable_run_button)
gr.Markdown(f'''
- You can upload your trained model to your personal profile (i.e. `https://huggingface.co/{{your_username}}/{{model_name}}`) or to the public [Tune-A-Video Library](https://huggingface.co/{MODEL_LIBRARY_ORG_NAME}) (i.e. `https://huggingface.co/{MODEL_LIBRARY_ORG_NAME}/{{model_name}}`).
''')
with gr.Box():
gr.Markdown('Output message')
output_message = gr.Markdown()
reload_button.click(fn=load_local_model_list,
inputs=None,
outputs=model_dir)
upload_button.click(fn=upload,
inputs=[
model_dir,
model_name,
upload_to,
use_private_repo,
delete_existing_repo,
hf_token,
],
outputs=output_message)
return demo
if __name__ == '__main__':
demo = create_upload_demo()
demo.queue(api_open=False, max_size=1).launch()