107 lines
3.5 KiB
Python
107 lines
3.5 KiB
Python
|
|
"""Usage
|
|||
|
|
加载本地模型:
|
|||
|
|
python webui_allinone.py
|
|||
|
|
|
|||
|
|
调用远程api服务:
|
|||
|
|
python webui_allinone.py --use-remote-api
|
|||
|
|
|
|||
|
|
后台运行webui服务:
|
|||
|
|
python webui_allinone.py --nohup
|
|||
|
|
|
|||
|
|
加载多个非默认模型:
|
|||
|
|
python webui_allinone.py --model-path-address model1@host1@port1 model2@host2@port2
|
|||
|
|
|
|||
|
|
多卡启动:
|
|||
|
|
python webui_alline.py --model-path-address model@host@port --num-gpus 2 --gpus 0,1 --max-gpu-memory 10GiB
|
|||
|
|
|
|||
|
|
"""
|
|||
|
|
import os
|
|||
|
|
import subprocess
|
|||
|
|
|
|||
|
|
import streamlit as st
|
|||
|
|
from streamlit_option_menu import option_menu
|
|||
|
|
|
|||
|
|
from chatchat.server.api_allinone_stale import api_args, parser
|
|||
|
|
from chatchat.server.llm_api_stale import (
|
|||
|
|
LOG_PATH,
|
|||
|
|
controller_args,
|
|||
|
|
launch_all,
|
|||
|
|
server_args,
|
|||
|
|
string_args,
|
|||
|
|
worker_args,
|
|||
|
|
)
|
|||
|
|
from chatchat.webui_pages import *
|
|||
|
|
from chatchat.webui_pages.utils import *
|
|||
|
|
|
|||
|
|
parser.add_argument("--use-remote-api", action="store_true")
|
|||
|
|
parser.add_argument("--nohup", action="store_true")
|
|||
|
|
parser.add_argument("--server.port", type=int, default=8501)
|
|||
|
|
parser.add_argument("--theme.base", type=str, default='"light"')
|
|||
|
|
parser.add_argument("--theme.primaryColor", type=str, default='"#165dff"')
|
|||
|
|
parser.add_argument("--theme.secondaryBackgroundColor", type=str, default='"#f5f5f5"')
|
|||
|
|
parser.add_argument("--theme.textColor", type=str, default='"#000000"')
|
|||
|
|
web_args = [
|
|||
|
|
"server.port",
|
|||
|
|
"theme.base",
|
|||
|
|
"theme.primaryColor",
|
|||
|
|
"theme.secondaryBackgroundColor",
|
|||
|
|
"theme.textColor",
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
|
|||
|
|
def launch_api(args, args_list=api_args, log_name=None):
|
|||
|
|
print("Launching api ...")
|
|||
|
|
print("启动API服务...")
|
|||
|
|
if not log_name:
|
|||
|
|
log_name = f"{LOG_PATH}api_{args.api_host}_{args.api_port}"
|
|||
|
|
print(f"logs on api are written in {log_name}")
|
|||
|
|
print(f"API日志位于{log_name}下,如启动异常请查看日志")
|
|||
|
|
args_str = string_args(args, args_list)
|
|||
|
|
api_sh = "python server/{script} {args_str} >{log_name}.log 2>&1 &".format(
|
|||
|
|
script="api.py", args_str=args_str, log_name=log_name
|
|||
|
|
)
|
|||
|
|
subprocess.run(api_sh, shell=True, check=True)
|
|||
|
|
print("launch api done!")
|
|||
|
|
print("启动API服务完毕.")
|
|||
|
|
|
|||
|
|
|
|||
|
|
def launch_webui(args, args_list=web_args, log_name=None):
|
|||
|
|
print("Launching webui...")
|
|||
|
|
print("启动webui服务...")
|
|||
|
|
if not log_name:
|
|||
|
|
log_name = f"{LOG_PATH}webui"
|
|||
|
|
|
|||
|
|
args_str = string_args(args, args_list)
|
|||
|
|
if args.nohup:
|
|||
|
|
print(f"logs on api are written in {log_name}")
|
|||
|
|
print(f"webui服务日志位于{log_name}下,如启动异常请查看日志")
|
|||
|
|
webui_sh = "streamlit run webui.py {args_str} >{log_name}.log 2>&1 &".format(
|
|||
|
|
args_str=args_str, log_name=log_name
|
|||
|
|
)
|
|||
|
|
else:
|
|||
|
|
webui_sh = "streamlit run webui.py {args_str}".format(args_str=args_str)
|
|||
|
|
subprocess.run(webui_sh, shell=True, check=True)
|
|||
|
|
print("launch webui done!")
|
|||
|
|
print("启动webui服务完毕.")
|
|||
|
|
|
|||
|
|
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
print("Starting webui_allineone.py, it would take a while, please be patient....")
|
|||
|
|
print(
|
|||
|
|
f"开始启动webui_allinone,启动LLM服务需要约3-10分钟,请耐心等待,如长时间未启动,请到{LOG_PATH}下查看日志..."
|
|||
|
|
)
|
|||
|
|
args = parser.parse_args()
|
|||
|
|
|
|||
|
|
print("*" * 80)
|
|||
|
|
if not args.use_remote_api:
|
|||
|
|
launch_all(
|
|||
|
|
args=args,
|
|||
|
|
controller_args=controller_args,
|
|||
|
|
worker_args=worker_args,
|
|||
|
|
server_args=server_args,
|
|||
|
|
)
|
|||
|
|
launch_api(args=args, args_list=api_args)
|
|||
|
|
launch_webui(args=args, args_list=web_args)
|
|||
|
|
print("Start webui_allinone.py done!")
|
|||
|
|
print("感谢耐心等待,启动webui_allinone完毕。")
|