Files
openmind/docs/zh/basic_tutorial/deploy.md
张烨槟 105abd9d8a !234 deploy-lmdeploy补充版本配套说明
Merge pull request !234 from 张烨槟/master
2025-06-11 06:06:41 +00:00

254 lines
8.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 模型部署
模型部署是指将大模型运行在专属的计算资源上,使模型在独立的运行环境中高效、可靠地运行,并为业务应用提供推理服务。
## 概述
openMind Library提供了模型部署的方法支持用户快速方便地在本地部署推理服务。当前支持的推理引擎包括
- MindIE
- LMDeploy
- vLLM
openMind Library提供命令行接口command-line interface, CLI支持用户在shell环境下交互式实现部署流程。
openMind Library命令行接口内置于openMind Library中安装openMind Library即可使用详细步骤参考[openMind Library安装指南](../install.md)。
## 使用方法和参数配置
```shell
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]
```
或者
```shell
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引擎参数](https://docs.vllm.com.cn/en/latest/serving/engine_args.html).
- 使用`stop`命令可以停止MindIE的部署服务。
## MindIE
### 部署MindIE服务示例
- 从魔乐社区上获取模型`MindIE/llama2_7b`在默认端口1025上进行部署。
```shell
openmind-cli deploy MindIE/llama2_7b
```
- 使用本地`llama2_7b`模型在指定端口1025上进行部署指定0,1号卡。
```shell
openmind-cli deploy /path/to/your/llama2_7b --backend mindie --port 1025 --world_size 2 --npu_device_ids '0,1'
```
- 停止MindIE服务
```shell
openmind-cli deploy stop
```
### 交互示例
部署成功(执行`npu-smi info`看到相关进程可以在同服务器上使用curl进行交互。
- 查看模型列表`v1/models`
```shell
curl http://127.0.0.1:{port}/v1/models
```
- 对话`v1/chat/completions`
```shell
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服务
```shell
openmind-cli deploy stop
```
## LMDeploy
### 环境准备
不同于openMind Library v1.0.0版本默认配套的PyTorch 2.1.0当前该接口的LMDeploy部署能力依赖于PyTorch 2.3.1版本即使用该功能需要修改环境中的PyTorch版本。对此我们强烈建议用户创建新环境进行模型部署新建环境可参考[openMind Library安装指南](../install.md)。
在安装LMDeploy之前请确保环境中存在`setuptools`和`wheel`。另外可执行以下命令检验torch_npu以及NPU环境是否可用以确保LMDeploy顺利安装。
```shell
python -c "import torch_npu;print(torch_npu.npu.is_available());"
'''
True
'''
```
LMDeploy安装命令如下
```shell
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上进行部署。
```shell
openmind-cli deploy AI-Research/Qwen2-7B --backend lmdeploy
```
- 使用本地`Qwen2-7B`模型在指定端口1025上进行部署。
```shell
openmind-cli deploy /path/to/your/Qwen2-7B --backend lmdeploy --port 1025
```
### 交互示例
部署成功后可以在同服务器上使用curl进行交互。
- 查看模型列表`v1/models`
```shell
curl http://127.0.0.1:1025/v1/models
```
- 对话`v1/chat/completions`
```shell
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安装配置无误后可以执行以下命令安装
```shell
# 安装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环境准备教程](https://github.com/vllm-project/vllm-ascend/blob/v0.7.3rc2/docs/source/installation.md)。
### 部署vLLM服务示例
- 从魔乐社区上获取模型`AI-Research/Qwen2.5-7B`在默认端口1025上进行部署。
```shell
openmind-cli deploy --model_name_or_path AI-Research/Qwen2.5-7B --backend vllm
```
- 使用本地`Qwen2.5-7B`模型在指定端口1025上进行多卡部署指定0,1,2,3号卡指定模型权重和激活的数据类型为bf16。
```shell
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`
```shell
curl http://127.0.0.1:1025/v1/models | python3 -m json.tool
```
- 文本补全`v1/completions`
```shell
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`
```shell
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接口](../api_reference/apis/cli_api.md#openmind-cli-deploy接口)。