解决多卡启动问题

This commit is contained in:
hzg0601 2023-08-14 16:43:01 +08:00
parent 986cb9179c
commit 90c92f8c93
2 changed files with 30 additions and 5 deletions

View File

@ -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 服务

View File

@ -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)