首页 > 其他分享 >CPU能否用于推理

CPU能否用于推理

时间:2023-12-12 14:07:16浏览次数:28  
标签:可以 AMX 能否 GPU 推理 CPU 单元

大家也看到了最近发生的新闻,A800和H800都不让在国内卖了,甚至4090都有可能被禁(看趋势应该会被放开,对于纯消费卡的限制也确实无厘头,虽然4090用来训练,调整好超参是真不错)

       晚上和朋友吃饭,席间一个朋友问起,为什么不能用CPU来跑大模型呢,如果训练不行的话,难道推理也不可以吗?其实这是一个很好的问题,但是和训练和推理其实没啥关系,这问题如果延伸下去是要触及到CPU和GPU计算的本质

        直接上图

CPU能否用于推理_深度学习

       然后说结论:

  •        CPU中缓存单元大概占50%,控制单元25%,运算单元25%
  •         GPU中缓存单元大概占5%,控制单元5%,运算单元90%
          其实是需求决定了架构,CPU为了完成复杂的任务调度,多进程/线程协同所以它必须要有更大的缓存和控制单元来追求上下文,GPU不需要,一个字就是"算", 超强的并行能力数千甚至数万核,别的其实它也干不了
          那深度学习为什么需要GPU,先说结论,目前所有的深度学习求解,并不是数学问题(完美解),而是一个近似值的求解过程,通过梯度下降和反向传播不断的优化整个模型特征的权重值来得到近乎完美的模型(永远也不可能完美)。
           所有的深度学习模型表达其实都可以用简单的线性回归来表示,无论RNN还是Transformer,其实都是变体,我们看一个简单的式子:
            
  • CPU能否用于推理_数据_02

      相当于左右的这一层的每个要和右边的这一层的所有节点全部进行一次乘法,可以写成:

CPU能否用于推理_数据_03

       实际上深度学习的计算就这么简单,说白了就是矩阵之间乘法,每次一个矩阵乘法实际上等价于input向量和parameter之间就完成了一次加法一次乘法,记作一次MAC, 也可以记作2次FLOPs操作。

       其实看到这里细心的读者就会发现,在matmul(A,B)的情况下,所有的操作是独立的,每个计算都不互相干预,也不需要什么上下文,所以我们可以用GPU的超多核的并行能力,来对矩阵计算进行加速,当然开启TensorCore和其他一些feature,计算会更加的迅速。

        回到这篇文章问题的本身,CPU适不适合做推理,其实早期CPU的并行能力上无法和GPU相比,目前我理解的CPU最大的core数量,是Intel Sierra Forest 可以288core(没上市),但是如果开启了AMX的能力(单AMX单元与单AVX单元的每时钟周期的算力提高了16倍),这个问题就出现了变化;一个cycle里开启AMX指令集的CPU可以进行2048次int8的计算,假设 boost能到3Ghz左右,也就是1秒钟它可以操作3*10^9次运算,他的一个核可以实现1秒钟理论上可以 计算6144*10^9 FLOPs, 等于6TFOPs, 那么288核可以实现1728TFLOPs 的int8能力, 那么一个普通的推理卡A10大概得int8算力是多少呢?



CPU能否用于推理_深度学习_04

      Tesnor Core的情况下是500,开启TensorRT会更快,从简单的对比数据来看,1728>500, 我们的前提是288核可以实现支持每核3Ghz boost,且开启AMX的情况下,目前市面上大多数的Cloud IaaS不支持开启AMX的指令集,那么这个每cycle处理矩阵的数值就要从2048变成512(AVX512的SIMD),就剩下432TFLOPs了,但是Cloud PaaS的AI服务,我了解到很多PaaS推理是用了AMX的能力的。

      除了算力我们也需要考虑一下性价比,目前市面上没有Sierra Forest的机型可以参考,这里找了一个96core的机型(价格仅供参考就是看个比例而已)一小时6美金,288core的话简单乘以3,大概18美金一小时。

CPU能否用于推理_深度学习_05

       A10 需要多少钱呢?一小时要4美金

