Spaces:
Runtime error
Runtime error
import gradio as gr | |
from transformers.utils.versions import require_version | |
from llmtuner.webui.components import ( | |
create_top, | |
create_train_tab, | |
create_eval_tab, | |
create_infer_tab, | |
create_export_tab, | |
create_chat_box | |
) | |
from llmtuner.webui.chat import WebChatModel | |
from llmtuner.webui.css import CSS | |
from llmtuner.webui.manager import Manager | |
from llmtuner.webui.runner import Runner | |
require_version("gradio>=3.36.0", "To fix: pip install gradio>=3.36.0") | |
def create_ui() -> gr.Blocks: | |
runner = Runner() | |
with gr.Blocks(title="Web Tuner", css=CSS) as demo: | |
top_elems = create_top() | |
with gr.Tab("Train"): | |
train_elems = create_train_tab(top_elems, runner) | |
with gr.Tab("Evaluate"): | |
eval_elems = create_eval_tab(top_elems, runner) | |
with gr.Tab("Chat"): | |
infer_elems = create_infer_tab(top_elems) | |
with gr.Tab("Export"): | |
export_elems = create_export_tab(top_elems) | |
elem_list = [top_elems, train_elems, eval_elems, infer_elems, export_elems] | |
manager = Manager(elem_list) | |
demo.load( | |
manager.gen_label, | |
[top_elems["lang"]], | |
[elem for elems in elem_list for elem in elems.values()], | |
) | |
top_elems["lang"].change( | |
manager.gen_label, | |
[top_elems["lang"]], | |
[elem for elems in elem_list for elem in elems.values()], | |
queue=False | |
) | |
return demo | |
def create_web_demo() -> gr.Blocks: | |
chat_model = WebChatModel(lazy_init=False) | |
with gr.Blocks(title="Web Demo", css=CSS) as demo: | |
lang = gr.Dropdown(choices=["en", "zh"], value="en") | |
_, _, _, chat_elems = create_chat_box(chat_model, visible=True) | |
manager = Manager([{"lang": lang}, chat_elems]) | |
demo.load(manager.gen_label, [lang], [lang] + list(chat_elems.values())) | |
lang.select(manager.gen_label, [lang], [lang] + list(chat_elems.values()), queue=False) | |
return demo | |
if __name__ == "__main__": | |
demo = create_ui() | |
demo.queue() | |
demo.launch(server_name="0.0.0.0", server_port=7860, share=False, inbrowser=True) | |