From 90c92f8c93896af781f2624b7aadff3526034f80 Mon Sep 17 00:00:00 2001 From: hzg0601 Date: Mon, 14 Aug 2023 16:43:01 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=A4=9A=E5=8D=A1=E5=90=AF?= =?UTF-8?q?=E5=8A=A8=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 30 +++++++++++++++++++++++++++--- server/llm_api_launch.py | 5 +++-- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 8e60c87..db0a556 100644 --- a/README.md +++ b/README.md @@ -223,13 +223,39 @@ embedding_model_dict = { #### 5.1 启动 LLM 服务 +##### 5.1.1 基于多进程脚本llm_api.py启动LLM服务 + 在项目根目录下,执行 [server/llm_api.py](server/llm_api.py) 脚本启动 **LLM 模型**服务: ```shell $ python server/llm_api.py ``` -以如上方式启动LLM服务会以nohup命令在后台运行 fastchat 服务,如需停止服务,可以运行如下命令: +项目支持多卡加载,需在llm_api.py中修改create_model_worker_app函数中,修改gpus=None,num_gpus=1,max_gpu_memory="20GiB",三个参数,其中gpus控制使用的卡的ID,如果“0,1", num_gpus控制使用的卡数,max_gpu_memory控制每个卡使用的显存容量。 + +注:以上方式可能会因torch的多进程问题而启动失败,视使用的系统、torch的版本而定。 + +##### 5.1.2 基于命令行脚本llm_api_launch.py启动LLM服务 + +在项目根目录下,执行 [server/llm_api_launch.py](server/llm_api.py) 脚本启动 **LLM 模型**服务: + +```shell +$ python server/llm_api_launch.py +``` + +该方式支持启动多个worker,示例启动方式: + +```shell +$ python server/llm_api_launch.py --model-path-addresss model1@host1@port1 model2@host2@port2 +``` + +如果要启动多卡加载,示例命令如下: + +```shell +$ python server/llm_api_launch.py --gpus 0,1 --num-gpus 2 --max-gpu-memory 10GiB +``` + +注:以如上方式启动LLM服务会以nohup命令在后台运行 fastchat 服务,如需停止服务,可以运行如下命令: ```shell $ python server/llm_api_shutdown.py --serve all @@ -237,8 +263,6 @@ $ python server/llm_api_shutdown.py --serve all 亦可单独停止一个 fastchat 服务模块,可选 [`all`, `controller`, `model_worker`, `openai_api_server`] -项目支持多卡加载,需在llm_api.py中修改create_model_worker_app函数中,修改gpus=None,num_gpus=1,max_gpu_memory="20GiB",三个参数,其中gpus控制使用的卡的ID,如果“0,1", num_gpus控制使用的卡数,max_gpu_memory控制每个卡使用的显存容量。 - #### 5.2 启动 API 服务 diff --git a/server/llm_api_launch.py b/server/llm_api_launch.py index 201bd2b..c7dd977 100644 --- a/server/llm_api_launch.py +++ b/server/llm_api_launch.py @@ -132,11 +132,11 @@ worker_args = [ "gptq-ckpt", "gptq-wbits", "gptq-groupsize", "gptq-act-order", "model-names", "limit-worker-concurrency", "stream-interval", "no-register", - "controller-address" + "controller-address","worker-address" ] # -----------------openai server--------------------------- -parser.add_argument("--server-host", type=str, default="127.0.0.1", help="host name") +parser.add_argument("--server-host", type=str, default="localhost", help="host name") parser.add_argument("--server-port", type=int, default=8888, help="port number") parser.add_argument( "--allow-credentials", action="store_true", help="allow credentials" @@ -215,6 +215,7 @@ def launch_worker(item): log_name = item.split("/")[-1].split("\\")[-1].replace("-", "_").replace("@", "_").replace(".", "_") # 先分割model-path-address,在传到string_args中分析参数 args.model_path, args.worker_host, args.worker_port = item.split("@") + args.worker_address = f"http://{args.worker_host}:{args.worker_port}" print("*" * 80) worker_str_args = string_args(args, worker_args) print(worker_str_args)