From 6f078f4637df6cf27ce985b453fbf6e68ac7d68b Mon Sep 17 00:00:00 2001 From: sunyu-xuan Date: Fri, 20 Sep 2024 17:04:58 +0800 Subject: [PATCH] add mindie doc --- .../source_zh_cn/usage/mindie_deployment.md | 189 +++++++++++++++++- 1 file changed, 188 insertions(+), 1 deletion(-) diff --git a/docs/mindformers/docs/source_zh_cn/usage/mindie_deployment.md b/docs/mindformers/docs/source_zh_cn/usage/mindie_deployment.md index 6c2be98dcc..9801be9142 100644 --- a/docs/mindformers/docs/source_zh_cn/usage/mindie_deployment.md +++ b/docs/mindformers/docs/source_zh_cn/usage/mindie_deployment.md @@ -1,3 +1,190 @@ # MindIE服务化部署 -[![查看源文件](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/master/resource/_static/logo_source.svg)](https://gitee.com/mindspore/docs/blob/master/docs/mindformers/docs/source_zh_cn/usage/mindie_deployment.md) \ No newline at end of file +[![查看源文件](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/master/resource/_static/logo_source.svg)](https://gitee.com/mindspore/docs/blob/master/docs/mindformers/docs/source_zh_cn/usage/mindie_deployment.md) + +## MindIE介绍 + +MindIE,全称Mind Inference Engine,是华为昇腾针对AI全场景业务的推理加速套件。详情参考[官方介绍文档](https://www.hiascend.com/software/mindie)。 + +MindFormers承载在模型应用层MindIE-LLM中,通过MindIE-Service可以部署MindFormers中的LLMs。 + +## 环境搭建 + +### 版本配套 + +| 软件依赖 | 版本 | +| ----------- | ---------------------------- | +| OS | openEuler 22.03/Ubuntu 22.04 | +| Python | 3.10 | +| glibc | >= 2.34 | +| gcc、g++ | >= 11.4.0 | +| HDK | 8.0.RC2 | +| CANN | 8.0.RC2 | +| MindSpore | 2.3.0 | +| MindFormers | 1.2.0 | +| MindIE | 1.0.RC2 | + +### 软件安装 + +1. **安装MindSpore** + + 参考[MindSpore官方安装指南](https://www.mindspore.cn/install)进行安装。 + + ```bash + pip install mindspore-2.3.0-cp310-cp310-linux_aarch64.whl + ``` + +2. **安装MindIE** + + 参考[MindIE官方安装指南](https://www.hiascend.com/document/detail/zh/mindie/10RC2/envdeployment/instg/mindie_instg_0008.html)进行安装,安装MindIE前需完成"MindIE安装指南 > 安装开发环境"章节中MindIE所需依赖和配套包的安装。 + + ```bash + bash Ascend-mindie_1.0.RC2_linux-aarch64.run --install --install-path=/path/to/mindie/ + ``` + + 安装完成后,若显示如下信息,则说明软件安装成功: + + ```bash + xxx install success + ``` + + **xxx**表示安装的实际软件包名。 + +3. **安装MindFormers** + + 可使用源码编译安装。 + + ```bash + git clone https://gitee.com/mindspore/mindformers.git + cd mindformers + bash build.sh + ``` + +### 环境变量 + +```bash +# Ascend +source /usr/local/Ascend/ascend-toolkit/set_env.sh +# MindIE +source /usr/local/Ascend/mindie/latest/mindie-llm/set_env.sh +source /usr/local/Ascend/mindie/latest/mindie-service/set_env.sh +# MindSpore +export RUN_MODE=predict +export MS_ENABLE_TRACE_MEMORY=1 # 优化内存申请和释放 +export MS_ENABLE_LCCL=1 +export LCAL_IF_PORT=8129 +# 组网配置 +export MS_SCHED_HOST=127.0.0.1 +export MS_SCHED_PORT=8090 # 可按实际需要更改,端口不冲突即可 +``` + +## 推理服务部署 + +### 修改MindIE-Service相关配置 + +参考[MindIE配置指南](https://www.hiascend.com/document/detail/zh/mindie/10RC2/envdeployment/instg/mindie_instg_0025.html)进行修改,config.json的配置参数详情请查阅 [MindIE Service开发指南-快速开始-配置参数说明](https://www.hiascend.com/document/detail/zh/mindie/10RC2/mindieservice/servicedev/mindie_service0004.html) + +```bash +cd {MindIE安装目录}/ +cd mindie-service/conf +vim config.json +``` + +需要关注以下字段的配置 + +1. `ModelDeployParam.ModelParam.backendType` + + 该配置为对应的后端类型,必填"ms" + + ```json + "backendType": "ms" + ``` + +2. `ModelDeployParam.ModelParam.modelWeightPath` + + + 该配置为模型配置文件目录,放置模型和tokenizer等相关文件。 + + 以Qwen1.5-72B为例,`modelWeightPath`的组织结构如下: + + ```reStructuredText + mf_model + └── qwen1_5_72b + ├── config.json # 模型json配置文件 + ├── vocab.json # 模型vocab文件,hf上对应模型下载 + ├── merges.txt # 模型merges文件,hf上对应模型下载 + ├── predict_qwen1_5_72b.yaml # 模型yaml配置文件 + ├── qwen1_5_tokenizer.py # 模型tokenizer文件,从mindformers仓中research目录下找到对应模型复制 + └── qwen1_5_72b_ckpt_dir # 模型分布式权重文件夹 + ``` + + predict_qwen1_5_72b.yaml需要关注以下配置: + + ```yaml + load_checkpoint: '/mf_model/qwen1_5_72b/qwen1_5_72b_ckpt_dir' # 为存放模型分布式权重文件夹路径 + use_parallel: True + auto_trans_ckpt: False # 是否开启自动权重转换,离线切分设置为False + parallel_config: + data_parallel: 1 + model_parallel: 4 # 多卡推理配置模型切分,一般与使用卡数一致 + pipeline_parallel: 1 + processor: + vocab_file: "/mf_model/qwen1_5_72b/vocab.json" #vocab文件路径 + merges_file: "/mf_model/qwen1_5_72b/merges.txt" #merges文件路径 + ``` + + 模型的config.json文件可以使用`save_pretrained`接口生成,示例如下: + + ```python + from mindformers import AutoConfig + + model_config = AutoConfig.from_pretrained("/path/to/predict_qwen1_5_72b.yaml") + model_config.save_pretrained(save_directory="./json/qwen1_5_72b/", save_json=True) + ``` + + 模型权重下载和转换可参考 [权重格式转换指南](https://www.mindspore.cn/mindformers/docs/zh-CN/dev/function/weight_conversion.html) + + 准备好模型配置目录后,设置参数`modelWeightPath`为该目录路径 + + ```json + "modelWeightPath": "/mf_model/qwen1_5_72b" + ``` + +### 启动服务 + +```bash +cd /path/to/mindie/latest/mindie-service +nohup ./bin/mindieservice_daemon > output.log 2>&1 & +tail -f output.log +``` + +当log日志中出现`Daemon start success!`,表示服务启动成功 + +### 发送请求 + +服务启动成功后,可使用curl命令发送请求验证,样例如下: + +```bash +curl -w "\ntime_total=%{time_total}\n" -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"inputs": "I love Beijing, because","stream": false}' http://127.0.0.1:1025/generate +``` +返回推理结果验证成功: + +```json +{"generated_text":" it is a city with a long history and rich culture....."} +``` + + +## 日志定位 + +mindie-service相关日志 + +```bash +tail -f path/to/mindie/mindie-service/latest/mindie-service/output.log +``` + +python相关日志 + +``` +tail -f path/to/mindie/mindie-service/latest/mindie-llm/logs/pythonlog.log +``` + -- Gitee