MindIE Turbo: An LLM inference acceleration framework featuring extensive plugin collections optimized for Ascend devices.
Project description
MindIE-Turbo
介绍
MindIE Turbo是华为为昇腾芯片开发的大语言模型推理引擎加速插件库,包含自研的大语言模型优化算法及推理引擎相关优化。MindIE Turbo提供一系列模块化和插件化接口,支持外部推理引擎的接入和加速。
目前,MindIE Turbo已支持vLLM的适配。通过与vLLM和vLLM-ascend的对接,能够提供更强的性能和更多的推理优化量化算法。在实际使用中,用户只需在对应的Python环境中安装MindIE Turbo,系统会自动检测vLLM并启用优化,无需修改代码即可完成性能提升。
支持框架:
vLLM:vLLM是伯克利大学LMSYS组织开源的大语言模型高速推理框架,旨在极大地提升实时场景下的语言模型服务的吞吐率与内存使用率,提供易用、快速、便宜的LLM服务。目前MindIE Turbo已经支持通过vLLM-Ascend一键叠加到vLLM框架并进行推理加速使能。
架构说明
MindIE-Turbo主要包含以下模块(部分为预留模块):
- adaptor: 适配不同推理框架的优化实现
- vllm: VLLM框架适配
- distributed: 分布式能力支持
- scheduler: 加速调度策略支持
- functional: 通用功能函数
- interface: 通用接口定义
- layers: 网络层实现
- moe: MoE相关实现
- quantize: 量化相关实现
- spec_decode: Speculative Decoding实现
- utils: 通用工具
环境准备
硬件环境及操作系统准备
- 目前MindIE Turbo支持的硬件环境:Atlas 800I A2 推理产品(32GB/64GB)
- 支持的操作系统请参见《MindIE安装指南》中“环境准备 > 支持的操作系统”章节
开发环境准备
在安装MindIE Turbo之前请检查以下组件的配套关系和安装情况:
| 组件 | 配套版本 | 获取链接 |
|---|---|---|
| 驱动与固件(HDK) | >=24.0 | 获取链接 |
| CANN | >=8.0.0 | 获取链接 |
| PyTorch | 2.5.1 | 获取链接 |
| Python | 3.10.x、3.11.x | - |
1、安装配套版本的驱动与固件(HDK)、CANN软件(Toolkit、Kernels 和 NNAL)请参考《CANN 软件安装指南》,在“选择安装场景”页面,按下列指引选择:
- 安装方式: 在物理机上安装
- 操作系统: 根据实际情况选择
- 业务场景: 选择训练 & 推理 & 开发调试
2、安装PyTorch,请参考组件安装Pytorch框架与安装torch_npu插件安装
使用说明
1. 安装指南
-
联系相关人员获取 MindIE Turbo 软件包。
-
将 MindIE Turbo 软件包上传到安装环境的任意路径(例如:
/home/package)。 -
进入软件包所在路径:
cd /home/package
-
执行以下命令安装 MindIE Turbo:
python setup.py install
-
返回上级目录,执行以下命令验证是否安装成功:
cd ../ pip show mindie_turbo
如果出现如下示例结果,表示安装成功:
Version: 1.0rc1 Summary: MindIE Turbo: An LLM inference acceleration framework featuring extensive plugin collections optimized for Ascend devices. Home-page: Author: ascend Author-email: License: Apache 2.0 Location: /usr/local/lib/python3.11/site-packages Requires: filelock, fsspec, jinja2, markupsafe, mpmath, networkx, sympy, torch, typing-extensions Required-by:
2. 快速使用
MindIE Turbo不会修改任何使用行为,与原有框架保持一致,使得用户可以很轻松的应用并迁移项目。以vLLM框架为例:
-
安装vLLM与vLLM-Ascend。
请参考vLLM-Ascend安装文档进行安装。
-
根据需要,进行离线批量推理或在线服务推理。
- 离线批量推理
请参考vLLM离线推理示例文档进行推理。以下为最简单的示例(来自vllm/examples/offline_inference/basic/basic.py,请根据需要修改:
from vllm import LLM, SamplingParams # Sample prompts. prompts = [ "Hello, my name is", "The president of the United States is", "The capital of France is", "The future of AI is", ] # Create a sampling params object. sampling_params = SamplingParams(temperature=0.8, top_p=0.95) # Create an LLM. llm = LLM(model="facebook/opt-125m") # Generate texts from the prompts. The output is a list of RequestOutput objects # that contain the prompt, generated text, and other information. outputs = llm.generate(prompts, sampling_params) # Print the outputs. for output in outputs: prompt = output.prompt generated_text = output.outputs[0].text print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")
- 启动在线推理服务
请根据vLLM在线服务示例文档启动服务。以下以Qwen2.5-1.5B-Instruct简单示例,请根据需要修改:
vllm serve Qwen/Qwen2.5-1.5B-Instruct
3. MindIE Turbo环境变量说明
| 环境变量名 | 默认值 | 功能说明 | 配置说明 |
|---|---|---|---|
| VLLM_OPTIMIZATION_LEVEL | 2 | 控制MindIE Turbo在vLLM中的优化级别 | 0:不启用MindIE Turbo优化。 1:启用通用优化手段,风险最低。 2:启用性能更优的算子,可能会造成精度变化。 3:启用高度融合的算子优化。 |
| USING_SAMPLING_TENSOR_CACHE | 0 | 是否启用张量缓存,该优化项仅用于V0 vLLM, chunkprefill和beamsearch场景下不支持 | 0:不启用。 1:启用。 |
| USING_LCCL_COM | 1 | 是否启用LCCL通信,LCCL通信暂未支持多机通信 | 0:不启用。 1:启用。 |
支持特性
W8A8量化插件
目前在MindIE Turbo中已经支持了MindStudio自研的W8A8与W8A8QuantAttention算法。通过MindStudio量化的模型可以直接通过MindIE Turbo在vLLM上一键使能。
vLLM及vLLM-Ascend已实现负责量化配置解析的QuantConfig、负责对量化方法进行识别和选择的Quantizer,MindIE-Turbo将在上述基础上实现QuantMethod,即AscendW8A8LinearMethod,基于MindIE全栈提供量化实现。
具体而言,AscendW8A8LinearMethod提供一下四个接口:
get_weight接口
-
接口功能:
返回W8A8量化所需要的weight参数名与tensor。
-
参数说明:
参数名称 是否必选 类型 默认值 描述 安全声明 input_size 是 int - W8A8 linear的输入维度大小。 推理强依赖数据的合法性,需由用户保证。 output_size 是 int - W8A8 linear的输出维度大小。 推理强依赖数据的合法性,需由用户保证。 -
返回值说明
类型 描述 安全声明 Dict[str, torch.Tensor] 代表W8A8所需的weight参数名与符合形状要求的tensor。 推理强依赖数据的合法性,需由用户保证。
get_pertensor_param接口
-
接口功能:
返回W8A8量化所需要的per_tensor参数名与tensor。
-
参数说明:
参数名称 是否必选 类型 默认值 描述 安全声明 params_dtype 是 torch.dtype - W8A8 linear的输入参数类型。 推理强依赖数据的合法性,需由用户保证。 -
返回值说明:
返回值名称 类型 描述 安全声明 Dict[str, torch.Tensor] dict[str, torch.Tensor] 代表W8A8所需的pertensor参数名与符合形状要求的tensor。 推理强依赖数据的合法性,需由用户保证。
get_perchannel_param接口
-
接口功能:
返回W8A8量化所需要的per_channel参数名与tensor。
-
参数说明:
参数名称 是否必选 类型 默认值 描述 安全声明 output_size 是 int - W8A8 linear的输出维度大小。 推理强依赖数据的合法性,需由用户保证。 params_dtype 是 torch.dtype - W8A8 linear的输出参数类型。 推理强依赖数据的合法性,需由用户保证。 -
返回值说明:
返回值名称 类型 描述 安全声明 Dict[str, torch.Tensor] dict[str, torch.Tensor] 代表W8A8所需的perchannel参数名与符合形状要求的tensor。 推理强依赖数据的合法性,需由用户保证。
apply接口
-
接口功能:
实现W8A8 linear所需的前向计算。
-
参数说明:
参数名称 是否必选 类型 默认值 描述 安全声明 layer 是 torch.nn.Module - 被量化后的一个linear对象,并且必须注册了由get_weiget、get_perchannel_param、get_pertensor_param所给出的参数。 推理强依赖数据的合法性,需由用户保证。 x 是 torch.Tensor - 量化linear前向计算的输入。 推理强依赖数据的合法性,需由用户保证。 -
返回值说明:
类型 描述 安全声明 torch.Tensor 量化linear的前向计算结果 推理强依赖数据的合法性,需由用户保证。
参与贡献
- Fork 本仓库
- 新建分支
- 验证修改
- 提交代码
- 新建 Pull Request
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mindie_turbo-2.0rc1-cp311-cp311-manylinux_2_39_aarch64.whl.
File metadata
- Download URL: mindie_turbo-2.0rc1-cp311-cp311-manylinux_2_39_aarch64.whl
- Upload date:
- Size: 389.1 kB
- Tags: CPython 3.11, manylinux: glibc 2.39+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ddaf9488238113d197e14891965f2e75c61dbdff38b7554d41dbe0297f7b6c99
|
|
| MD5 |
74173c4e2cad263344b583a7306f6daf
|
|
| BLAKE2b-256 |
564a8fff313a3bab81e57955a04f6048a8335b615031b2cccc0bf38ba6f54bf1
|
File details
Details for the file mindie_turbo-2.0rc1-cp311-cp311-manylinux2014_aarch64.whl.
File metadata
- Download URL: mindie_turbo-2.0rc1-cp311-cp311-manylinux2014_aarch64.whl
- Upload date:
- Size: 389.1 kB
- Tags: CPython 3.11
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f8b9b1939c7e53cb7a5f646e8c1581b590391a8c6c56ff0bd6498ed1674ffe75
|
|
| MD5 |
64cbb89da5818dff5950c43de191eb92
|
|
| BLAKE2b-256 |
4f61dbc5b720b46d54f87c08cf5714e8efae8d18826880cc3c234e2536ce0802
|
File details
Details for the file mindie_turbo-2.0rc1-cp311-cp311-manylinux1_x86_64.whl.
File metadata
- Download URL: mindie_turbo-2.0rc1-cp311-cp311-manylinux1_x86_64.whl
- Upload date:
- Size: 410.6 kB
- Tags: CPython 3.11
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
67d60ae31412219ea008428ae8071e687a932b466a31f3de305403d3261607b4
|
|
| MD5 |
21393fe93eca3bff8a9fa7dc05543f95
|
|
| BLAKE2b-256 |
9120a62d7c9cc6df099ca2aaf48762f841d88477d596823546069854fbd45d21
|
File details
Details for the file mindie_turbo-2.0rc1-cp310-cp310-manylinux_2_39_aarch64.whl.
File metadata
- Download URL: mindie_turbo-2.0rc1-cp310-cp310-manylinux_2_39_aarch64.whl
- Upload date:
- Size: 386.9 kB
- Tags: CPython 3.10, manylinux: glibc 2.39+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
26f21839aa292855a65d1bce3bdc5e4c66ad62777a2095e063cdd6b4e20c3b30
|
|
| MD5 |
bbb1066c1b379229a078f534705b1965
|
|
| BLAKE2b-256 |
30fe4503778c4862877038ecc7ae4b6c594ce6a2b523a5f633d89e00f10c49d8
|
File details
Details for the file mindie_turbo-2.0rc1-cp310-cp310-manylinux2014_aarch64.whl.
File metadata
- Download URL: mindie_turbo-2.0rc1-cp310-cp310-manylinux2014_aarch64.whl
- Upload date:
- Size: 386.9 kB
- Tags: CPython 3.10
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
07452d82857c72ba61577809a15b4424128aeb68f8972f67b9b5dfd179c4b7c4
|
|
| MD5 |
9cae8a28eaefb4fef59ade028b7a0941
|
|
| BLAKE2b-256 |
ddc57cb3f9eaff70d275718dfa8f52ee3ce4c2889b63559121177d02c9b00c08
|
File details
Details for the file mindie_turbo-2.0rc1-cp310-cp310-manylinux1_x86_64.whl.
File metadata
- Download URL: mindie_turbo-2.0rc1-cp310-cp310-manylinux1_x86_64.whl
- Upload date:
- Size: 408.2 kB
- Tags: CPython 3.10
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
354f29e5537a9e0d2b5e27ad99449e6497068ff0a10b450da409dae51a134684
|
|
| MD5 |
aa64265b8ce000ee18e48f437dff44c2
|
|
| BLAKE2b-256 |
9b352eebe878efa526d77f987f63bffc8ced1b700e83369ecab7fa95fdec6d09
|