CPU能否用于推理_数据_06

      如果纯从数值上来看TFLOPs能力3.5倍,价格上是4.5倍, 但是别忘了内存,A10只有24G内存,而即便不乘以3,CPU的对照组也有将近700G的内存,我们知道在推理中加速的一个最简单的方法就是cacheKV对,你的内存越大,越可以cache住更多的KV对,相对来讲快速命中的几率也就越大,典型的空间换算力业务, 此外我内存大意味着有更大batchsize,可以通过调整超参获得更好的吞吐和性能的最优比。

      所以结论是什么?

      光看字面的TLOPs数据似乎即使用CPU来进行推理也不是很有优势,是不是可以说在深度学习的情况下,CPU就没用了呢?这个当然不是,因为GPU所需要的训练和推理数据和GPU所在的节点的调度逻辑都要由CPU来执行,另外很多GPU服务器,尤其是云服务器,是配置了很多的CPU资源的,如果不涉及到训练数据进GPU之前的预处理,其实在很多时间里是空载状态,在这个场景下为了提升整体服务器的算力水平,把它榨干,是可以考虑有些推理任务放置在CPU上运行,做混合推理的,增加并行度也意味着提升整体的处理速度;另外一个很重要的应用就是Agent,我们知道当模型尤其小型模型在本来就容易产生幻觉的情况下,quantized以后,比如int8,就更容易产生幻觉和无法很好的驾驭下游任务,这个时候我们会采用RAG和Agent等操作,通过外部tools和内部逻辑去解决这些问题,进而精确的匹配下游任务,这些复杂的任务调度,就是GPU无法胜任的了,全部需要CPU来进行处理;本文着力点其实在推理,实际上GPU训练的领域CPU的大内存有很大的作用,这个先卖个关子,以后讲。

       从事务发展的角度上,可以预见CPU的厂商一定会更加重视CPU在AI方面的能力,甚至消费级的CPU都要和NPU有整合,大家可以搜一下Meteor Lake,其实Apple的A17已经在这么做了,所以不远的将来,云端和消费端的AI CPU或者CPU携NPU会对GPU的市场发出强有力的挑战。

       觉得写的还行的读者大爷请别吝惜你的赞和转发,谢谢

标签:可以,AMX,能否,GPU,推理,CPU,单元
From: https://blog.51cto.com/u_16432251/8786336

相关文章

  • CPU 空闲时间管理【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/admin-guide/pm/cpuidle.htmlCPU空闲时间管理版权©2018IntelCorporation作者[email protected]概念现代处理器通常能够进入一种状态,其中程序的执行被暂停,属于它的指令不会从内存中获取或执行。这......
  • 判断推理-逻辑判断(论证类-一般质疑)
    一般质疑题型介绍归因类之外的质疑题目,均称为一般质疑,即非谈论因果关系。题目形式一般由论据、结论两部分组成,隐含有论证过程,其中论据应正确、充分,论证过程应有效、严谨,结论应合理。题型分类一般质疑可分为无论据有结论、有论据有结论、严谨逻辑关系三类。提问方......
  • CPU空闲时间管理 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/driver-api/pm/cpuidle.htmlCPU空闲时间管理版权©2019IntelCorporation作者[email protected]空闲时间管理子系统系统中的每个逻辑CPU(看起来获取和执行指令的实体:如果存在的话,硬件线程或处理器......
  • CPU调度器实现提示:针对特定体系结构代码【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/scheduler/sched-arch.html《CPU调度器实现提示:针对特定体系结构代码》NickPiggin,2005上下文切换运行队列锁定默认情况下,调用switch_to体系结构函数时会锁定运行队列。除非switch_to需要获取运行队列锁,否则通常不会出现问题。这通......
  • webrtc应用上线cpu偏高的问题排查
    现象 如上图,上线后服务全量使用的cpu统计明显增高,大概在50%左右. 排查比对上一稳定版本和本次版本代码diff,无异常比对依赖lib版本,无异常使用perf和FlameGraph生成火焰图比对两个版本差异.发现几个问题:有些调用栈不同,缺少一些中间函数调用栈;新版本在音频......
  • 使用PyTorch II的新特性加快LLM推理速度
    Pytorch团队提出了一种纯粹通过PyTorch新特性在的自下而上的优化LLM方法,包括:Torch.compile:PyTorch模型的编译器GPU量化:通过降低精度操作来加速模型推测解码:使用一个小的“草稿”模型来加速llm来预测一个大的“目标”模型的输出张量并行:通过在多个设备上运行模型来加速模......
  • 判断推理-逻辑判断(论证类-归因论证)
    归因论证介绍观察者对他人的行为过程或自己的行为过程所进行的因果解释和推论。题目形式一般由既成事实和原因分析两部分组成,有些题目会省略原因分析的过程,直接给出结论或建议。一、对比实验归因(难点)常见形式完整叙述对比实验过程,并根据实验结果给出原因分析、结论......
  • percpu 读写信号量 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/locking/percpu-rw-semaphore.html"Percpurwsemaphores"是一种新的读写信号量设计,针对读取操作进行了优化。传统的读写信号量存在一个问题,即当多个核心获取读取锁时,包含信号量的缓存行在各个核心的L1缓存之间反复传输,导致性能下降......
  • System 2 Attention:可以提高不同LLM问题的推理能力
    推理正在成为大型语言模型(llm)关注的下一个主要领域。尽管llm拥有先进的能力,但大多数llm经常被简单的错误绊倒,显示出他们在推理方面的局限性。这些模型可能会被上下文中的不相关细节所误导,或者受到输入提示中的偏差的影响。而后一种倾向被称为谄媚,也就是说模型会更偏向与输入一致......
  • CPUSETS 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/admin-guide/cgroup-v1/cpusets.htmlCPUSETS1.Cpusets1.1什么是cpusets?Cpusets提供了一种机制,用于将一组CPU和内存节点分配给一组任务。在本文档中,“内存节点”指的是包含内存的在线节点。Cpusets限制了任务的CPU和内存放置......