端侧推理软件栈
目前单个嵌入式设备算力不足以训练模型运行大语言模型进行推理算力也是很吃紧的。嵌入式设备上可以部署轻量模型推理软件栈。如何构建嵌入式设备模型软件栈1、构建自己的模型文件格式模型文件 模型结构算子图 模型参数权重可能的元信息/优化数据2、数据处理流程如下图当然如果前处理和后处理适合在NPU上计算也可以push到NPU上3、构建pythonc接口库提供模型构建工具集模型推理接口库等4、支持TensorFlowPyTorchONNX等模型并提供工具将这些模型转换成自己的模型而且提供工具分析自己的模型5、提供模型评估工具支持精度评估性能评估内存评估等提供模拟器支持在PC等平台下加载、执行模型精度分析一般用余弦距离或欧氏距离等分别分析完整模型推理精度和逐层推理精度字段说明OpType算子Call单帧内该算子运行次数CPU(ns)单帧内该算子在CPU上的总耗时NPU(ns)单帧内该算子在NPU上的总耗时Total(ns)单帧内该算子的总耗时Ratio(%)单帧内该算子的总耗时与单帧总耗时的比值字段说明Core使用的核心数Command寄存器配置及相关控制信息的内存占用MBInternal模型中间Tensor的内存占用MBWeight模型权重Tensor的内存占用MBKVCache模型KV Cache的内存占用MBTotal模型整体内存总占用MB6、支持推理量化稀疏矩阵运算自定义算子动态shape数据排布等特性和功能支持NPU/GPU/CPU调度Cache管理等支持图级别/算子级别/内存优化等优化机制和流程7、为了提高推理性能需要提供分级缓存数据零拷贝特性构建高效神经网络算子执行流水线下图显示了典型层的推理过程中涉及四个操作缓存的使用情况。操作 1 是 DMA 将数据直接从 DDR 传输到 L2。操作 2 将数据从 L3 移动到 L2。操作 3 将数据从 L2 传输到 L3。操作 4 将数据从 L3 移动到 DDR。操作 2 和 3 的效率比操作 1 和 4 高十倍以上。利用前一层的特征映射可能导致三种情况只有操作 1如果输入层和前一 层输出完全位于 DDR 中只有操作 2如果前一个特征映射完全适合 L3/MSMC或操作 1 和 2如果前一 个输出对于 L3 太大部分存储在 DDR 中。计算出当前层的特征映射后操作 3 会优先将数据移动到 L3。如 果超过 L3 容量操作 4 会将多余的数据存储在 DDR 中。权重值始终存储在 DDR 中并在需要时直接提取到 L2。这种三级高速缓存架构避免了计算周期内缓慢的 DDR 读取/写入操作并节省了 DDR 带宽从而显著提高了推理效 率。提高效率和节省带宽的关键在于最大限度地提高 L3 利用率从而防止在 DDR 中存储特征映射。下一节将介 绍如何分析模型的内存使用情况。图中NPU为C7xMMA该名称来源于 NPU 的两个组成部分C7000 系列浮点数字信号处理器和矩阵乘法加速器 (MMA)。C7x 系列 DSP 内核会运行 RTOS在模型内负责数据调度和非线性处理。MMA 与 C7x 深度耦合负责线性代数运算如矩阵乘法和 2D 卷积内存使用说明可缓存属性L1 SRAM-暂存L2 SRAM-暂存L3 SRAM-暂存存储每层的固定输入,如权重是永久性中间层输出结果(用于模型转换)否暂存中间层输出结果(模型推理)否永久性每个层临时使用的空间,用于累积输出值并取最大值否暂存存储统计信息和一些记录信息否暂存记录每层的基本信息是永久性每个层的算法应用使用的空间是暂存在处理抢占时存储上下文否永久性网络结构是永久性用于多核模式下的多核同步否永久性存储一些常量,例如卷积参数是永久性8、软件栈根据导入的模型文件构建计算图和数据处理流水线9、端侧推理这块只有约20%的算力需要GPU/NPU处理约80%的算力都部署在CPU上了CPU上需要运行软件栈和维护算法流水线10、端侧推理需要解决五项关键的 ODML 约束条件延迟时间无需往返服务器、隐私性没有个人数据离开设备、连接性无需连接到互联网、大小缩减了模型和二进制文件大小和功耗高效推理和缺少网络连接11、端侧使用GPU运行算子可以用OpenGLOpenCLVulkan等库MNNNCNN是对这些库进行了封装在NPU上运行算子需要使用专用的NPU软件栈ARM的NPU软件栈是ARM NNAndroid NNAPI已废弃改成提供TensorFlow Lite 运行时库方便更新华为昇腾的CANN和英伟达CUDA也有嵌入式方案但不支持手机设备Pytorch TensorFlow都有自己的端侧软件栈ARM NN Overview12、算子可以运行在CPU上ARM芯片组可用SMESVENEON等指令扩展优化性能可以运行在GPUNPUTPU上其中TPU是谷歌自研的主要优化TensorFlow网络主流后端硬件加速有XNNPACK (Mobile CPU)Core ML (iOS)Metal Performance Shaders (iOS GPU)Vulkan (Android GPU)Qualcomm NPUMediaTek NPUArm Ethos-U NPUCadence DSP13、端侧往往提供NPU模块NPU对向量运算卷积激活函数等性能优化进行专用硬件设计​​NPU通常采用SIMDSingle Instruction, Multiple Data单指令多数据​​或更专用的架构GPU采用SIMTSingle Instruction, Multiple Threads单指令多线程。OS软件栈大致分层SDK如ARMNN,CANN,CUDAAI框架如Pytorch TensorFlowLLMTools就是各类AI应用比如人脸识别实体识别语音合成等等其中包括模型文件。端侧中SDK和AI框架往往融合在一起了比如NCNNMNNPytorch MobileTensorFlow LiteRT。常见开源模型CNN模型MobileNetV2、ResNet50、YOLOv5、YOLOv6、YOLOv8等视觉识别与检测模型LLM模型Qwen2.5 0.5B、1.5B、3B、Qwen3 0.6B、 1.7B、 4B等大语言模型VLM模型FastVLM、Qwen2.5 VL、Qwen3 VL等视觉语言多模态模型常见的国产NPU瑞芯微RK182X系列典型架构RISC/DSP MAC阵列 SRAM DMA NoC 高速接口应用场景应用领域代表技术模型示例任务NLPTransformer, LLM翻译、问答、摘要、对话生成CVCNN, Vision Transformer分类、检测、分割、合成Speech/AudioRNN, Tacotron, Wav2Vec识别、合成、去噪、风格迁移时间序列预测LSTM, TCN, Transformer股票、电力、交通、气象控制与机器人强化学习、模仿学习自动驾驶、机械臂控制医疗健康CNN, Transformer医学影像、基因、药物发现遥感GISCNN 地理信息处理土地分类、灾害检测AIGC生成内容GAN, Diffusion, LLM文本、图像、音频、代码生成题外话2025年国内产业主要缺少成熟硬件方案和训练软件栈

