File size: 2,499 Bytes
8b7a3d1
 
 
 
67d646a
8b7a3d1
 
 
c0a7c3c
67d646a
8b7a3d1
 
 
c0a7c3c
 
8b7a3d1
 
 
a60b0e7
c0a7c3c
8b7a3d1
 
 
ecfdc8b
 
8b7a3d1
ecfdc8b
 
8b7a3d1
ecfdc8b
8b7a3d1
ecfdc8b
 
 
 
 
 
 
 
 
 
 
 
3aac014
ecfdc8b
 
8b7a3d1
ecfdc8b
8b7a3d1
 
ecfdc8b
 
 
 
 
 
 
 
 
 
 
 
 
8b7a3d1
 
 
ecfdc8b
67d646a
db0cd98
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#!/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()