NPU 神经网络处理单元
Ⅰ 什么是 NPU?
当前正处于神经网络和机器学习处理需求爆发的初期。传统的 CPU(中央处理器)/GPU(图形处理器)可以执行类似任务,但专门为神经网络优化的 NPU(神经处理单元)比 CPU/GPU 表现好得多。逐渐地,类似的神经网络任务将由专用的 NPU 单元来完成。
NPU 是一种用于网络应用数据包的专用处理器,采用“数据驱动的并行计算”架构,尤其擅长处理视频和图像等大量多媒体数据。
NPU 也是一种集成电路,但与专用集成电路(ASIC)的单一功能不同,网络处理更加复杂、更具灵活性。通常,可以根据网络计算的特点使用软件或硬件进行特殊编程,以实现网络的特定目的。
NPU 的亮点在于能够运行多个并行线程——通过一些特殊的硬件级优化,NPU 被提升到了另一个层次,例如为一些真正不同的处理核心提供一些易于访问的缓存系统。这些大容量核心比典型的“常规”处理器更简单,因为它们不需要执行多种类型的任务。这一系列的“优化”使 NPU 效率更高,这就是为什么有如此多的研发投入到 ASIC 中的原因。
NPU 的优势之一是它们大部分时间都专注于低精度算法、新的数据流架构或内存计算能力。与 GPU 不同,它们更关注吞吐量而不是延迟。
Ⅱ NPU 的处理器模块
NPU 是专为物联网人工智能设计的,用于加速神经网络运算,解决传统芯片在神经网络运算中效率低下的问题。NPU 处理器包括以下模块:
- 乘法和加法模块:用于计算矩阵乘法和加法、卷积、点积等功能。NPU 内部有 64 个 MAC(乘法累加器),SNPU 中有 32 个。
- 激活函数模块:用于通过最高 12 阶参数拟合实现神经网络中的激活函数,NPU 内部有 6 个 MAC,SNPU 中有 3 个。
- 二维数据操作模块:用于在平面上实现操作,如下采样和平面数据复制等。NPU 内部有 1 个 MAC 和 1 个 SNPU。
- 解压缩模块:用于对加权数据进行解压缩。为了解决物联网设备内存带宽小的特点,在 NPU 编译器中对神经网络中的权重进行压缩,可以实现 6 - 10 倍的压缩效果,且对精度几乎没有影响。
Ⅲ NPU:手机 AI 的核心载体
众所周知,手机的正常运行离不开 SoC(系统级芯片)芯片,它只有指甲盖大小,却拥有所有的“内脏”。其集成模块共同工作,以支持手机功能的实现。CPU 负责手机应用的流畅切换,GPU 支持游戏画面的快速加载,而 NPU 专门负责 AI 计算和 AI 应用的实现。
这也有必要从华为说起,华为是第一家在手机上使用 NPU(神经网络处理单元)的公司,也是第一家将 NPU 集成到手机 CPU 中的公司。
2017 年,华为推出了自己的架构 NPU。与传统的标量和向量计算模式相比,华为自研架构 NPU 使用 3D Cube 对矩阵计算进行加速。因此,单位时间内计算的数据量更大,单位功耗下的 AI 算力更强,与传统的 CPU 和 GPU 相比实现了一个数量级的提升,实现了更好的能效比。
华为首先在 Mate10 上采用外挂的方式使用寒武纪的 NPU。一年后,华为将寒武纪的 NPU IP 集成到 980 中,又过了一年,华为在 990 上放弃寒武纪,使用自己的达芬奇 NPU。
三星 Galaxy 中的 NPU 也被内置到移动处理器中,以利用先进的神经网络,为 Galaxy S20/S20 +/S20 Ultra 和 Z Flip 提供更高水平的视觉智能。NPU 为场景优化器提供动力,增强了识别照片中内容的能力,并促使相机将其调整到适合拍摄对象的理想设置。它现在也比以前的 Galaxy 型号更准确。它还使前置摄像头能够模糊自拍照的背景并创建背景虚化效果。不仅如此,NPU 还帮助设备上的 AI Bixby Vision。
Ⅳ NPU 与 GPU 的比较
虽然 GPU 在并行计算能力方面具有优势,但它不能单独工作,需要 CPU 的协同处理。神经网络模型的构建和数据流仍然在 CPU 上进行。此外,还存在功耗高和体积大的问题。性能越高,GPU 越大,功耗越高,价格也越贵,这对于一些小型设备和移动设备来说是不可用的。因此,一种体积小、功耗低、计算性能高、计算效率高的专用芯片 NPU 应运而生。
NPU 通过在电路层模拟人类神经元和突触,并使用深度学习指令集直接处理大规模神经元和突触,其中一条指令完成一组神经元的处理。与 CPU 和 GPU 相比,NPU 通过突触权重集成存储和计算,从而提高了运算效率。
CPU 和 GPU 处理器需要使用数千条指令来完成神经元处理。NPU 只需一条或几条指令即可完成,因此在深度学习的处理效率方面具有明显优势。实验结果表明,在相同功耗下,NPU 的性能是 GPU 的 118 倍。
Ⅴ 不同处理单元的特点
以下是不同处理单元的特点:
- CPU:70%的晶体管用于构建缓存和部分控制单元。计算单元少,适合逻辑控制操作。
- GPU:晶体管主要用于构建计算单元,计算复杂度低,适合大规模并行计算。主要用于大数据、后端服务器、图像处理。
- NPU:在电路层模拟神经元,通过突触权重实现存储和计算的集成。一条指令完成一组神经元的处理,提高运算效率。主要用于通信领域、大数据、图像处理。
- FPGA:可编程逻辑,计算效率高,更接近底层 IO。通过冗余晶体管和连接可编辑逻辑。本质上无指令,不需要共享内存,比 CPU 和 GPU 计算效率更高。主要用于智能手机、便携式移动设备和汽车。
Ⅵ NPU 的实际应用
NPU 有以下实际应用:
- 拍照时通过 NPU 进行 AI 场景识别,并用 NPU 计算进行图片修饰。
- NPU 判断光源和暗光细节以合成超级夜景。
- 通过 NPU 实现语音助手操作。
- NPU 与 GPU Turbo 一起预先确定下一帧以实现早期渲染,提高游戏的流畅度。
- NPU 预先确定触摸以提高后续操作的手感和灵敏度。
- NPU 与 Link Turbo 一起判断前后端网络速度需求的差异。
- NPU 判断游戏渲染负载以智能调整分辨率。
- 通过降低游戏期间 AI 的计算负载,让 NPU 实现节能。
- NPU 实现 CPU 和 GPU 的动态调度。
- NPU 辅助大数据广告推送。
- 通过 NPU 实现输入法的 AI 智能词组联想功能。
Ⅶ 各类处理单元的解释
以下是各类处理单元的解释:
- APU:加速处理单元,是 AMD 用于加速图像处理的芯片产品。
- BPU:大脑处理单元,是地平线领先的嵌入式处理器架构。
- CPU:中央处理单元,是 PC 核心的主流产品。
- DPU:数据流处理单元,是 Wave Computing 提出的一种 AI 架构。
- FPU:浮点处理单元,是通用处理器中的浮点模块。
- GPU:图形处理单元,具有多线程 SIMD 架构,专为图形处理而设计。
- HPU:全息处理单元,是微软的全息计算芯片和设备。
- IPU:智能处理单元,是 Deep Mind 投资的 Graphcore 的 AI 处理器产品。
- MPU/MCU:微处理器/微控制器单元,通常用于 RISC 计算机架构产品的低计算应用,如 ARM - M 系列处理器。
- NPU:神经网络处理单元,是基于神经网络算法和加速的新型处理器的统称,如中国科学院计算技术研究所/寒武纪的“寒武纪”系列。
- RPU:无线电处理单元,是 Imagination Technologies 将 Wifi/蓝牙/FM/处理器集成为单个处理器的无线电处理器。
- TPU:张量处理单元,是谷歌用于加速人工智能算法的专用处理器。当前一代 TPU 用于推理,第二代用于训练。
- VPU:向量处理单元,是英特尔收购的 Movidius 推出的用于加速图像处理和人工智能的专用芯片。
- WPU:可穿戴处理,Ineda Systems 推出的可穿戴系统级芯片产品,包括 GPU/MIPS CPU 等 IP。
- XPU:百度和赛灵思在 Hotchips 2017 上宣布的 FPGA 智能云加速,包含 256 个核心。
- ZPU:Zylin 处理单元,是挪威 Zylin 的 32 位开源处理器。
相关文章:

NPU 神经网络处理单元
Ⅰ 什么是 NPU? 当前正处于神经网络和机器学习处理需求爆发的初期。传统的 CPU(中央处理器)/GPU(图形处理器)可以执行类似任务,但专门为神经网络优化的 NPU(神经处理单元)比 CPU/GP…...

安宝特分享 | AR技术引领:跨国工业远程协作创新模式
在当今高度互联的工业环境中,跨国合作与沟通变得日益重要。然而,语言障碍常常成为高效协作的绊脚石。安宝特AR眼镜凭借其强大的多语言自动翻译和播报功能,正在改变这一局面,让远程协作变得更加顺畅。 01 多语言翻译优势 安宝特A…...

Vulkan 开发(五):Vulkan 逻辑设备
图片来自《Vulkan 应用开发指南》 Vulkan 开发系列文章: 1. 开篇,Vulkan 概述 2. Vulkan 实例 3. Vulkan 物理设备 4. Vulkan 设备队列 在 Vulkan 中,逻辑设备(Logical Device)是与物理设备(Physical D…...
Kafka 解决消息丢失、乱序与重复消费
一、引言 在分布式系统中,Apache Kafka 作为一种高吞吐量的分布式发布订阅消息系统,被广泛应用于日志收集、流式处理、消息队列等场景。然而,在实际使用过程中,可能会遇到消息丢失、乱序、重复消费等问题,这些问题可能…...

计算机专业毕业生面试工具推荐:白瓜面试
随着毕业季的临近,计算机专业的毕业生们即将步入职场,面试成为了他们必须面对的挑战。在这个过程中,选择合适的面试工具可以大大提高求职成功率。今天,我要向大家推荐一款专为计算机专业毕业生设计的面试工具——白瓜面试。 为什…...

数字IC开发:布局布线
数字IC开发:布局布线 前端经过DFT,综合后输出网表文件给后端,由后端通过布局布线,将网表转换为GDSII文件;网表文件只包含单元器件及其连接等信息,GDS文件则包含其物理位置,具体的走线࿱…...

高空作业未系安全带监测系统 安全带穿戴识别预警系统
在各类高空作业场景中,安全带是保障作业人员生命安全的关键防线。然而,由于人为疏忽或其他原因,作业人员未正确系挂安全带的情况时有发生,这给高空作业带来了巨大的安全隐患。为有效解决这一问题,高空作业未系安全带监…...

k8s的配置和存储(ConfigMap、Secret、Hostpath、EmptyDir以及NFS的服务使用)
ConfigMap 简介 在 Kubernetes 中,ConfigMap 是一种用于存储非敏感信息的 Kubernetes 对象。它用于存储配置数据,如键值对、整个配置文件或 JSON 数据等。ConfigMap 通常用于容器镜像中的配置文件、命令行参数和环境变量等。 ConfigMap 可以通过三种方…...

JS轮播图实现自动轮播、悬浮停止轮播、点击切换,下方指示器与图片联动效果
代码: <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><s…...

使用 Kafka 和 MinIO 实现人工智能数据工作流
MinIO Enterprise Object Store 是用于创建和执行复杂数据工作流的基础组件。此事件驱动功能的核心是使用 Kafka 的 MinIO 存储桶通知。MinIO Enterprise Object Store 为所有 HTTP 请求(如 PUT、POST、COPY、DELETE、GET、HEAD 和 CompleteMultipartUpload…...

力扣题86~90
题86(中等): python代码 # Definition for singly-linked list. # class ListNode: # def __init__(self, val0, nextNone): # self.val val # self.next next class Solution:def partition(self, head: Optional[Li…...

【JavaEE】【多线程】定时器
目录 一、定时器简介1.1 Timer类1.2 使用案例 二、实现简易定时器2.1 MyTimerTask类2.2 实现schedule方法2.3 构造方法2.4 总代码2.5 测试 一、定时器简介 定时器:就相当于一个闹钟,当我们定的时间到了,那么就执行一些逻辑。 1.1 Timer类 …...

CI/CD 的原理
一、CI/CD 的概念 CI/CD是一种软件开发流程,旨在通过自动化和持续的集成、测试和交付实现高质量的软件产品。 CI(Continuous Integration)持续集成 目前主流的开发方式是协同开发,即多位开发人员同事处理同意应用不同模块或功能。 如果企业在同一时间将…...

进一步认识ICMP协议
在日常工作中,我们经常需要判断网络是否连通,相信大家使用较多的命令就是 ping啦。ping命令是基于 ICMP 协议来实现的,那么什么是 ICMP 协议呢?ping命令又是如何基于 ICMP 实现的呢? 今天这篇文章,我们就来…...

NUUO网络视频录像机upload.php任意文件上传漏洞复现
文章目录 免责声明漏洞描述搜索语法漏洞复现nuclei修复建议 免责声明 本文章仅供学习与交流,请勿用于非法用途,均由使用者本人负责,文章作者不为此承担任何责任 漏洞描述 NUUO网络视频录像机(Network Video Recorder࿰…...
WebGL 3D基础
1. 归一化函数 对一个向量进行归一化处理,即调整向量的模长(长度)为1,同时保持其方向不变。 // 归一化函数 function normalized(arr) {let sum 0;for (let i 0; i < arr.length; i) {sum arr[i] * arr[i];}const middle …...

Docker 部署MongoDb
1. 编写docker-compose.conf 文件 version: 3 services:mongo:image: mongo:latest # 指定 MongoDB 版本,确保 > 3.6container_name: mongo-replicarestart: alwayscommand: ["mongod", "--replSet", "rs0", "--oplogSize&…...
【Hadoop】hadoop的路径分不清?HDFS路径与本地文件系统路径的区别
/usr/local/hadoop /user/hadoop /home/hadoop/ 这里有些路径名很相似,帮我区分? 在Hadoop生态系统中,理解文件存储的位置对于有效管理数据至关重要。Hadoop分布式文件系统(HDFS)提供了一个高度可靠的存储系统…...
倪师学习笔记-天纪-易经八卦
一、简介 卦代表事情,爻代表时机,三爻为一卦八卦对应的天相,六十四卦对应人间事 二、八卦性 1、乾 天父亲向下看,无所求,雄心万丈始终如一,贞,坚心,专心至刚,天威&am…...

自动驾驶性能分析时,非常有用的两个信息
自动驾驶的关键路径如下,传感器的数据发送给感知模块;感知模块根据传感器数据来确定车辆所处的环境,比如前方有没有障碍物,是不是和车道线保持着适当的距离等;感知处理之后的数据传递给规控模块,规控根据车…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...

【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...

vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...

【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

MFC 抛体运动模拟:常见问题解决与界面美化
在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...