PPQ 项目介绍
项目概述
PPQ 是一个专为工业应用而设计的高性能神经网络量化工具。自 2016 年以来,神经网络量化作为常用的加速方案被广泛应用。与剪枝和架构搜索相比,量化技术更具泛用性,特别适用于需要在有限面积和功耗条件下工作的端侧芯片。通过将浮点运算转换为定点运算,PPQ 能够显著提高芯片设计效率,降低系统功耗,同时也缩短系统延迟,提升吞吐量。
在人工智能快速发展的时代,各种基于神经网络的技术不断涌现,这对模型的量化和部署提出了挑战。PPQ 以其完备的计算图逻辑和图调度逻辑,能够处理复杂的模型结构,自动识别量化和非量化区,并允许用户对调度进行手动优化。
特性与优势
PPQ 强调用户参与到量化与性能优化的过程中,灵活的接口设计让用户可以自定义各个网络算子、张量的量化策略。PPQ 将量化过程分为 27 个独立的优化流程,用户可以自由组合这些流程,以实现灵活的量化任务。
凭借专为量化设计的执行引擎,PPQ 在执行效率上拥有显著优势。它内置了 99 种常见 Onnx 操作的执行逻辑,同时不依赖 Onnxruntime 即可完成模型的推理与量化。此外,PPQ 支持自主注册新的算子实现,用户可以根据不同的平台需求编写新的操作逻辑。
在推理框架的支持方面,PPQ 与 TensorRT、OpenPPL、Openvino 以及其他多个主流框架兼容,并预制了与这些框架协作的量化器和导出逻辑。这种高度的可扩展性使得 PPQ 可以适应各种硬件和推理库需求。
最新功能
在 PPQ 0.6.6 版本中,新增了一些重要功能:
- 支持多种 FP8 量化标准,如 E4M3 和 E5M2。
- 提供了一套基础 API,用于更灵活的量化操作。
- 增强的图模式匹配和图融合功能。
- 基于 Onnx 的模型量化训练(QAT)。
- 引入了全新的 TensorRT 量化和导出逻辑。
- 预置了全球最大的量化模型库 OnnxQuant。
安装指南
用户可以通过 git 克隆 PPQ 的代码库,并使用 python 安装相关依赖。对于 Ubuntu 和 CentOS 用户,建议安装 ninja-build。而 Windows 用户则需要下载 ninja.exe,并安装 Visual Studio 2019 以配置编译环境。
PPQ 也支持 Docker 镜像的快速安装方式,用户可以拉取指定的 Docker 镜像来运行 PPQ。
学习资源
PPQ 提供了一系列教程和示例脚本,帮助用户快速上手,包括模型量化、执行器、误差分析、校准、网络微调等。同时,视频资料也涵盖了从计算原理到实际部署的各个方面。
参与与贡献
PPQ 欢迎各类贡献。对于功能更新和错误修复,项目组建议提前通过 issue 功能进行讨论,以确保新功能与项目当前规划方向的一致性。
PPQ 是一个广泛受到中外开源社区关注的项目,旨在通过量化技术让人工智能更好地服务于生活。开发者可以通过开源平台获取更多学习资源与支持,与全球开发者共同推动 PPQ 的发展。