AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


端侧大模型推理在NPU和CPU的对比
发布日期:2024-08-03 22:44:53 浏览次数: 1675



一、CPU和NPU推理涉及到的关键知识
这部分是属于基础知识,如果了解可以直接跳过到第二部分。
计算能力
FLOPS (Floating Point Operations Per Second):测量计算设备每秒执行浮点运算的能力。例如,60 GFLOPS 表示每秒可以执行60 × 10^9次浮点运算。
TOPs (Tera Operations Per Second):测量计算设备每秒执行操作的能力,通常用于NPU和其他加速器。例如,16 TOPs 表示每秒可以执行16 × 10^12次操作。
DMIPS (Dhrystone MIPS):测量CPU整数运算性能的指标,主要用于反映CPU在执行Dhrystone基准测试中的性能。
DMIPS与FLOPS之间没有直接的转换关系,因为它们测量的是不同类型的运算性能。通常,假设1 DMIPS ≈ 1 FLOPS 或1 DMIPS ≈ 0.5 FLOPS是简化计算的常见方法,但实际情况依赖于具体CPU架构。
性能相关
内存带宽:决定了数据在内存和处理单元之间传输的速度。例如,LPDDR5, 64-bit @ 6400 MT/s ≈ 51.2 GB/s 表示每秒可以传输51.2 GB的数据。
数据传输时间:数据传输时间 = 数据量 / 内存带宽。例如,传输1.4 GB数据需要的时间 = 1.4 GB / 51.2 GB/s ≈ 0.027秒。
并行处理:CPU和NPU通常具有并行处理能力,可以同时处理多个任务。例如,4核CPU可以并行处理4个任务。
缓存:现代CPU和NPU通常有缓存用于存储频繁访问的数据,以减少内存访问延迟。    
模型架构:不同的模型架构(如Transformer、RNN等)对计算量和内存访问模式有不同的要求。例如,Transformer模型通常需要大量的矩阵乘法操作。


二、CPU和NPU推理性能
接下来我们通过数学计算的方式来推演端侧大模型分别在CPU和NPU的推理性能,为了方便计算,我们做基于以下背景进行验证:
1.模型参数: 2.8B(2.8 × 10^9)参数
2.输入长度:  250 tokens
3.模型架构: Llama
4. NPU性能: 16 TOPs(16 × 10^12 操作/秒)
5. CPU性能: 4核,每核15K DMIPS
6. 内存带宽: LPDDR5 64-bit @ 6400 MT/s ≈ 51.2 GB/s 
7.每个参数4 bit
8.运算形式主要是矩阵运算
1. CPU性能计算
步骤1: 计算每个token的处理总运算量
模型参数量:2.8B(2.8 × 10^9)个参数
每个参数的运算量:假设每个参数需要2次基本操作(1次乘法和1次加法)
公式                 
总运算量= 2.8*10^9(参数)* 2 (操作/参数) = 5.6* 10^9 (操作)
输入长度:250 tokens
公式                  
总计算量 = 5.6* 10^9 (操作)* 250 (tokens) = 1.4* 10^{12) (操作)
步骤2: 计算CPU的推理时间
CPU性能:每核15K DMIPS,4核,总计60K DMIPS    
假设1 DMIPS ≈ 1 FLOPS(为了简化计算)
公式                  
每秒计算能力= 60K* 10^6 (FLOPS) = 60* 10^9 (FLOPS)
计算时间:
公式                 
计算时间 =总计算量/每秒计算能力= (1.4* 10^12) / (60* 10^9) = 23.33 (秒)
         

 

2. 内存带宽对CPU的影响 
内存带宽:LPDDR5, 64-bit @ 6400 MT/s ≈ 51.2 GB/s
总数据传输量:         

 

公式                 
总数据传输量 = 1.4 GB(模型存储需求) + 8 KB(输入数据存储需求) ≈ 1.4 (GB)
数据传输时间:
Plain Text                  
数据传输时间 = 1.4 (GB)/51.2 (GB/s) ≈ 0.027 (秒)
综合计算时间和内存带宽影响:

公式                 
总推理时间 ≈ 23.33 (秒) + 0.027 (秒) ≈ 23.357 (秒)      

 


3. NPU性能计算
NPU性能:16 TOPs = 16 × 10^12 操作/秒
总运算量:1.4 × 10^12 运算
计算时间:
公式                
计算时间 = 总计算量/每秒计算能力= 1.4* 10^12/16* 10^12(秒) = 0.0875 (秒)
         

 

         

 

 4.结果总结
CPU的推理时间: 约23.357秒(综合计算时间和内存带宽影响)
NPU的推理时间: 约0.0875秒(内存带宽影响较小)
从这个结果来看,涉及大量计算的场景,NPU 的性能和成本明显优于 CPU。
三、可能的错误
上面的计算过程做了较多的计算模型简化,从计算严谨性的角度,这里把影响结果的前提假设梳理出来供大家参考。
1.DMIPS与FLOPS的转换假设:
DMIPS(Dhrystone MIPS)是测量整数运算性能的指标,通常不能直接转换为FLOPS(浮点运算性能)。
我们假设1 DMIPS ≈ 1 FLOPS 或1 DMIPS ≈ 0.5 FLOPS,这可能导致误差。实际情况依赖于具体CPU架构。
2.每个参数的运算量假设:
假设每个参数需要2次基本操作(1次乘法和1次加法),这可能低估了实际运算量。实际的深度学习计算涉及更多复杂操作。    
3.忽略了缓存和其他硬件优化:
现代CPU和NPU通常有缓存、流水线等硬件优化,可能显著影响实际推理时间。
4.内存带宽与计算时间的独立性假设:
内存带宽影响数据传输速度,假设数据传输和计算是独立的,实际中两者可能同时进行。
5.忽略了模型架构的复杂性:
实际模型架构(如Transformer、RNN等)会影响计算量和内存访问模式。
四、 One More Thing
从结果可以看到,对于计算量要求高的推理场景,NPU 更适合于 CPU。但在实际工程化过程中,并不会完全放弃 CPU 而只用 NPU。行业内更多的是将 NPU 集成到 SoC 上,让 NPU、CPU、GPU 共同完成复杂任务。在实际工程化过程中,甚至会选择将一部分推理任务放在 CPU 上进行。    



53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询