首页 > 其他分享 >2080 Ti就能跑70B大模型,上交大新框架让LLM推理增速11倍

2080 Ti就能跑70B大模型,上交大新框架让LLM推理增速11倍

时间:2023-12-28 14:32:38浏览次数:24  
标签:11 2080 CPU LLM GPU PowerInfer 推理 模型 神经元


原本需要一张16万元的80G A100干的活,现在只需要一张不到2万元的24G 4090就够了!

上海交大IPADS实验室推出的开源推理框架PowerInfer,让大模型推理速度加快了11倍。

而且不用量化,就用FP16精度,也能让40B模型在个人电脑上运行;如果加入量化,2080 Ti也能流畅运行70B模型。

2080 Ti就能跑70B大模型,上交大新框架让LLM推理增速11倍_职场和发展

结合大模型的独特特征,通过CPU与GPU间的混合计算,PowerInfer能够在显存有限的个人电脑上实现快速推理。

相比于llama.cpp,PowerInfer实现了高达11倍的加速,让40B模型也能在个人电脑上一秒能输出十个token。

我们最熟悉的ChatGPT,一方面有时会因为访问量过大而宕机,另一方面也存在数据安全问题。

2080 Ti就能跑70B大模型,上交大新框架让LLM推理增速11倍_人工智能_02

开源模型能较好地解决这两个问题,但如果没有高性能的显卡,运行速度往往十分感人:

2080 Ti就能跑70B大模型,上交大新框架让LLM推理增速11倍_High_03

而PowerInfer的出现,刚好解决了这个痛点。

2080 Ti就能跑70B大模型,上交大新框架让LLM推理增速11倍_High_04

PowerInfer一经发布就引起热烈反响,不到24小时就获得了500+星标,其中还有一颗来自llama.cpp的作者Gerganov。

2080 Ti就能跑70B大模型,上交大新框架让LLM推理增速11倍_个人电脑_05

目前,PowerInfer的源码和论文均已公开,下面就一起看看它的加速效果究竟有多强。

推理速度最高11倍

在搭载x86 CPU和NVIDIA GPU的消费级硬件平台上,PowerInfer以参数量从7B到175B的一系列LLM模型为基准,对PowerInfer的端到端推理速度进行了测试,并和同平台上性能最好的推理框架llama.cpp进行了对比。

对于FP16精度的模型,在搭载了13代Intel Core i9和单张RTX 4090的高端PC(PC-High)上,PowerInfer平均实现了7.23倍的速度提升,其中在Falcon 40B上实现了高达11.69倍的速度提升。

在所有测试用例上,PowerInfer平均达到了8.32 tokens/s,在OPT 30B和Falcon 40B上最高分别达到16.06 tokens/s和12.94 tokens/s。

借助PowerInfer,当今的消费级平台可以流畅运行30-40B级别的LLM,并以可以接受的速度运行70B级别的LLM。

△ PowerInfer在不同模型中不同输出长度下平均生成token速度测试图,纵坐标为加速比,每根柱状图上标注的数字代表了每秒钟能够生成的token数量

模型量化是端侧LLM推理非常常用的技术,PowerInfer也支持了INT4量化模型的推理。

PowerInfer分别在高端PC(PC-High)和搭载单张RTX 2080Ti的中低端PC(PC-Low)上测试了一系列INT4量化模型的推理速度。

在PC-High上,PowerInfer能够高速运行40-70B规模的模型,最高达到了29.09 tokens/s的推理速度,并且实现了平均2.89倍,最高4.28倍的速度提升。

同时,在消费级硬件上运行OPT-175B这种规模的模型也成为可能。

在PC-Low这种中低端PC上,PowerInfer可以流畅运行30-70B规模的模型,并实现平均5.01倍,最高8.00倍的速度提升,这主要得益于INT4量化后模型大部分热神经元得以放置在显存中。

2080 Ti就能跑70B大模型,上交大新框架让LLM推理增速11倍_Falcon_06

△ PowerInfer在INT4量化模型中的推理速度,纵坐标为加速比,每根柱状图上标注的数字代表了每秒钟能够生成的token数量

最后,PowerInfer对比了PC-High上运行PowerInfer相比于云端顶级计算卡A100运行SOTA框架vLLM的端到端推理速度,测试模型为FP16精度的OPT-30B和Falcon-40B(ReLU)。

当输入长度为64时,PowerInfer对A100的速度差距从93%-94%缩小到了28%-29%;在输入长度为1的纯生成场景中,这一差距会被进一步缩小到低至18%。

这代表着PowerInfer借助稀疏激活和CPU/GPU混合推理,极大地弥合了消费级显卡到顶尖服务端计算卡的推理速度差距。

2080 Ti就能跑70B大模型,上交大新框架让LLM推理增速11倍_Falcon_07

△PowerInfer在4090上与vLLM在A100的性能对比

