推理场景介绍
方案概览
本方案介绍了在ModelArts的Lite DevServer上使用昇腾计算资源开展常见开源大模型Llama/Llama2、Qwen、ChatGLM、Yi、Baichuan等推理部署的详细过程。本方案利用适配昇腾平台的大模型推理服务vLLM和华为自研昇腾Snt9B硬件,为用户提供推理部署方案,帮助用户使能大模型业务。
约束限制
- 本方案目前仅适用于企业客户。
- 本文档适配昇腾云ModelArts 6.3.904版本,请参考软件配套版本获取配套版本的软件包,请严格遵照版本配套关系使用本文档。
- 资源规格推荐使用“西南-贵阳一”Region上的DevServer和昇腾Snt9B资源。
- 推理部署使用的服务框架是vLLM(官网地址:https://github.com/vllm-project/vllm/tree/v0.3.2,版本:v0.3.2)。本教程是基于vLLM的昇腾适配的推理方案部署指导,支持FP16和BF16数据类型推理。
- 推理镜像环境配套的CANN版本是cann_8.0.rc1,PyTorch版本是2.1.0。
资源规格要求
本文档中的模型运行环境是ModelArts Lite的DevServer。推荐使用“西南-贵阳一”Region上的资源和Ascend Snt9B。
如果使用DevServer资源,请参考DevServer资源开通,购买DevServer资源,并确保机器已开通,密码已获取,能通过SSH登录,不同机器之间网络互通。
当容器需要提供服务给多个用户,或者多个用户共享使用该容器时,应限制容器访问Openstack的管理地址(169.254.169.254),以防止容器获取宿主机的元数据。具体操作请参见禁止容器获取宿主机元数据。
软件配套版本
本方案支持的软件配套版本和依赖包获取地址如表1所示。
软件名称 |
说明 |
下载地址 |
---|---|---|
AscendCloud-3rdLLM-6.3.904-xxx.zip
说明:
软件包名称中的xxx表示时间戳。 |
包含了本教程中使用到的模型推理部署代码和推理评测代码。代码包具体说明请参见模型软件包结构说明。 |
获取路径:Support-E网站。
说明:
如果没有下载权限,请联系您所在企业的华为方技术支持下载获取。 |
AscendCloud-OPP-6.3.904-xxx.zip |
推理依赖的算子包 |
镜像版本
本教程中用到基础镜像地址和配套版本关系如下表所示,请提前了解。
配套软件版本 |
镜像用途 |
镜像地址 |
Cann版本 |
---|---|---|---|
6.3.904版本 |
基础镜像 |
swr.cn-southwest-2.myhuaweicloud.com/atelier/pytorch_2_1_ascend:pytorch_2.1.0-cann_8.0.rc1-py_3.9-hce_2.0.2312-aarch64-snt9b-20240516142953-ca51f42 |
cann_8.0.rc1 |
不同软件版本对应的基础镜像地址不同,请严格按照软件版本和镜像配套关系获取基础镜像。
支持的模型软件包和权重文件
本方案支持的模型列表、对应的开源权重获取地址如表3所示,模型对应的软件和依赖包获取地址如表1所示。
序号 |
模型名称 |
开源权重获取地址 |
---|---|---|
1 |
llama-7b |
|
2 |
llama-13b |
|
3 |
llama-65b |
|
4 |
llama2-7b |
|
5 |
llama2-13b |
|
6 |
llama2-70b |
|
7 |
llama3-8b |
|
8 |
llama3-70b |
|
9 |
yi-6b |
|
10 |
yi-9b |
|
11 |
yi-34b |
|
12 |
deepseek-llm-7b |
|
13 |
deepseek-coder-instruct-33b |
https://huggingface.co/deepseek-ai/deepseek-coder-33b-instruct |
14 |
deepseek-llm-67b |
|
15 |
qwen-7b |
|
16 |
qwen-14b |
|
17 |
qwen-72b |
|
18 |
qwen1.5-0.5b |
|
19 |
qwen1.5-7b |
|
20 |
qwen1.5-1.8b |
|
21 |
qwen1.5-14b |
|
22 |
qwen1.5-32b |
|
23 |
qwen1.5-72b |
|
24 |
qwen1.5-110b |
|
25 |
baichuan2-7b |
|
26 |
baichuan2-13b |
|
27 |
chatglm2-6b |
|
28 |
chatglm3-6b |
|
29 |
gemma-2b |
|
30 |
gemma-7b |
|
31 |
mistral-7b |
模型软件包结构说明
本教程需要使用到的推理模型软件包和推理评测代码存放在如下目录中,关键文件介绍如下:
xxx-Ascend #xxx表示版本号 ├──llm_evaluation #推理评测代码包 ├──benchmark_eval # 精度评测 ├── config ├── config.json # 请求的参数,根据实际启动的服务来调整 ├── mmlu_subject_mapping.json # 数据集配置 ├── evaluators ├── evaluator.py # 数据集数据预处理方法集 ├── model.py # 发送请求的模块,在这里修改请求响应。目前支持vllm.openai,atb的tgi模板 ├── eval_test.py # 启动脚本,建立线程池发送请求,并汇总结果 ├── service_predict.py # 发送请求的服务。支持vllm的openai,atb的tgi模板 ├── ... ├──benchmark_tools #性能评测 ├── benchmark.py # 可以基于默认的参数跑完静态benchmark和动态benchmark ├── benchmark_parallel.py # 评测静态性能脚本 ├── benchmark_serving.py # 评测动态性能脚本 ├── benchmark_utils.py # 抽离的工具集 ├── generate_datasets.py # 生成自定义数据集的脚本 ├── requirements.txt # 第三方依赖 ├── ... ├──llm_inference #推理代码 ├── ascend_vllm_adapter #昇腾vLLM使用的算子模块 ├── ascend.txt #基于开源vLLM适配过NPU的patch脚本 ├── build.sh #推理构建脚本 ├── requirements.txt # 第三方依赖