相关新闻

网络专栏之网络API原理

网络专栏之网络API原理

TCP连接建立 连接前的准备工作 1.socket() socket()是应用程序与协议栈交互的抽象接口。如何实现的?由两个部分组成,一个是fd的分配(有fd用户才能使用),一个是tcp控制块(TCB)(UDP连…

2026/5/17 10:31:41 阅读更多 →
好用帖子集合

好用帖子集合

labelImg下载与安装 labellmg中文版安装(最最简单版--适合小白),labellmg使用教程及labelimg闪退问题解决-CSDN博客 yolov8数据集配置 【目标检测】2024最新-用YOLOv8训练自己的数据集(保姆级教学)_yolov8 训练-CSDN博…

2026/7/4 1:43:18 阅读更多 →
Springboot+vue停车场管理系统的设计与实现

Springboot+vue停车场管理系统的设计与实现

文章目录前言源码获取详细视频演示具体实现截图后端框架SpringBoot前端框架Vue持久层框架MyBaits成功系统案例:代码参考数据库前言 博主介绍:CSDN特邀作者、985高校计算机专业毕业、现任某互联网大厂高级全栈开发工程师、Gitee/掘金/华为云/阿里云/GitHub等平台持续…

2026/5/17 12:39:45 阅读更多 →

最新新闻

VisualCppRedist AIO:一站式解决Windows软件兼容性问题的终极工具

VisualCppRedist AIO:一站式解决Windows软件兼容性问题的终极工具

VisualCppRedist AIO:一站式解决Windows软件兼容性问题的终极工具 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过软件无法启动、游…

2026/7/4 1:41:21 阅读更多 →
UE5多线程编程与FQueuedThreadPool实战指南

UE5多线程编程与FQueuedThreadPool实战指南

1. UE5多线程编程基础与FQueuedThreadPool概述在UE5游戏开发中,多线程编程是提升性能的关键技术之一。虚幻引擎提供了完善的多线程框架,其中FQueuedThreadPool作为核心线程池实现,为开发者管理并发任务提供了便利。与直接创建线程相比&#x…

2026/7/4 1:39:20 阅读更多 →
Unity Addressables内存管理优化实战指南

Unity Addressables内存管理优化实战指南

1. 内存管理在Addressables中的核心地位在Unity项目中使用Addressables资源管理系统时,内存管理是决定项目性能和稳定性的关键因素。不同于传统的Resources加载方式,Addressables采用异步加载和引用计数机制,这给内存管理带来了新的挑战和优化…

2026/7/4 1:37:19 阅读更多 →
FBX导入Unreal缺失平滑组问题的解决方案

FBX导入Unreal缺失平滑组问题的解决方案

1. 问题背景与现象解析最近在将FBX格式的3D模型导入Unreal Engine时,遇到了一个典型警告:"[ue SkeletalMesh] 在FBX文件中未找到这个网格体Mesh_001的平滑组信息"。这个看似简单的提示背后,实际上涉及到3D建模流程中几个关键的技术…

2026/7/4 1:37:19 阅读更多 →
Ubuntu下UE5与AirSim集成开发指南

Ubuntu下UE5与AirSim集成开发指南

1. 项目概述:Ubuntu系统下的UE5与Project AirSim集成方案在Linux生态中部署虚幻引擎5(UE5)与微软开源仿真平台Project AirSim的组合,为自动驾驶、无人机开发等领域提供了高性能的仿真测试环境。不同于Windows平台的"开箱即用…

2026/7/4 1:35:19 阅读更多 →
libgdx游戏UI元素定位与调试实战技巧

libgdx游戏UI元素定位与调试实战技巧

1. libgdx界面元素定位调试实战指南在libgdx游戏开发中,UI元素的精确定位是个看似简单却容易踩坑的环节。我刚接触libgdx时,曾花了两天时间就为了把一个按钮摆到理想位置。经过多个项目实战,我总结出三种不同维度的调试方案,从依赖…

2026/7/4 1:35:19 阅读更多 →

日新闻

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 正式发布,这是一个关键的安全修复版本,修复了多个方面的问题,还对部分功能进行了优化。 安全修复亮点 此次发布在安全修复上表现突出。binprot 避免了项目引用计数溢出,mcmc 因安全问题提升了上游版本号&#xf…

2026/7/4 0:04:29 阅读更多 →
终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL HMCL(Hello Minecraft! Lau…

2026/7/4 0:06:29 阅读更多 →
KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

1. KMX63与PIC18F66K40的硬件协同架构解析KMX63作为一款三轴加速度计和磁力计组合传感器,与PIC18F66K40微控制器的搭配堪称嵌入式HMI开发的黄金组合。这套硬件组合的核心优势在于KMX63提供的高精度运动感知能力与PIC18F66K40强大的信号处理能力形成了完美互补。KMX6…

2026/7/4 0:06:29 阅读更多 →

周新闻

月新闻