那么,PowerInfer是如何实现消费级硬件上的高速推理的呢?

充分利用模型和硬件特点

PowerInfer实现高速推理的秘诀,在于充分利用了稠密模型存在的高局部性的稀疏激活,并与CPU和GPU的运算特点进行了充分结合。

何谓“稀疏激活”?

最近Mixtral MoE大模型引爆了整个AI圈,稀疏模型重新进入大家的视野。

一个有趣的事实是:像OPT、LLaMA(ReLU)这样被视为稠密模型的LLM,同样存在稀疏激活的特征。

什么是稠密模型的稀疏激活呢?

和MoE模型中一个输入token只需要激活FFN layer其中一个或者两个专家模块类似,以OPT模型的稠密FFN层为例,只需要激活一小部分(实验显示约10%)神经元即可保证输出的正确性。

其他的神经元虽然参与了计算,但并没有对输出产生明显贡献。

换句话说,稠密模型中的每一个神经元都是一个专家

2080 Ti就能跑70B大模型,上交大新框架让LLM推理增速11倍_High_08

△ 左图来自Alexander Clark论文(aRXiv编号:2101.03961)

MoE模型可以在专家FFN层之前通过路由模块将输入分发给其中一个或者两个专家进行计算,那么稠密模型中的稀疏激活又该如何路由或者在计算之前就知道哪些专家神经元会对结果产生贡献呢?

答案是为稠密模型增加路由预测模块

在模型开始服务前,PowerInfer首先会对模型进行离线分析,通过将模型在通用数据集中进行推理获取每一层输入与激活神经元之间的对应关系,进而为稠密模型每一层训练一个小的预测路由模块来预测每一个输入会激活的神经元,只计算路由激活的神经元(专家)。

在多个下游任务的测试中,PowerInfer的路由模块几乎没有引入额外的精度损失。

稀疏激活带来的推理局部性

稀疏激活的另一个有趣事实是,尽管对于不同的输入token,激活的神经元分布存在差异;但如果在足够多的数据上进行推理,并将每次激活的分布叠加,PowerInfer发现少部分神经元总体上被激活的概率更高。

也就是说,统计意义上大模型神经元的激活符合Power Law分布(Power Law分布是一种统计规律,表示少数事件的发生频率远高于大量其他事件)。

如下图(a)所示,对于OPT-30B和LLaMA(ReGLU)-70B两个模型里的某一层FFN网络,统计意义上26%和43%的神经元分别贡献了80%的激活。

而在整个模型的尺度上,如下图(b)所示,17%和26%的神经元贡献了80%的激活。

2080 Ti就能跑70B大模型,上交大新框架让LLM推理增速11倍_职场和发展_09

因此,当只考虑对最终激活有贡献的运算时,LLM具有推理局部性:对权重的访问倾向于集中在一定的区域,而不是均匀分布在所有的神经元上。

在推理运算中它显现为程序的局部性:对内存空间的访问倾向于集中在一定的区域,而不是均匀分布在整个内存空间。

在常见的个人电脑中,GPU具有较少的显存和更强的计算能力,适合处理频繁访问且计算强度高的任务;而CPU拥有更大的内存容量但相对较弱的算力,适合处理少量访问且计算强度低的任务。

因此,理想情况下,一小部分经常访问的神经元应该存储在显存中,相比之下更大、访问频率更低的神经元更适合存储在内存中,由CPU进行计算。

这启发了PowerInfer基于局部性特征进行CPU/GPU混合推理系统的设计。

CPU/GPU混合推理设计

根据上述神经元的Power Law和由此产生的局部性,PowerInfer通过提前静态分析每一个神经元的冷热性,将少量的热神经元加载在GPU显存上,剩余的冷神经元加载到CPU的内存中。

以神经元为粒度的模型混合加载,会出现一层内有些神经元在GPU上,有些神经元在CPU上。

为此,PowerInfer设计了细粒度的CPU/GPU混合推理引擎。

以下图为例,对于某一层的输入,PowerInfer会首先预测该输入会激活神经元为3,4,5。

然后CPU、GPU会分别根据预测信息,执行位于其内存中的神经元的计算。

具体以下图的例子来说,CPU上会计算第四个神经元,GPU上会计算第三个、第五个神经元,然后再GPU上对两边的计算结果进行合并。

2080 Ti就能跑70B大模型,上交大新框架让LLM推理增速11倍_职场和发展_10

△PowerInfer混合计算的方式

PowerInfer的整体架构

总体而言,PowerInfer利用基于稠密模型的稀疏激活及其引入的局部性特性,开发出了一种创新的CPU/GPU混合推理引擎。

在接入一个大型语言模型(LLM)时,PowerInfer首先在离线阶段对模型的预测路由模块进行训练,并深入分析模型的激活特征。

同时,结合目标硬件的带宽和容量等关键信息,计算出最佳的神经元放置策略。

