aurora

Форк
0
/
interface.py 
78 строк · 2.7 Кб
1
import gradio as gr
2
from typing import Optional
3
from transformers.utils.versions import require_version
4

5
from llmtuner.webui.components import (
6
    create_top,
7
    create_train_tab,
8
    create_eval_tab,
9
    create_infer_tab,
10
    create_export_tab,
11
    create_chat_box
12
)
13
from llmtuner.webui.common import save_config
14
from llmtuner.webui.css import CSS
15
from llmtuner.webui.engine import Engine
16

17

18
require_version("gradio>=3.38.0,<4.0.0", "To fix: pip install \"gradio>=3.38.0,<4.0.0\"")
19

20

21
def create_ui(demo_mode: Optional[bool] = False) -> gr.Blocks:
22
    engine = Engine(demo_mode=demo_mode, pure_chat=False)
23

24
    with gr.Blocks(title="LLaMA Board", css=CSS) as demo:
25
        if demo_mode:
26
            gr.HTML(
27
                "<h1><center>LLaMA Board: A One-stop Web UI for Getting Started with LLaMA Factory</center></h1>"
28
            )
29
            gr.HTML(
30
                "<h3><center>Visit <a href=\"https://github.com/hiyouga/LLaMA-Factory\" target=\"_blank\">"
31
                "LLaMA Factory</a> for details.</center></h3>"
32
            )
33
            gr.DuplicateButton(value="Duplicate Space for private use", elem_classes="duplicate-button")
34

35
        engine.manager.all_elems["top"] = create_top()
36
        lang: "gr.Dropdown" = engine.manager.get_elem_by_name("top.lang")
37

38
        with gr.Tab("Train"):
39
            engine.manager.all_elems["train"] = create_train_tab(engine)
40

41
        with gr.Tab("Evaluate & Predict"):
42
            engine.manager.all_elems["eval"] = create_eval_tab(engine)
43

44
        with gr.Tab("Chat"):
45
            engine.manager.all_elems["infer"] = create_infer_tab(engine)
46

47
        if not demo_mode:
48
            with gr.Tab("Export"):
49
                engine.manager.all_elems["export"] = create_export_tab(engine)
50

51
        demo.load(engine.resume, outputs=engine.manager.list_elems())
52
        lang.change(engine.change_lang, [lang], engine.manager.list_elems(), queue=False)
53
        lang.input(save_config, inputs=[lang], queue=False)
54

55
    return demo
56

57

58
def create_web_demo() -> gr.Blocks:
59
    engine = Engine(pure_chat=True)
60

61
    with gr.Blocks(title="Web Demo", css=CSS) as demo:
62
        lang = gr.Dropdown(choices=["en", "zh"])
63
        engine.manager.all_elems["top"] = dict(lang=lang)
64

65
        chat_box, _, _, chat_elems = create_chat_box(engine, visible=True)
66
        engine.manager.all_elems["infer"] = dict(chat_box=chat_box, **chat_elems)
67

68
        demo.load(engine.resume, outputs=engine.manager.list_elems())
69
        lang.change(engine.change_lang, [lang], engine.manager.list_elems(), queue=False)
70
        lang.input(save_config, inputs=[lang], queue=False)
71

72
    return demo
73

74

75
if __name__ == "__main__":
76
    demo = create_ui()
77
    demo.queue()
78
    demo.launch(server_name="0.0.0.0", server_port=7860, share=False, inbrowser=True)
79

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.