XNNPACK

GitHub
2.3k 483 较难 1 次阅读 今天NOASSERTION开发框架
AI 解读 由 AI 自动生成,仅供参考

XNNPACK 是一套专为移动端、服务器及 Web 环境打造的高性能神经网络推理加速库。它致力于解决深度学习模型在不同硬件平台上运行效率低下的难题,通过高度优化的底层算子,显著降低推理延迟并提升吞吐量。

需要注意的是,XNNPACK 并非直接面向深度学习从业者或研究人员提供前端接口,而是作为“引擎”嵌入到 TensorFlow Lite、PyTorch、ONNX Runtime 和 MediaPipe 等主流框架中,为它们提供强大的底层性能支撑。因此,它最适合需要优化模型部署性能的框架开发者、系统工程师以及嵌入式应用开发人员使用。

其核心技术亮点在于广泛的架构兼容性与极致的优化策略。XNNPACK 全面支持 ARM、x86、RISC-V 及 WebAssembly 等多种指令集,能够充分利用从手机到服务器的各类处理器特性(如 NEON、AVX512)。此外,它独特地支持 NHWC 数据布局及自定义通道步长,使得通道拆分与合并操作无需额外计算成本,从而在 MobileNet 等常见模型上实现了卓越的单线程与多线程推理速度。

使用场景

某初创团队正在开发一款运行在旧款 Android 手机上的实时手势识别应用,需在本地完成视频流分析以保护用户隐私。

没有 XNNPACK 时

  • 模型推理严重依赖通用计算库,在老旧的 ARMv7 设备上单帧处理耗时超过 100 毫秒,导致画面明显卡顿。
  • 无法充分利用多核 CPU 性能,即使开启多线程,大核利用率依然低下,功耗高但提速不明显。
  • 为追求速度被迫降低模型精度或分辨率,牺牲了手势识别的准确率,用户体验大打折扣。
  • 针对不同芯片架构(如 NEON 指令集)手动优化算子代码难度极大,开发周期被无限拉长。

使用 XNNPACK 后

  • 借助针对 ARM 架构深度优化的浮点运算算子,MobileNet v3 小模型在同类设备上的推理延迟降至 14 毫秒以内,实现流畅的实时响应。
  • 自动调度所有大核进行多线程并行计算,将端到端延迟进一步压缩至 6-8 毫秒,同时显著降低了单位计算的能耗。
  • 完整支持高精度 FP32 模型部署,无需妥协画质即可达成高准确率识别,确保了复杂手势的判断可靠性。
  • 直接集成到 TensorFlow Lite 等框架中,零成本适配从 ARMv6 到 x86 等多种硬件平台,大幅减少了底层适配工作。

XNNPACK 通过提供底层高性能原语,让开发者能在资源受限的移动设备上轻松部署高效、低功耗的神经网络应用。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
  • Android
  • iOS
GPU
  • 不需要 GPU
  • XNNPACK 是专为 CPU 推理优化的库,支持 ARM (NEON, VFPv2), x86/x86-64 (AVX512), RISC-V, Hexagon (HVX) 以及 WebAssembly 架构
内存

未说明(取决于运行的具体神经网络模型大小)

依赖
notes该工具主要作为底层性能原语供 TensorFlow Lite、PyTorch、ONNX Runtime 等高层框架调用,不直接面向深度学习从业者使用。支持单线程和多线程运行。在 Raspberry Pi 等嵌入式设备上表现优异。
pythonPython 3
C11 编译器
C++17 编译器
CMake (构建工具)
Bazel (可选构建工具)
XNNPACK hero image

快速开始

XNNPACK

XNNPACK 是一个针对 ARM、x86、WebAssembly 和 RISC-V 平台的神经网络推理高度优化解决方案。XNNPACK 并非供深度学习从业者和研究人员直接使用;相反,它提供了低层性能原语,用于加速高级机器学习框架,例如 TensorFlow LiteTensorFlow.jsPyTorchONNX RuntimeExecuTorchMediaPipe

支持的架构

  • Android、iOS、macOS、Linux 和 Windows 上的 ARM64
  • Android 上的 ARMv7(带 NEON)
  • Linux 上的 ARMv6(带 VFPv2)
  • Windows、Linux、macOS、Android 和 iOS 模拟器上的 x86 和 x86-64(最高支持 AVX512)
  • WebAssembly MVP
  • WebAssembly SIMD
  • WebAssembly Relaxed SIMD(实验性)
  • RISC-V(RV32GC 和 RV64GC)
  • Hexagon(带 HVX)

算子覆盖

XNNPACK 实现了以下神经网络算子:

  • 2D 卷积(包括分组卷积和深度可分离卷积)
  • 2D 反卷积(又称转置卷积)
  • 2D 平均池化
  • 2D 最大池化
  • 2D ArgMax 池化(最大池化 + 索引)
  • 2D 解池化
  • 2D 双线性插值
  • 2D 深度转空间(又称像素洗牌)
  • 加法(包括广播,仅适用于两个输入)
  • 减法(包括广播)
  • 除法(包括广播)
  • 最大值(包括广播)
  • 最小值(包括广播)
  • 乘法(包括广播)
  • 平方差(包括广播)
  • 全局平均池化
  • 通道混洗
  • 全连接
  • 绝对值
  • 银行家舍入(四舍六入五成双)
  • 向上取整
  • 截断(包括 ReLU 和 ReLU6)
  • 类型转换(包括定点数和半精度量化与反量化)
  • 复制
  • ELU
  • 向下取整
  • HardSwish
  • Leaky ReLU
  • 取负
  • Sigmoid
  • Softmax
  • 平方
  • Tanh
  • 转置
  • 向零取整
  • PReLU

