PPLNN简介
PPLNN是一个高性能的深度学习推理引擎,全称为"PPLNN is a Primitive Library for Neural Network"。它由OpenPPL开源项目开发,旨在提供高效的AI模型推理能力。PPLNN具有以下主要特点:
- 支持运行各种ONNX模型
- 对OpenMMLab框架有更好的支持
- 提供高性能的模型推理能力
- 支持多种硬件平台,包括x86 CPU和NVIDIA GPU
PPLNN的主要功能
LLM特性
PPLNN为大语言模型(LLM)提供了一系列优化特性:
- 全新的LLM引擎
- Flash Attention
- Split-k Attention
- Group-query Attention
- 动态批处理
- 张量并行
- 图优化
- INT8分组KV缓存
- INT8逐令牌逐通道量化(W8A8)
这些特性大大提升了LLM的推理性能和效率。
支持的LLM模型
PPLNN支持多种主流的大语言模型,包括:
- LLaMA 1/2/3
- ChatGLM 2/3
- Baichuan 1/2 7B
- InternLM 1/2
- Mixtral
- Qwen 1/1.5
- Falcon
- Bigcode
对于这些模型,PPLNN都提供了优化的推理支持。
使用PPLNN
安装和编译
要使用PPLNN,首先需要安装必要的依赖:
在Debian或Ubuntu系统上:
apt-get install build-essential cmake git python3 python3-dev
在RedHat或CentOS系统上:
yum install gcc gcc-c++ cmake3 make git python3 python3-devel
然后克隆PPLNN的源代码并编译:
git clone https://github.com/openppl-public/ppl.nn.git
cd ppl.nn
./build.sh -DPPLNN_USE_X86_64=ON -DPPLNN_ENABLE_PYTHON_API=ON
运行示例
编译完成后,可以运行Python示例来测试PPLNN:
PYTHONPATH=./pplnn-build/install/lib python3 ./tools/pplnn.py --use-x86 --onnx-model tests/testdata/conv.onnx
使用Python API
PPLNN提供了Python API,方便在Python中使用。以下是一个简单的使用示例:
from pyppl import nn as pplnn
from pyppl import common as pplcommon
# 创建x86引擎
x86_options = pplnn.x86.EngineOptions()
x86_engine = pplnn.x86.EngineFactory.Create(x86_options)
# 创建RuntimeBuilder
runtime_builder = pplnn.onnx.RuntimeBuilderFactory.Create()
# 加载ONNX模型
onnx_model_file = "/path/to/onnx_model_file"
status = runtime_builder.LoadModelFromFile(onnx_model_file)
# 设置资源
resources = pplnn.RuntimeBuilderResources()
resources.engines = [x86_engine]
runtime_builder.SetResources(resources)
# 预处理
status = runtime_builder.Preprocess()
# 创建Runtime实例
runtime = runtime_builder.CreateRuntime()
# 填充输入数据
for i in range(runtime.GetInputCount()):
tensor = runtime.GetInputTensor(i)
# 填充输入数据的代码...
# 运行模型
ret_code = runtime.Run()
# 获取输出结果
for i in range(runtime.GetOutputCount()):
tensor = runtime.GetOutputTensor(i)
# 处理输出数据的代码...
PPLNN的优势
-
高性能: PPLNN通过各种优化技术,如Flash Attention、动态批处理等,大幅提升了模型推理性能。
-
多平台支持: 支持x86 CPU和NVIDIA GPU等多种硬件平台。
-
灵活性: 可以同时使用多个引擎,自动进行模型分区和任务分配。
-
广泛的模型支持: 支持各种ONNX模型,并对主流大语言模型有特别优化。
-
易用的API: 提供C++和Python API,方便集成到各种应用中。
结语
PPLNN作为一个高性能的深度学习推理引擎,为AI应用提供了强大的后端支持。它的高性能、多平台支持和易用性使其成为AI模型部署的理想选择。无论是在服务器端还是嵌入式设备上,PPLNN都能提供出色的推理性能。随着AI技术的不断发展,PPLNN也在持续优化和更新,为用户提供更好的AI推理解决方案。
欢迎开发者和研究者探索PPLNN,为AI应用开发贡献力量。更多详细信息,请访问PPLNN GitHub仓库。