方案概览
本方案介绍了在ModelArts的Lite DevServer上使用昇腾计算资源开展常见开源大模型Llama、Qwen、ChatGLM、Yi、Baichuan等推理部署的详细过程。本方案利用适配昇腾平台的大模型推理服务框架vLLM和华为自研昇腾Snt9B硬件,为用户提供推理部署方案,帮助用户使能大模型业务。
约束限制
- 本方案目前仅适用于部分企业客户。
- 本文档适配昇腾云ModelArts 6.3.910版本,请参考软件配套版本获取配套版本的软件包,请严格遵照版本配套关系使用本文档。
- 资源规格推荐使用“西南-贵阳一”Region上的DevServer和昇腾Snt9B资源。
- 推理部署使用的服务框架是vLLM。vLLM支持v0.6.0版本。
- 支持FP16和BF16数据类型推理。
- 适配的CANN版本是cann_8.0.rc3。
- DevServer驱动版本要求23.0.6。
资源规格要求
本文档中的模型运行环境是ModelArts Lite的DevServer。推荐使用“西南-贵阳一”Region上的资源和Ascend Snt9B。
如果使用DevServer资源,请参考DevServer资源开通,购买DevServer资源,并确保机器已开通,密码已获取,能通过SSH登录,不同机器之间网络互通。
说明:
当容器需要提供服务给多个用户,或者多个用户共享使用该容器时,应限制容器访问Openstack的管理地址(169.254.169.254),以防止容器获取宿主机的元数据。具体操作请参见禁止容器获取宿主机元数据。
镜像版本
本教程中用到基础镜像地址和配套版本关系如下表所示,请提前了解。
镜像用途 | 镜像地址 | 配套版本 |
---|---|---|
基础镜像 | swr.cn-southwest-2.myhuaweicloud.com/atelier/pytorch_2_1_ascend:pytorch_2.1.0-cann_8.0.rc3-py_3.9-hce_2.0.2409-aarch64-snt9b-20241112192643-c45ac6b | cann_8.0.rc3 |
软件配套版本
本方案支持的软件配套版本和依赖包获取地址如表2所示。
软件名称 | 说明 | 下载地址 |
---|---|---|
AscendCloud-6.3.910-xxx.zip 说明:软件包名称中的xxx表示时间戳。 | 包含了本教程中使用到的推理部署代码和推理评测代码、推理依赖的算子包。代码包具体说明请参见模型软件包结构说明。 | 获取路径:Support-E,在此路径中查找下载ModelArts 6.3.910 版本。 说明:如果上述软件获取路径打开后未显示相应的软件信息,说明您没有下载权限,请联系您所在企业的华为方技术支持下载获取。 |
支持的模型列表和权重文件
本方案支持vLLM的v0.6.0版本。不同vLLM版本支持的模型列表有差异,具体如表3所示。
序号 | 模型名称 | 是否支持fp16/bf16推理 | 是否支持W4A16量化 | 是否支持W8A8量化 | 是否支持W8A16量化 | 是否支持 kv-cache-int8量化 | 开源权重获取地址 |
---|---|---|---|---|---|---|---|
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 | √ | x | x | x | x | |
13 | deepseek-coder-33b-instruct | √ | x | x | x | x | https://huggingface.co/deepseek-ai/deepseek-coder-33b-instruct |
14 | deepseek-llm-67b | √ | x | x | x | x | |
15 | qwen-7b | √ | √ | √ | √ | x | |
16 | qwen-14b | √ | √ | √ | √ | x | |
17 | qwen-72b | √ | √ | √ | √ | x | |
18 | qwen1.5-0.5b | √ | √ | √ | √ | x | |
19 | qwen1.5-7b | √ | √ | √ | √ | x | |
20 | qwen1.5-1.8b | √ | √ | √ | √ | x | |
21 | qwen1.5-14b | √ | √ | √ | √ | x | |
22 | qwen1.5-32b | √ | √ | √ | √ | x | |
23 | qwen1.5-72b | √ | √ | √ | √ | x | |
24 | qwen1.5-110b | √ | √ | √ | √ | x | |
25 | qwen2-0.5b | √ | √ | √ | √ | x | |
26 | qwen2-1.5b | √ | √ | √ | √ | x | |
27 | qwen2-7b | √ | √ | x | √ | x | |
28 | qwen2-72b | √ | √ | √ | √ | x | |
29 | qwen2.5-0.5b | √ | √ | √ | √ | x | |
30 | qwen2.5-1.5b | √ | √ | √ | √ | x | |
31 | qwen2.5-3b | √ | √ | √ | √ | x | |
32 | qwen2.5-7b | √ | √ | x | √ | x | |
33 | qwen2.5-14b | √ | √ | √ | √ | x | |
34 | qwen2.5-32b | √ | √ | √ | √ | x | |
35 | qwen2.5-72b | √ | √ | √ | √ | x | |
36 | baichuan2-7b | √ | x | x | √ | x | |
37 | baichuan2-13b | √ | x | x | √ | x | |
38 | gemma-2b | √ | x | x | x | x | |
39 | gemma-7b | √ | x | x | x | x | |
40 | chatglm2-6b | √ | x | x | x | x | |
41 | chatglm3-6b | √ | x | x | x | x | |
42 | glm-4-9b | √ | x | x | x | x | |
43 | mistral-7b | √ | x | x | x | x | |
44 | mixtral-8x7b | √ | x | x | x | x | |
45 | falcon-11b | √ | x | x | x | x | |
46 | qwen2-57b-a14b | √ | x | x | x | x | |
47 | llama3.1-8b | √ | √ | √ | √ | x | https://huggingface.co/meta-llama/Meta-Llama-3.1-8B-Instruct |
48 | llama3.1-70b | √ | √ | √ | √ | x | https://huggingface.co/meta-llama/Meta-Llama-3.1-70B-Instruct |
49 | llama-3.1-405B | √ | √ | x | x | x | https://huggingface.co/hugging-quants/Meta-Llama-3.1-405B-Instruct-AWQ-INT4 |
50 | llama-3.2-1B | √ | x | x | x | x | |
51 | llama-3.2-3B | √ | x | x | x | x | |
52 | llava-1.5-7b | √ | x | x | x | x | |
53 | llava-1.5-13b | √ | x | x | x | x | |
54 | llava-v1.6-7b | √ | x | x | x | x | https://huggingface.co/llava-hf/llava-v1.6-vicuna-7b-hf/tree/main |
55 | llava-v1.6-13b | √ | x | x | x | x | https://huggingface.co/llava-hf/llava-v1.6-vicuna-13b-hf/tree/main |
56 | llava-v1.6-34b | √ | x | x | x | x | |
57 | internvl2-8B | √ | x | x | x | x | |
58 | internvl2-26B | √ | x | x | x | x | |
59 | internvl2-40B | √ | x | x | x | x | |
60 | MiniCPM-v2.6 | √ | x | x | x | x | |
61 | deepseek-v2-236b | x | x | √ | x | x | |
62 | deepseek-v2-lite-16b | √ | x | √ | x | x | |
63 | qwen2-vl-7B | √ | x | x | x | x | Qwen/Qwen2-VL-7B-Instruct at main (huggingface.co) 注意:Qwen2-VL 开源vllm依赖特定transformers版本, 请手动安装: pip install git+https://github.com/huggingface/transformers.git@21fac7abba2a37fae86106f87fcf9974fd1e3830 |
64 | qwen-vl | √ | x | x | x | x | |
65 | qwen-vl-chat | √ | x | x | x | x | |
66 | MiniCPM-v2 | √ | x | x | x | x | https://huggingface.co/HwwwH/MiniCPM-V-2 注意:需要修改源文件site-packages/timm/layers/pos_embed.py,在第46行上面新增一行代码,如下: posemb = posemb.contiguous() #新增 posemb = F.interpolate(posemb, size=new_size, mode=interpolation, antialias=antialias) |
说明:
各模型支持的卡数请参见附录:基于vLLM不同模型推理支持最小卡数和最大序列说明章节。
支持的rope scaling类型
本方案支持的rope scaling类型包括linear、dynamic和yarn,其中linear方法只支持传入一个固定的scaling factor值,暂不支持传入列表。
模型软件包结构说明
本教程需要使用到的AscendCloud-6.3.910中的AscendCloud-LLM-xxx.zip软件包和算子包AscendCloud-OPP,AscendCloud-LLM关键文件介绍如下。
|——AscendCloud-LLM ├──llm_inference # 推理代码 ├──ascend_vllm ├── vllm_npu # 推理源码 ├── ascend_vllm-0.6.0-py3-none-any.whl # 推理安装包 ├── build.sh # 推理构建脚本 ├── vllm_install.patch # 社区昇腾适配的补丁包 ├── Dockerfile # 推理构建镜像dockerfile ├── build_image.sh # 推理构建镜像启动脚本 ├──llm_tools # 推理工具包 ├──AutoSmoothQuant # W8A8量化工具 ├── ascend_autosmoothquant_adapter # 昇腾量化使用的算子模块 ├── autosmoothquant_ascend # 量化代码 ├── build.sh # 安装量化模块的脚本 ├──AutoAWQ # W4A16量化工具 ├──convert_awq_to_npu.py # awq权重转换脚本 ├──quantize.py # 昇腾适配的量化转换脚本 ├──build.sh # 安装量化模块的脚本 ├──llm_evaluation # 推理评测代码包 ├──benchmark_tools #性能评测 ├── benchmark.py # 可以基于默认的参数跑完静态benchmark和动态benchmark ├── benchmark_parallel.py # 评测静态性能脚本 ├── benchmark_serving.py # 评测动态性能脚本 ├── benchmark_utils.py # 抽离的工具集 ├── generate_datasets.py # 生成自定义数据集的脚本 ├── requirements.txt # 第三方依赖 ├──benchmark_eval #精度评测 ├──opencompass.sh #运行opencompass脚本 ├──install.sh #安装opencompass脚本 ├──vllm_api.py #启动vllm api服务器 ├──vllm.py #构造vllm评测配置脚本名字标签:co,7b,适配,huggingface,Server,Qwen,Instruct,https,推理 From: https://blog.csdn.net/2403_89344729/article/details/144119779