XNNPACK 中的所有算子都支持 NHWC 布局,同时还允许在 Channel 维度上自定义步幅。因此,算子可以只消费输入张量中的部分通道,并生成输出张量中的部分通道,从而实现零开销的通道拆分和通道拼接操作。

性能

手机

下表展示了 XNNPACK 库在三代 MobileNet 模型和三代 Pixel 手机上的 单线程 性能。

模型 Pixel, ms Pixel 2, ms Pixel 3a, ms
FP32 MobileNet v1 1.0X 82 86 88
FP32 MobileNet v2 1.0X 49 53 55
FP32 MobileNet v3 Large 39 42 44
FP32 MobileNet v3 Small 12 14 14

下表展示了 XNNPACK 库在三代 MobileNet 模型和三代 Pixel 手机上的 多线程 性能(使用与大核数量相同的线程)。

模型 Pixel, ms Pixel 2, ms Pixel 3a, ms
FP32 MobileNet v1 1.0X 43 27 46
FP32 MobileNet v2 1.0X 26 18 28
FP32 MobileNet v3 Large 22 16 24
FP32 MobileNet v3 Small 7 6 8

基准测试于 2020 年 3月27日进行,使用 end2end_bench --benchmark_min_time=5 命令,在搭载 Android NDK r21 的 Android/ARM64 构建版本上执行(bazel build -c opt --config android_arm64 :end2end_bench),并采用随机权重和输入的神经网络模型。

Raspberry Pi

下表展示了 XNNPACK 库在三代 MobileNet 模型和三代 Raspberry Pi 板上的 多线程 性能。

模型 RPi Zero W (BCM2835), ms RPi 2 (BCM2836), ms RPi 3+ (BCM2837B0), ms RPi 4 (BCM2711), ms RPi 4 (BCM2711, ARM64), ms
FP32 MobileNet v1 1.0X 3919 302 114 72 77
FP32 MobileNet v2 1.0X 1987 191 79 41 46
FP32 MobileNet v3 Large 1658 161 67 38 40
FP32 MobileNet v3 Small 474 50 22 13 15
INT8 MobileNet v1 1.0X 2589 128 46 29 24
INT8 MobileNet v2 1.0X 1495 82 30 20 17

基准测试于 2022 年 2月8日进行,使用 end2end-bench --benchmark_min_time=5 命令,在搭载 CMake 的 Raspbian Buster 构建版本上执行(./scripts/build-local.sh),并采用随机权重和输入的神经网络模型。INT8 推理是在逐通道量化方案下评估的。

最低构建要求

  • C11
  • C++17
  • Python 3

出版物

生态系统

机器学习框架

致谢

XNNPACK 基于 QNNPACK 库。随着时间的推移,其代码库发生了较大变化,XNNPACK 的 API 已不再与 QNNPACK 兼容。

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|2周前
Agent开发框架图像

n8n

n8n 是一款面向技术团队的公平代码(fair-code)工作流自动化平台,旨在让用户在享受低代码快速构建便利的同时,保留编写自定义代码的灵活性。它主要解决了传统自动化工具要么过于封闭难以扩展、要么完全依赖手写代码效率低下的痛点,帮助用户轻松连接 400 多种应用与服务,实现复杂业务流程的自动化。 n8n 特别适合开发者、工程师以及具备一定技术背景的业务人员使用。其核心亮点在于“按需编码”:既可以通过直观的可视化界面拖拽节点搭建流程,也能随时插入 JavaScript 或 Python 代码、调用 npm 包来处理复杂逻辑。此外,n8n 原生集成了基于 LangChain 的 AI 能力,支持用户利用自有数据和模型构建智能体工作流。在部署方面,n8n 提供极高的自由度,支持完全自托管以保障数据隐私和控制权,也提供云端服务选项。凭借活跃的社区生态和数百个现成模板,n8n 让构建强大且可控的自动化系统变得简单高效。

184.7k|★★☆☆☆|今天
数据工具开发框架Agent

AutoGPT

AutoGPT 是一个旨在让每个人都能轻松使用和构建 AI 的强大平台,核心功能是帮助用户创建、部署和管理能够自动执行复杂任务的连续型 AI 智能体。它解决了传统 AI 应用中需要频繁人工干预、难以自动化长流程工作的痛点,让用户只需设定目标,AI 即可自主规划步骤、调用工具并持续运行直至完成任务。 无论是开发者、研究人员,还是希望提升工作效率的普通用户,都能从 AutoGPT 中受益。开发者可利用其低代码界面快速定制专属智能体;研究人员能基于开源架构探索多智能体协作机制;而非技术背景用户也可直接选用预置的智能体模板,立即投入实际工作场景。 AutoGPT 的技术亮点在于其模块化“积木式”工作流设计——用户通过连接功能块即可构建复杂逻辑,每个块负责单一动作,灵活且易于调试。同时,平台支持本地自托管与云端部署两种模式,兼顾数据隐私与使用便捷性。配合完善的文档和一键安装脚本,即使是初次接触的用户也能在几分钟内启动自己的第一个 AI 智能体。AutoGPT 正致力于降低 AI 应用门槛,让人人都能成为 AI 的创造者与受益者。

183.6k|★★★☆☆|今天
Agent语言模型插件

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|2周前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

161.1k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

109.2k|★★☆☆☆|2天前
开发框架图像Agent