This release is a pre-release and may not be stable for production use.
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
Metadata
Release files for mindie-turbo 2.0rc1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| mindie_turbo-2.0rc1-cp311-cp311-manylinux_2_39_aarch64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.39+ ARM64 | Details |
| mindie_turbo-2.0rc1-cp311-cp311-manylinux2014_aarch64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.17+ ARM64 | Details |
| mindie_turbo-2.0rc1-cp311-cp311-manylinux1_x86_64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.5+ x86-64 | Details |
| mindie_turbo-2.0rc1-cp310-cp310-manylinux_2_39_aarch64.whl | CPython 3.10 | CPython 3.10 | Linux glibc 2.39+ ARM64 | Details |
| mindie_turbo-2.0rc1-cp310-cp310-manylinux2014_aarch64.whl | CPython 3.10 | CPython 3.10 | Linux glibc 2.17+ ARM64 | Details |
| mindie_turbo-2.0rc1-cp310-cp310-manylinux1_x86_64.whl | CPython 3.10 | CPython 3.10 | Linux glibc 2.5+ x86-64 | Details |
Total release size: 2.4 MB
Release files / mindie_turbo-2.0rc1-cp311-cp311-manylinux_2_39_aarch64.whl
| Download URL | mindie_turbo-2.0rc1-cp311-cp311-manylinux_2_39_aarch64.whl |
|---|---|
| Size | 389.1 kB |
| Tags | CPython 3.11 Linux glibc 2.39+ ARM64 |
|
SHA-256 checksum How to use checksums |
ddaf9488238113d197e14891965f2e75c61dbdff38b7554d41dbe0297f7b6c99
|
|
BLAKE2b-256 checksum How to use checksums |
564a8fff313a3bab81e57955a04f6048a8335b615031b2cccc0bf38ba6f54bf1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.9.6
|
Release files / mindie_turbo-2.0rc1-cp311-cp311-manylinux2014_aarch64.whl
| Download URL | mindie_turbo-2.0rc1-cp311-cp311-manylinux2014_aarch64.whl |
|---|---|
| Size | 389.1 kB |
| Tags | CPython 3.11 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
f8b9b1939c7e53cb7a5f646e8c1581b590391a8c6c56ff0bd6498ed1674ffe75
|
|
BLAKE2b-256 checksum How to use checksums |
4f61dbc5b720b46d54f87c08cf5714e8efae8d18826880cc3c234e2536ce0802
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.9.6
|
Release files / mindie_turbo-2.0rc1-cp311-cp311-manylinux1_x86_64.whl
| Download URL | mindie_turbo-2.0rc1-cp311-cp311-manylinux1_x86_64.whl |
|---|---|
| Size | 410.6 kB |
| Tags | CPython 3.11 Linux glibc 2.5+ x86-64 |
|
SHA-256 checksum How to use checksums |
67d60ae31412219ea008428ae8071e687a932b466a31f3de305403d3261607b4
|
|
BLAKE2b-256 checksum How to use checksums |
9120a62d7c9cc6df099ca2aaf48762f841d88477d596823546069854fbd45d21
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.9.6
|
Release files / mindie_turbo-2.0rc1-cp310-cp310-manylinux_2_39_aarch64.whl
| Download URL | mindie_turbo-2.0rc1-cp310-cp310-manylinux_2_39_aarch64.whl |
|---|---|
| Size | 386.9 kB |
| Tags | CPython 3.10 Linux glibc 2.39+ ARM64 |
|
SHA-256 checksum How to use checksums |
26f21839aa292855a65d1bce3bdc5e4c66ad62777a2095e063cdd6b4e20c3b30
|
|
BLAKE2b-256 checksum How to use checksums |
30fe4503778c4862877038ecc7ae4b6c594ce6a2b523a5f633d89e00f10c49d8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.9.6
|
Release files / mindie_turbo-2.0rc1-cp310-cp310-manylinux2014_aarch64.whl
| Download URL | mindie_turbo-2.0rc1-cp310-cp310-manylinux2014_aarch64.whl |
|---|---|
| Size | 386.9 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
07452d82857c72ba61577809a15b4424128aeb68f8972f67b9b5dfd179c4b7c4
|
|
BLAKE2b-256 checksum How to use checksums |
ddc57cb3f9eaff70d275718dfa8f52ee3ce4c2889b63559121177d02c9b00c08
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.9.6
|
Release files / mindie_turbo-2.0rc1-cp310-cp310-manylinux1_x86_64.whl
| Download URL | mindie_turbo-2.0rc1-cp310-cp310-manylinux1_x86_64.whl |
|---|---|
| Size | 408.2 kB |
| Tags | CPython 3.10 Linux glibc 2.5+ x86-64 |
|
SHA-256 checksum How to use checksums |
354f29e5537a9e0d2b5e27ad99449e6497068ff0a10b450da409dae51a134684
|
|
BLAKE2b-256 checksum How to use checksums |
9b352eebe878efa526d77f987f63bffc8ced1b700e83369ecab7fa95fdec6d09
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.9.6
|