NPU的性能参数分解

注意相同 FLOPs 的两个模型其运行速度是会相差很多的,因为影响模型运行速度的两个重要因素只通过 FLOPs 是考虑不到的,比如 MAC(Memory Access Cost)和网络并行度;二是具有相同 FLOPs 的模型在不同的平台上可能运行速度不一样。

==模型参数量的分析是为了了解内存占用情况,内存带宽其实比 FLOPs 更重要。目前的计算机结构下,单次内存访问比单次运算慢得多的多。==对每一层网络,端侧设备需要:

从主内存中读取输入向量 / feature map;
从主内存中读取权重并计算点积;
将输出向量或 feature map 写回主内存。

双精度、单精度和半精度

CPU/GPU 的浮点计算能力得区分不同精度的浮点数,分为双精度 FP64、单精度 FP32 和半精度 FP16。因为采用不同位数的浮点数的表达精度不一样,所以造成的计算误差也不一样,对于需要处理的数字范围大而且需要精确计算的科学计算来说,就要求采用双精度浮点数,而对于常见的多媒体和图形处理计算,32 位的单精度浮点计算已经足够了,对于要求精度更低的机器学习等一些应用来说,半精度 16 位浮点数就可以甚至 8 位浮点数就已经够用了。 对于浮点计算来说, CPU 可以同时支持不同精度的浮点运算,但在 GPU 里针对单精度和双精度就需要各自独立的计算单元。

浮点计算能力

FLOPS:每秒浮点运算次数,每秒所执行的浮点运算次数,浮点运算包括了所有涉及小数的运算,比整数运算更费时间。下面几个是表示浮点运算能力的单位。我们一般常用 TFLOPS(Tops) 作为衡量 NPU/GPU 性能/算力的指标,比如海思 3519AV100 芯片的算力为 1.7Tops 神经网络运算性能。

MFLOPS(megaFLOPS):等于每秒一佰万(=10^6)次的浮点运算。
GFLOPS(gigaFLOPS):等于每秒拾亿(=10^9)次的浮点运算。
TFLOPS(teraFLOPS):等于每秒万亿(=10^12)次的浮点运算。
PFLOPS(petaFLOPS):等于每秒千万亿(=10^15)次的浮点运算。
EFLOPS(exaFLOPS):等于每秒百亿亿(=10^18)次的浮点运算。

硬件利用率(Utilization)

在这种情况下,利用率(Utilization)是可以有效地用于实际工作负载的芯片的原始计算能力的百分比。深度学习和神经网络使用相对数量较少的计算原语(computational primitives),而这些数量很少的计算原语却占用了大部分计算时间。矩阵乘法(MM)和转置是基本操作。MM 由乘法累加(MAC)操作组成。OPs/s(每秒完成操作的数量)指标通过每秒可以完成多少个 MAC(每次乘法和累加各被认为是 1 个 operation,因此 MAC 实际上是 2 个 OP)得到。所以我们可以将利用率定义为实际使用的运算能力和原始运算能力的比值:

### NPU 的执行流程和工作机制 #### 执行流程概述 NPU 是一种专门用于加速神经网络计算的硬件设备,其主要功能是对深度学习中的矩阵运算、卷积操作以及激活函数等任务进行优化。以下是 NPU 的典型执行流程: 1. **数据加载** 输入数据(如图像像素值或其他传感器输入)被传输到 NPU 中的存储模块或缓存区域。这一阶段可能涉及从外部内存读取数据并将其分配给内部缓冲区[^2]。 2. **指令解析与调度** 控制单元接收来自主机 CPU 或其他控制器的任务请,并将这些任务分解成一系列低级指令。随后,控制逻辑会根据优先级安排资源分配并将具体命令发送至各个计算单元[^3]。 3. **矩阵/张量运算** 这一步骤构成了大部分实际计算工作。对于前向传播而言,主要是完成权重参数与输入特征之间的大规模乘积累加 (Multiply-Accumulate, MAC) 操作;而在反向传播期间,则需额外考虑梯度更新等问题。由于此类操作占据整个推断过程的主要时间开销,因此如何高效实现成为衡量一款优秀 NPU 设计的关键指标之一[^1]。 4. **非线性变换应用** 完成了基本算术之后紧接着便是施加各种类型的激活函数——例如 ReLU(Rectified Linear Unit),sigmoid 和 tanh ——它们赋予模型表达复杂模式的能力。值得注意的是某些高级版本甚至允许直接内置特定形式的近似方法从而进一步简化电路结构降低功耗水平。 5. **结果输出** 经过上述几个环节处理完毕后的最终预测值或者中间状态会被写回到全局共享空间供后续层调用直至得出完整结论为止。与此同时部分产品还支持实时反馈机制以便动态调整超参设定达到更优效果。 #### 工作机制分析 为了更好地理解以上提到的各项活动背后隐藏的技术细节下面列举了一些重要方面来阐述其运作机理: - **高度专业化架构**: 不同于通用型微处理器(Central Processing Units), NPUs采用了一种更加贴近目标应用场景特点的设计思路即围绕着密集型数值计算构建起整套体系框架其中包括但不限于大量平行排列的小规模ALU(算数逻辑单元)阵列配合紧密耦合的数据通路布局等等措施共同作用下使得单位时间内所能达成的有效浮点运算次数大大增加同时维持较低能耗表现. - **流水线技术运用**: 类似于现代超标量计算机那样,NPUS也广泛采用了多级管道划分策略即将原本连续不间断的整体作业拆解成分散独立却又相互衔接良好的子任务序列进而充分利用闲置时间段提高吞吐率减少延迟现象发生概率. - **本地化储存优势发挥**: 为了避免频繁访问远端DRAM带来的巨大带宽压力损失风险,许多新型号都配备了容量可观且速度极快的片上SRAM作为临时寄存场所这样既能加快局部变量交换频率又能有效缓解总线上争抢状况出现几率. ```python def npu_computation(input_data, weights, biases): """ A simplified simulation of an NPU's computation process. Args: input_data (numpy.ndarray): Input tensor to the neural network layer. weights (numpy.ndarray): Weight matrix associated with this layer. biases (numpy.ndarray): Bias vector added after multiplication. Returns: numpy.ndarray: Output from applying activation function on computed values. """ import numpy as np # Step 1 & 2: Data loading and instruction scheduling are abstracted here. intermediate_result = np.dot(weights.T, input_data) # Step 3: Matrix/tensor operations including dot product calculation. accumulated_values = intermediate_result + biases[:, None] # Step 4: Non-linear transformation via ReLU approximation. activated_output = np.maximum(0., accumulated_values) return activated_output ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值