在此基础上,PowerInfer会根据这些计算结果,将神经元优化地分布在内存或显存中。

在在线推理阶段,CPU和GPU分别处理存储在其内存中的神经元,随后在GPU上对这些独立计算的结果进行高效合并。

2080 Ti就能跑70B大模型,上交大新框架让LLM推理增速11倍_人工智能_11

△ PowerInfer整体架构图

总结与展望

对于端侧用户而言,PowerInfer的高效推理框架打开了新的可能性。

首先,它使得个人电脑用户能够在本地运行先进的大型语言模型,而无需昂贵的专业硬件。

这不仅促进了人工智能应用的普及化,也为爱好者、研究人员和小型企业提供了前所未有的机会。

在云端部署方面,PowerInfer同样存在巨大的潜力。

现有的云端CPU也有强大的AMX计算单元支持,通过利用CPU、GPU间的异构特征,可以乐观地认为PowerInfer能够使用更少的高端计算卡,做到更高的服务吞吐。

论文地址:
https://ipads.se.sjtu.edu.cn/_media/publications/powerinfer-20231219.pdf

标签:11,2080,CPU,LLM,GPU,PowerInfer,推理,模型,神经元
From: https://blog.51cto.com/u_13046751/9014816

相关文章

  • FX110网:西班牙对两家未经授权的外汇交易商发出警告
    2023年12月26日,西班牙国家证券市场委员会(西班牙语:ComisiónNacionaldelMercadodeValores),即CNMV,警告了2家未经授权的外汇交易商。根据《证券市场法》第17条第二款(由10月23日第4/2015号皇家法令批准的重订文本),西班牙国家证券市场委员会(ComisiónNacionaldelMercadodeVal......
  • 11.mem统计
     各指标解析:VSS:衡量虚拟内存大小无太大用处,无法知道分配的物理内存大小RSS:各进程的RSS相加,会超过系统内存使用量PSS:各进程的PSS之和,就是系统的内存使用量USS::是PSS中自己的部分,不包含任何共享的部分内存占用大小规律:VSS>=RSS>=PSS>=USSprocstats:查看3小时内的m内存使用......
  • 11.27每日总结
    今日完成所有大作业实验  实验一:百度机器翻译SDK实验一、实验要求实验一:百度机器翻译SDK实验(2023.11.29日完成)  任务一:下载配置百度翻译Java相关库及环境(占10%)。    任务二:了解百度翻译相关功能并进行总结,包括文本翻译-通用版和文本翻译-词典版(占20%)。    ......
  • 12.11
    什么是字节码?采用字节码的好处是什么?所谓的字节码,就是Java程序经过编译之后产生的.class文件,字节码能够被虚拟机识别,从而实现Java程序的跨平台性。Java程序从源代码到运行主要有三步:编译:将源代码(.java)编译成虚拟机可以识别理解的字节码文件(.class);解释:虚拟机执行字节码文......
  • 11.27
    静态内部类(static修饰类的话只能修饰内部类):静态内部类与非静态内部类之间存在一个最大的区别:非静态内部类在编译完成之后会隐含地保存着一个引用,该引用是指向创建它的外围类,但是静态内部类却没有。没有这个引用就意味着:1.它的创建是不需要依赖外围类的创建。2.它不能使用任......
  • 11.24
    static关键字:静态变量:使用static修饰的成员变量叫做静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。s......
  • 11.29
    final关键字:final关键字,意思是最终的、不可修改的,最见不得变化,用来修饰类、方法和变量,具有以下特点:修饰类:类不能继承,final类中的所有成员方法都会被隐式的指定为final方法;修饰符变量:该变量为常量,,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类......
  • 11.30
    封装封装指隐藏对象的状态信息(属性),不允许外部对象直接访问对象的内部信息(private实现)。但是可以提供一些可以被外界访问的方法来操作属性。将类中成员变量private,提供public的get和set方法来控制属性的存取动作,以保证对私有属性操作的安全性:继承继承extends:多个类中存在相同属......
  • win11,win10使用小米随身wifi
    普通下载官方软件安装包安装后一定会出现无法创建wifi的情况,甚至连有线网络都上不了了;这是因为官方没有维护小米随身wifi对新系统的适配了,我也是踩了不少坑才在win11上让小米随身wifi重换生机的。下面由我来一步步告诉你怎么弄。1.下载的软件包用解压软件打开(我用的是7-zip,你也可......
  • 11 ADC模块FEP-DAQ422X采集显示波形方案
    软件版本:VIVADO2021.1操作系统:WIN1064bit硬件平台:适用XILINXA7/K7/Z7/ZU/KU系列FPGA登录米联客(MiLianKe)FPGA社区-www.uisrc.com观看免费视频课程、在线答疑解惑!1概述本方案通过把DAQ422X采集到的数据,通过前面已经完成的示波器显示驱动进行在屏幕上显示ADC采集的波形数据......