Skip to main content

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. 安装指南

  1. 联系相关人员获取 MindIE Turbo 软件包。

  2. 将 MindIE Turbo 软件包上传到安装环境的任意路径(例如:/home/package)。

  3. 进入软件包所在路径:

    cd /home/package
    
  4. 执行以下命令安装 MindIE Turbo:

    python setup.py install
    
  5. 返回上级目录,执行以下命令验证是否安装成功:

    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框架为例:

  1. 安装vLLM与vLLM-Ascend。

    请参考vLLM-Ascend安装文档进行安装。

  2. 根据需要,进行离线批量推理或在线服务推理。

  • 离线批量推理 请参考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接口

  1. 接口功能:

    返回W8A8量化所需要的weight参数名与tensor。

  2. 参数说明:

    参数名称 是否必选 类型 默认值 描述 安全声明
    input_size int - W8A8 linear的输入维度大小。 推理强依赖数据的合法性,需由用户保证。
    output_size int - W8A8 linear的输出维度大小。 推理强依赖数据的合法性,需由用户保证。
  3. 返回值说明

    类型 描述 安全声明
    Dict[str, torch.Tensor] 代表W8A8所需的weight参数名与符合形状要求的tensor。 推理强依赖数据的合法性,需由用户保证。

get_pertensor_param接口

  1. 接口功能:

    返回W8A8量化所需要的per_tensor参数名与tensor。

  2. 参数说明:

    参数名称 是否必选 类型 默认值 描述 安全声明
    params_dtype torch.dtype - W8A8 linear的输入参数类型。 推理强依赖数据的合法性,需由用户保证。
  3. 返回值说明:

    返回值名称 类型 描述 安全声明
    Dict[str, torch.Tensor] dict[str, torch.Tensor] 代表W8A8所需的pertensor参数名与符合形状要求的tensor。 推理强依赖数据的合法性,需由用户保证。

get_perchannel_param接口

  1. 接口功能:

    返回W8A8量化所需要的per_channel参数名与tensor。

  2. 参数说明:

    参数名称 是否必选 类型 默认值 描述 安全声明
    output_size int - W8A8 linear的输出维度大小。 推理强依赖数据的合法性,需由用户保证。
    params_dtype torch.dtype - W8A8 linear的输出参数类型。 推理强依赖数据的合法性,需由用户保证。
  3. 返回值说明:

    返回值名称 类型 描述 安全声明
    Dict[str, torch.Tensor] dict[str, torch.Tensor] 代表W8A8所需的perchannel参数名与符合形状要求的tensor。 推理强依赖数据的合法性,需由用户保证。

apply接口

  1. 接口功能:

    实现W8A8 linear所需的前向计算。

  2. 参数说明:

    参数名称 是否必选 类型 默认值 描述 安全声明
    layer torch.nn.Module - 被量化后的一个linear对象,并且必须注册了由get_weiget、get_perchannel_param、get_pertensor_param所给出的参数。 推理强依赖数据的合法性,需由用户保证。
    x torch.Tensor - 量化linear前向计算的输入。 推理强依赖数据的合法性,需由用户保证。
  3. 返回值说明:

    类型 描述 安全声明
    torch.Tensor 量化linear的前向计算结果 推理强依赖数据的合法性,需由用户保证。

参与贡献

  1. Fork 本仓库
  2. 新建分支
  3. 验证修改
  4. 提交代码
  5. 新建 Pull Request

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

mindie_turbo-2.0rc1-cp311-cp311-manylinux_2_39_aarch64.whl (389.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.39+ ARM64

mindie_turbo-2.0rc1-cp311-cp311-manylinux2014_aarch64.whl (389.1 kB view details)

Uploaded CPython 3.11

mindie_turbo-2.0rc1-cp311-cp311-manylinux1_x86_64.whl (410.6 kB view details)

Uploaded CPython 3.11

mindie_turbo-2.0rc1-cp310-cp310-manylinux_2_39_aarch64.whl (386.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.39+ ARM64

mindie_turbo-2.0rc1-cp310-cp310-manylinux2014_aarch64.whl (386.9 kB view details)

Uploaded CPython 3.10

mindie_turbo-2.0rc1-cp310-cp310-manylinux1_x86_64.whl (408.2 kB view details)

Uploaded CPython 3.10

File details

Details for the file mindie_turbo-2.0rc1-cp311-cp311-manylinux_2_39_aarch64.whl.

File metadata

File hashes

Hashes for mindie_turbo-2.0rc1-cp311-cp311-manylinux_2_39_aarch64.whl
Algorithm Hash digest
SHA256 ddaf9488238113d197e14891965f2e75c61dbdff38b7554d41dbe0297f7b6c99
MD5 74173c4e2cad263344b583a7306f6daf
BLAKE2b-256 564a8fff313a3bab81e57955a04f6048a8335b615031b2cccc0bf38ba6f54bf1

See more details on using hashes here.

File details

Details for the file mindie_turbo-2.0rc1-cp311-cp311-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for mindie_turbo-2.0rc1-cp311-cp311-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f8b9b1939c7e53cb7a5f646e8c1581b590391a8c6c56ff0bd6498ed1674ffe75
MD5 64cbb89da5818dff5950c43de191eb92
BLAKE2b-256 4f61dbc5b720b46d54f87c08cf5714e8efae8d18826880cc3c234e2536ce0802

See more details on using hashes here.

File details

Details for the file mindie_turbo-2.0rc1-cp311-cp311-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for mindie_turbo-2.0rc1-cp311-cp311-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 67d60ae31412219ea008428ae8071e687a932b466a31f3de305403d3261607b4
MD5 21393fe93eca3bff8a9fa7dc05543f95
BLAKE2b-256 9120a62d7c9cc6df099ca2aaf48762f841d88477d596823546069854fbd45d21

See more details on using hashes here.

File details

Details for the file mindie_turbo-2.0rc1-cp310-cp310-manylinux_2_39_aarch64.whl.

File metadata

File hashes

Hashes for mindie_turbo-2.0rc1-cp310-cp310-manylinux_2_39_aarch64.whl
Algorithm Hash digest
SHA256 26f21839aa292855a65d1bce3bdc5e4c66ad62777a2095e063cdd6b4e20c3b30
MD5 bbb1066c1b379229a078f534705b1965
BLAKE2b-256 30fe4503778c4862877038ecc7ae4b6c594ce6a2b523a5f633d89e00f10c49d8

See more details on using hashes here.

File details

Details for the file mindie_turbo-2.0rc1-cp310-cp310-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for mindie_turbo-2.0rc1-cp310-cp310-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 07452d82857c72ba61577809a15b4424128aeb68f8972f67b9b5dfd179c4b7c4
MD5 9cae8a28eaefb4fef59ade028b7a0941
BLAKE2b-256 ddc57cb3f9eaff70d275718dfa8f52ee3ce4c2889b63559121177d02c9b00c08

See more details on using hashes here.

File details

Details for the file mindie_turbo-2.0rc1-cp310-cp310-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for mindie_turbo-2.0rc1-cp310-cp310-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 354f29e5537a9e0d2b5e27ad99449e6497068ff0a10b450da409dae51a134684
MD5 aa64265b8ce000ee18e48f437dff44c2
BLAKE2b-256 9b352eebe878efa526d77f987f63bffc8ced1b700e83369ecab7fa95fdec6d09

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page