| | |
| | from typing import Type |
| |
|
| | import gradio as gr |
| | from packaging import version |
| |
|
| | from swift.ui.base import BaseUI |
| | from swift.ui.llm_infer.runtime import Runtime |
| | from swift.utils import get_logger |
| |
|
| | logger = get_logger() |
| |
|
| |
|
| | class EvalRuntime(Runtime): |
| |
|
| | group = 'llm_eval' |
| |
|
| | cmd = 'eval' |
| |
|
| | locale_dict = { |
| | 'runtime_tab': { |
| | 'label': { |
| | 'zh': '运行时', |
| | 'en': 'Runtime' |
| | }, |
| | }, |
| | 'running_cmd': { |
| | 'label': { |
| | 'zh': '运行命令', |
| | 'en': 'Command line' |
| | }, |
| | 'info': { |
| | 'zh': '执行的实际命令', |
| | 'en': 'The actual command' |
| | } |
| | }, |
| | 'show_log': { |
| | 'value': { |
| | 'zh': '展示评测状态', |
| | 'en': 'Show eval status' |
| | }, |
| | }, |
| | 'stop_show_log': { |
| | 'value': { |
| | 'zh': '停止展示', |
| | 'en': 'Stop showing running status' |
| | }, |
| | }, |
| | 'log': { |
| | 'label': { |
| | 'zh': '日志输出', |
| | 'en': 'Logging content' |
| | }, |
| | 'info': { |
| | 'zh': '如果日志无更新请再次点击"展示日志内容"', |
| | 'en': 'Please press "Show log" if the log content is not updating' |
| | } |
| | }, |
| | 'running_tasks': { |
| | 'label': { |
| | 'zh': '运行中评测', |
| | 'en': 'Running evaluation' |
| | }, |
| | 'info': { |
| | 'zh': '所有的swift eval命令启动的任务', |
| | 'en': 'All tasks started by swift eval' |
| | } |
| | }, |
| | 'refresh_tasks': { |
| | 'value': { |
| | 'zh': '找回评测', |
| | 'en': 'Find evaluation' |
| | }, |
| | }, |
| | 'kill_task': { |
| | 'value': { |
| | 'zh': '杀死评测', |
| | 'en': 'Kill evaluation' |
| | }, |
| | }, |
| | } |
| |
|
| | @classmethod |
| | def do_build_ui(cls, base_tab: Type['BaseUI']): |
| | with gr.Accordion(elem_id='runtime_tab', open=False, visible=True): |
| | with gr.Blocks(): |
| | with gr.Row(): |
| | gr.Dropdown(elem_id='running_tasks', scale=10) |
| | gr.Button(elem_id='refresh_tasks', scale=1, variant='primary') |
| | gr.Button(elem_id='show_log', scale=1, variant='primary') |
| | gr.Button(elem_id='stop_show_log', scale=1) |
| | gr.Button(elem_id='kill_task', scale=1, size='lg') |
| | with gr.Row(): |
| | gr.Textbox(elem_id='log', lines=6, visible=False) |
| |
|
| | concurrency_limit = {} |
| | if version.parse(gr.__version__) >= version.parse('4.0.0'): |
| | concurrency_limit = {'concurrency_limit': 5} |
| | cls.log_event = base_tab.element('show_log').click(cls.update_log, [], [cls.element('log')]).then( |
| | cls.wait, [base_tab.element('running_tasks')], [cls.element('log')], **concurrency_limit) |
| |
|
| | base_tab.element('stop_show_log').click(cls.break_log_event, [cls.element('running_tasks')], []) |
| |
|
| | base_tab.element('refresh_tasks').click( |
| | cls.refresh_tasks, |
| | [base_tab.element('running_tasks')], |
| | [base_tab.element('running_tasks')], |
| | ) |
| |
|