File size: 5,988 Bytes
bf7dd8f
 
 
 
9dfb554
 
 
be86099
 
a4b99c0
 
bf7dd8f
a4b99c0
4c5daf6
 
 
d651dce
a4b99c0
7edac98
 
a3a6aee
bf7dd8f
a3a6aee
bf7dd8f
 
 
 
 
 
 
7edac98
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
be86099
7edac98
 
bf7dd8f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e13d37d
 
2e399f5
be86099
e13d37d
bf7dd8f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41e13ea
 
 
 
 
 
bf7dd8f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1d1733b
bf7dd8f
 
 
 
 
 
7edac98
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# -*- coding: utf-8 -*-
import datetime
import os

# print(f"pip3 uninstall gradio")
# results = os.popen(f"pip3 uninstall gradio -y")
# print(results.readlines())
results = os.popen(f"ls ~/.cache/huggingface/hub")
print("step0:", results.readlines())
results = os.popen(f"pip3 install -r requirements.txt -i https://pypi.org/simple")
print("step1:", results.readlines())
results = os.popen(f"pip3 uninstall scepter -y")
print("step2:", results.readlines())
scepter_whl = os.environ.get("SCEPTER_WHL","scepter")
results = os.popen(f"pip3 install {scepter_whl} -i https://pypi.org/simple")
print("step3:", scepter_whl, results.readlines())
results = os.popen(f"pip3 list")
print("step4:", results.readlines())
#results = os.popen(f"sudo chmod 777 /data")
#print("step5:", results.readlines())
print("finish install")

import random
import gradio as gr

import scepter
from scepter.modules.utils.config import Config
from scepter.modules.utils.file_system import FS
from scepter.modules.utils.logger import get_logger, init_logger

def link_model():
    import os
    ms_root_dir = "cache/cache_data/"
    hf_root_dir = "/home/user/.cache/huggingface/hub/"
    # hf_root_dir = "/root/.cache/huggingface/hub/"
    model_map = {
        "95c8c1dcca842facbdcb9606c314f7ae/AI-ModelScope/stable-diffusion-v1-5": "models--runwayml--stable-diffusion-v1-5/snapshots/1d0c4ebf6ff58a5caecab40fa1406526bca4b5b9",
        "601abc72ccca722467955bb9c36da4b3/AI-ModelScope/stable-diffusion-2-1": "models--stabilityai--stable-diffusion-2-1/snapshots/5cae40e6a2745ae2b01ad92ae5043f95f23644d6",
        "76ee531623cf180d9c98a6fbf5fa0c45.0/AI-ModelScope/stable-diffusion-xl-base-1.0": "models--stabilityai--stable-diffusion-xl-base-1.0/snapshots/462165984030d82259a11f4367a4eed129e94a7b",
        "37fb512464d701519e3be1d14c97f8c0/AI-ModelScope/clip-vit-large-patch14": "models--openai--clip-vit-large-patch14/snapshots/32bd64288804d66eefd0ccbe215aa642df71cc41",
        "c2412c56551dfb7baa71c84978ee22eb/iic/scepter": "models--scepter-studio--scepter/snapshots/d78fd86694550622e1d256865fe444282fcccb19",
        "d5bec966515f3501f44f4844c8f8e5cb/iic/scepter_scedit": "models--scepter-studio--scepter_scedit/snapshots/c8905ae6dda1ebafd2db20261ebe98cf0d9a2cd1",
        "578c6574e9925c75f1ae50888bf65ccb/damo/LARGEN": "models--scepter-studio--LAR-Gen/snapshots/7ab4b7d934d60ed80600f2971fa0c4004ba17b4d",
        "b2e04aa8710d90c9486f14465c543e83/damo/stylebooth": "models--scepter-studio--stylebooth/snapshots/c993df593ed451c137118b5426a1dcab29e38d5c",
        "7168a5d7e0eb13ef4facee9a8d2da34c/cubeai/blip-image-captioning-base": "models--Salesforce--blip-image-captioning-base/snapshots/89b09ea1789f7addf2f6d6f0dfc4ce10ab58ef84"
    }
    for ms_name, hf_name in model_map.items():
        ms_path =os.path.join(ms_root_dir, ms_name)
        hf_path = os.path.join(hf_root_dir, hf_name)
        cmd = f"mkdir -p {ms_path} && ln -s {hf_path}/* {ms_path}"
        os.system(cmd)
        print(cmd)

link_model()

def prepare(config):
    if 'FILE_SYSTEM' in config:
        for fs_info in config['FILE_SYSTEM']:
            FS.init_fs_client(fs_info)

    if 'LOG_FILE' in config:
        logger = get_logger()
        tid = '{0:%Y%m%d%H%M%S%f}'.format(datetime.datetime.now()) + ''.join(
            [str(random.randint(1, 10)) for i in range(3)])
        init_logger(logger, log_file=config['LOG_FILE'].format(tid))

class TabManager():
    def __init__(self):
        pass

config_file = os.path.join(os.path.dirname(scepter.dirname), "scepter/methods/studio/scepter_ui.yaml")
config = Config(load=True, cfg_file=config_file)

# for v in config.FILE_SYSTEM:
    # v.TEMP_DIR = os.path.join("./", v.TEMP_DIR)
    # v.TEMP_DIR = os.path.join("/data/.huggingface", v.TEMP_DIR)
    # v.TEMP_DIR = os.path.join("~/.cache/huggingface/hub", v.TEMP_DIR)
    # os.makedirs(v.TEMP_DIR, exist_ok=True)

prepare(config)

language = "en"
debug = False


tab_manager = TabManager()
interfaces = []
for info in config['INTERFACE']:
    name = info.get('NAME_EN',
                    '') if language == 'en' else info['NAME']
    ifid = info['IFID']
    if not FS.exists(info['CONFIG']):
        info['CONFIG'] = os.path.join(os.path.dirname(scepter.dirname), info['CONFIG'])
    if not FS.exists(info['CONFIG']):
        raise f"{info['CONFIG']} doesn't exist."
    interface = None
    if ifid == 'home':
        from scepter.studio.home.home import HomeUI
        interface = HomeUI(info['CONFIG'],
            is_debug=debug,
            language=language,
            root_work_dir=config.WORK_DIR) 
    if ifid == 'tuner_manager':
        from scepter.studio.tuner_manager.tuner_manager import TunerManagerUI
        interface = TunerManagerUI(info['CONFIG'],
                                    is_debug=debug,
                                    language=language,
                                    root_work_dir=config.WORK_DIR)
    if ifid == 'inference':
        from scepter.studio.inference.inference import InferenceUI
        interface = InferenceUI(
            info['CONFIG'],
            is_debug=debug,
            language=language,
            root_work_dir=config.WORK_DIR)
    if ifid == '':
        pass  # TODO: Add New Features
    if interface:
        interfaces.append((interface, name, ifid))
        setattr(tab_manager, ifid, interface)

with gr.Blocks() as demo:
    if 'BANNER' in config:
        gr.HTML(config.BANNER)
    else:
        gr.Markdown(
            f"<h2><center>{config.get('TITLE', 'SCEPTER Studio')}</center></h2>"
        )
    with gr.Tabs(elem_id='tabs') as tabs:
        setattr(tab_manager, 'tabs', tabs)
        for interface, label, ifid in interfaces:
            with gr.TabItem(label, id=ifid, elem_id=f'tab_{ifid}'):
                interface.create_ui()
        for interface, label, ifid in interfaces:
            interface.set_callbacks(tab_manager)

demo.queue(status_update_rate=1, api_open=False).launch(share=False, show_error=True, enable_queue=True)