8.5 KiB
模型部署
模型部署是指将大模型运行在专属的计算资源上,使模型在独立的运行环境中高效、可靠地运行,并为业务应用提供推理服务。
概述
openMind Library提供了模型部署的方法,支持用户快速方便地在本地部署推理服务。当前支持的推理引擎包括:
- MindIE
- LMDeploy
- vLLM
openMind Library提供命令行接口(command-line interface, CLI),支持用户在shell环境下交互式实现部署流程。
openMind Library命令行接口内置于openMind Library中,安装openMind Library即可使用,详细步骤参考openMind Library安装指南。
使用方法和参数配置
openmind-cli deploy model_name_or_path [--backend {mindie, lmdeploy, vllm}] [--port server_port] [--world_size world_size] [--device device] [--trust_remote_code {True, False}] [--backend_config vllm_args]
或者
openmind-cli deploy stop
- --model_id(
str
,可选,默认为None
): openMind Library内置模型ID,支持backend为lmdeploy
或者vllm
。 - model_name_or_path(
str
,必选,默认为None
):部署模型路径,支持魔乐社区模型ID或模型权重本地路径。当backend为mindie时,本地的模型来源必须为下载清单中的模型的本地路径。 - --backend (
str
,可选,默认为mindie
):推理引擎,可以选择mindie
、lmdeploy
或者vllm
。 - --port(
int
,可选,默认为1025
):部署端口。 - --world_size(
int
,可选,默认为1
):部署使用的npu卡的world_size,在backend为mindie
时生效。world_size需要与npu_device_ids中指定的卡数目一致。 - --device(
str
,可选,默认为0
):部署使用的npu卡号,在backend为mindie
时生效。world_size需要与device中指定的卡数目一致。如果是需要部署多卡,传入格式如"0,1,2,3"。 - --trust_remote_code(
bool
,可选,默认为False
):是否信任从远程下载的模型权重文件。 - --backend_config(
str
,可选,默认为None
):在backend为vllm
时生效,支持传入复数后端自定义参数(不同参数之间使用,
隔开),格式参考"tensor-parallel-size=4,dtype=bfloat16"
,支持输入json格式参数(注意使用单引号防止读取错误),格式参考'rope-scaling={"rope_type":"dynamic","factor":2.0}'
,如:- tensor-parallel-size(
int
,可选,默认为1
):张量并行数,注意确保有足够的可用卡数,建议与ASCEND_RT_VISIBLE_DEVICES
环境变量配套使用在指定卡上多卡部署。 - dtype(
str
,可选,默认为auto
):模型权重和激活的数据类型,可选auto
,half
,float16
,bfloat16
,float
,float32
。 - 更多支持参数见vllm引擎参数.
- tensor-parallel-size(
- 使用
stop
命令可以停止MindIE的部署服务。
MindIE
部署MindIE服务示例
-
从魔乐社区上获取模型
MindIE/llama2_7b
在默认端口1025上进行部署。openmind-cli deploy MindIE/llama2_7b
-
使用本地
llama2_7b
模型在指定端口1025上进行部署,指定0,1号卡。openmind-cli deploy /path/to/your/llama2_7b --backend mindie --port 1025 --world_size 2 --npu_device_ids '0,1'
-
停止MindIE服务
openmind-cli deploy stop
交互示例
部署成功(执行npu-smi info
看到相关进程)后,可以在同服务器上使用curl进行交互。
-
查看模型列表
v1/models
curl http://127.0.0.1:{port}/v1/models
-
对话
v1/chat/completions
curl "http://127.0.0.1:{port}/v1/chat/completions" \ -H "Content-Type: application/json" \ -d '{ "model": "llama2_7b", "messages": [ { "role": "user", "content": "如何养生?" } ], "max_tokens": 128 }'
-
停止MindIE服务
openmind-cli deploy stop
LMDeploy
环境准备
不同于openMind Library v1.0.0版本默认配套的PyTorch 2.1.0,当前该接口的LMDeploy部署能力依赖于PyTorch 2.3.1版本,即使用该功能需要修改环境中的PyTorch版本。对此,我们强烈建议用户创建新环境进行模型部署,新建环境可参考openMind Library安装指南。
在安装LMDeploy之前,请确保环境中存在setuptools
和wheel
。另外,可执行以下命令检验torch_npu以及NPU环境是否可用,以确保LMDeploy顺利安装。
python -c "import torch_npu;print(torch_npu.npu.is_available());"
'''
True
'''
LMDeploy安装命令如下:
git clone -b v0.6.4 https://github.com/InternLM/lmdeploy.git
cd lmdeploy
pip install -e .
pip install dlinfer-ascend==0.1.7
主要版本配套说明如下:
软件 | 支持版本 |
---|---|
torch | 2.3.1 |
torch-npu | 2.3.1 |
lmdeploy | 0.6.4 |
dlinfer-ascend | 0.1.7 |
transformers | 4.47.1 |
accelerate | 1.0.0rc1 |
部署LMDeploy服务示例
-
从魔乐社区上获取模型
AI-Research/Qwen2-7B
在默认端口1025上进行部署。openmind-cli deploy AI-Research/Qwen2-7B --backend lmdeploy
-
使用本地
Qwen2-7B
模型在指定端口1025上进行部署。openmind-cli deploy /path/to/your/Qwen2-7B --backend lmdeploy --port 1025
交互示例
部署成功后,可以在同服务器上使用curl进行交互。
-
查看模型列表
v1/models
curl http://127.0.0.1:1025/v1/models
-
对话
v1/chat/completions
curl http://127.0.0.1:1025/v1/chat/completions \ -H 'Content-Type: application/json' \ -d '{ "model": "AI-Research/Qwen2-7B", "messages": "推荐一个海边度假的地方" }'
vLLM
环境准备
基于openMind Library基础环境,vLLM还需要满足以下软件配置要求:
- Python >= 3.9
- CANN == 8.1.RC1
- PyTorch == 2.6.0
- torch-npu == 2.6.0rc1
- vllm == 0.7.3
- vllm-ascend == 0.7.3rc2
确保固件驱动和CANN安装配置无误后,可以执行以下命令安装:
# 安装vllm和torch
pip install vllm==0.7.3
pip install torch==2.6.0
# 安装配套的torchvision, torchaudio和torch-npu
pip install torchvision==0.21.0
pip install torchaudio==2.6.0
pip install torch-npu==2.6.0rc1
#安装vllm-ascend
pip install vllm-ascend==0.7.3rc2
更加详细的安装教程可参考vllm-ascend环境准备教程。
部署vLLM服务示例
-
从魔乐社区上获取模型
AI-Research/Qwen2.5-7B
在默认端口1025上进行部署。openmind-cli deploy --model_name_or_path AI-Research/Qwen2.5-7B --backend vllm
-
使用本地
Qwen2.5-7B
模型在指定端口1025上进行多卡部署,指定0,1,2,3号卡,指定模型权重和激活的数据类型为bf16。ASCEND_RT_VISIBLE_DEVICES=0,1,2,3 openmind-cli deploy \ --model_name_or_path /path/to/your/Qwen2.5-7B \ --backend vllm \ --port 1025 \ --backend_config "tensor-parallel-size=4,dtype=bfloat16"
交互示例
部署成功后,可以在同服务器上使用curl进行交互。
-
查看模型列表
v1/models
curl http://127.0.0.1:1025/v1/models | python3 -m json.tool
-
文本补全
v1/completions
curl http://127.0.0.1:1025/v1/completions \ -H "Content-Type: application/json" \ -d '{ "model": "AI-Research/Qwen2.5-7B", "prompt": "Beijing is a", "max_tokens": 5, "temperature": 0 }' | python3 -m json.tool
-
对话
v1/chat/completions
curl http://127.0.0.1:1025/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "AI-Research/Qwen2.5-7B", "messages": [{"role": "user", "content": "Recommend a place for a seaside holiday."}], "max_tokens": 64, "temperature": 0 }' | python3 -m json.tool
openmind-cli deploy
的全量参数可以参考openmind-cli deploy接口。