我们用一颗CPU跑AI,让轻薄本自己写代码、作图...
来源:电子工程专辑 发布时间:2023-10-16 分享至微信

这几个月,用笔记本PC跑生成式AI的话题挺热的——芯片厂商普遍都开始往电脑处理器里加专门的NPU单元了,OEM厂商也正为来年AIPC的宣传蓄势待发。


其实这几个月里,Intel不同业务部门的媒体活动,都或多或少把注意力放在AI。尤其CCG业务,从年初就开始科普没有独显的笔记本PC也能跑生成式AI。我们围绕这个话题也做过不少报道了。应该说,近几个月Intel在AI生态构建方面下的工夫还是相当大的。


过去我们只是见过Intel官方在这方面的演示,从未亲身上手。所以这次,我们自己用一台采用13代酷睿处理器、没有独显的轻薄本(联想Yoga14sPro)来真的跑一跑AI和生成式AI,看看效果和体验怎么样,探究AI在PC上的潜力。




PC跑生成式AI的理论基础


迄今仍有不少同学对于端侧PC,尤其轻薄笔记本跑生成式AI这样的大东西是不理解或没有概念的。所谓的“跑AI”,大方向上包含了AItraining(训练)和inference(推理)两件事。正儿八经、商用的大模型training一般是要放到服务器集群上去跑的——可以理解为打造一个模型的过程。


这个模型打造好了,就要拿来用了。比如用户要和ChatGPT对话,就是用ChatGPT模型的过程,即为inference。Inference也可能需要相当大的算力,所以我们常能听到GPU或AI芯片厂商面向服务器的“推理卡”——和ChatGPT对话的过程,就是在服务器集群上做inference。


但有不少小模型的inference其实并不需要多高的算力,很多端侧IoT嵌入式设备也强调AIinference特性——这也叫“跑AI”——此前Arm不是还在宣传Cortex-A55 Neon指令集增强的AI推理加速吗。我们说用PC来跑生成式AI,一般是指用PC对生成式模型做AIinference。当然了,“生成式AI”肯定不是低功耗IoT设备小模型的那种量级,所以一定的算力仍然是必须的。


不过像Intel这种厂商宣传PC能跑生成式AI,在我们看来,更多的倒不是去宣扬自家处理器性能有多彪悍,而是Intel为了实现在PC上跑生成式AI,在生态上所做的努力。



虽然近两年电脑CPU性能的确变得越来越彪悍,但作为一种通用处理器,CPU的并行算力还是无法与更专用的处理器相较的。


要在PC CPU上跑生成式AI模型(比如LLM大语言模型、StableDiffusion),需要经过模型转换、优化、量化等过程。比如前不久Intel宣传的BigDL-LLM库,就用于简化在端侧PC上的LLM大语言模型推理,尤其做量化,用Int4、Int3这样的低精度数据做inference,降低本地硬件资源需求。


那么Intel就需要花不少精力去做这些事,包括各种中间件、库、工具的搭建。这些事实上也成为Intel搭建自家AI生态的重要组成部分。显然让群众基础甚广的PC都跑上AI,自然是其AI生态可扩张的重要一步。



先聊聊笔记本上的酷睿i9-13900H


我们这次跑AI的主角就是联想Yoga14sPro2023款:酷睿i9-13900H的CPU,搭配32GBLPDDR5-6400RAM,和顶格速度的民用SSD固态。


这台笔记本就体态来看,无论如何都应该算是轻薄本(包括RAM不可更换,IO接口也不多)。其整机厚度与散热设计,就跟去年我们测过的全能本很不一样(下图)。散热孔在整台设备D面,也没有激进的进出风鳍片与格栅。C壳的圆润楔形收边,也让这款笔记本在视觉上看起来更薄。




但其实从性能释放的角度,Yoga14sPro又不大像轻薄本。为了喂饱酷睿i9-13900H这颗标压处理器,官配的电源有100W功率(比较贴心的是USB-C口100W供电)。今年Intel在游戏本上主推HX系列(H55)以后,轻薄本都普遍开始用H系列(H45)标压处理器了。而P系列和U系列这类低压和超低压CPU,今年就显得十分罕见。


为了让体验不要显得那么枯燥,除了联想Yoga14sPro,我们也拉来了去年体验过的采用12代酷睿的Dell灵越14 Plus,以及此前测试13代酷睿处理器时的台式机(还加了IntelArc独显)。


一方面可以看看,同样是跑AI,13代酷睿相比12代酷睿有没有进步;另一方面也给各位同学一个大致的概念——即PC跑AI和生成式AI,大约是什么样的量级水平。这三台设备的配置如下(注意,这次我们测试不会用上Dell灵越14Plus的GeForceRTX3050独显,因为生态上完全不一样):



*测试都基于设备的最强性能模式,如Yoga14sPro设定为“超能模式”,而灵越14Plus设定为“疾速”性能档


值得一提的是酷睿i9-13900H作为13代酷睿CPU,其实和游戏本市场很火的i9-13900HX差别还是比较大的。后者和桌面端i9-13900K更接近(如上图“参考台式机”)。酷睿i9-13900HX相比i9-13900H,有更多的P-core与E-core核心数,更高的TDP功耗设定。


而且酷睿i9-13900H的P-core性能核心仍然沿用了GoldenCove;而i9-13900HX的P-core则为改良款、增大了L2/L3cache的RaptorCove。


所以实际上,虽然Dell灵越14Plus所用的酷睿i7-12700H是12代酷睿,但这两台本子的对比,更大程度上看的是CPU核心频率差异(以及可能存在的制造工艺改良),平台内存带宽与延迟变化,以及OEM厂商系统设计给到的散热与功耗限制。


就理论性能部分,我们简单跑了一下CinebenchR23测试,给各位同学一个可参考的性能量级水平。这两台笔记本连续不间断跑15轮CinebenchR23多核性能测试,得到如下结果:



从这项测试来看,Yoga比灵越性能领先约16%左右。这个结果基本符合同核心设计下,频率提升带来性能提升的预期。而且值得一提的是,Yoga14sPro作为轻薄本,竟然还有着更持久的性能发挥,第15轮仍然发挥出了首轮92%的性能;而灵越14Plus作为全能本,性能则在第15轮测试时掉到了87%。


持续性能对后面的测试是有价值的,比如ETHAIBenchmark一次要跑20分钟,还有相对复杂的StableDiffusion推理也需要持续性能。那么更持久的性能发挥,在很多AI测试中,也就能表现出更高的综合性能(更短的inference等待时间)。


我们也简单看了看Yoga14sPro的性能释放水平,观察4轮CinebenchR23循环测试下,CPU封装功耗与温度变化情况:



可以看出这台笔记本还真的很不像“轻薄本”,系统设计给到的性能发挥相当激进。CPU满载时,封装温度一直在95℃上下波动,前三轮测试封装功耗最高记录能够达到87W——怪不得要配100W的适配器。在我们的印象里,“轻薄本”性能释放应该都在20W左右的水平...


而且就我个人近半个月使用Yoga14sPro的体验来看,这台笔记本的噪音和外壳温度控制都非常好,应该是我近些年用过的Windows笔记本中最好的水平。可见芯片之外,系统设计对于体验的影响有多大。



在跑生成式AI前,先来跑个AIBenchmark


到目前为止,在PC上跑AI都没有特别完善的benchmark基准测试工具。今年年中ULProcyon倒是出了个AIInferenceBenchmarkforWindows。但过去一周我们申请该工具的presslicense都没有收到回复——直到前两天全部测试结束后,ULProcyon回复了license......所以这次是赶不上了,等下次测试再用吧。


其实去年体验另外一台笔记本时,我们测过ETH(苏黎世联邦理工学院)的AI Benchmark。但这个测试工具的问题是,项目已经3年没有更新,始终停留在alpha阶段,大概已经不能代表现在AI的发展水平。但没办法,在迟迟没有收到ULProcyon的回复之时,也暂时只能考虑用它了。


在尝试跑ETHAIBenchmark的过程里,我们遇到了各种实际问题,比如说它所需的依赖包之一numpy版本过老,以及各种依赖包版本和路径变量等问题。所以这个测试只作为参考。



值得一提的是,我们是在Windows11的WSL(WindowsSubsystemLinux)里面用Ubuntu20.04.6LTS系统跑的AIBenchmark测试。一方面是因为此前的文章我们就探讨过,用WSL跑这类测试的效率和性能明显更好;另一方面则是ETHAIBenchmark测试真的太老了,现在直接在Windows里面跑会遇到大量报错,短时间内似乎也很难解决,大概主要还是依赖包的版本问题...


该测试所依托的TensorFlow库一直在更新:去年8月测的时候还是TensorFlow2.9,这会儿已经是TensorFlow2.13了。所以从下面的结果,我们也能看出运行效率相比以前的显著提升。



AIBenchmark测试项目比较多,这里只列出了其中9个。一方面可以看出i9-13900H相比i7-12700H,在跑AI的速度上的确还是快了不少的;当然核心数更多、cache更大的i9-13900K则在测试里表现出了碾压级别的性能优势——对于AI这种并行算力需求很大的负载而言,自然是计算单元越多越好。


另一方面,如果跟我们去年8月所做的测试对比,会发现:这次测得的性能成绩,相比去年(去年测了酷睿i9-12900H与i5-1240P)有显著提升。比如像PSPNet、UNet这些子项,inference和training时间都缩短了50%以上。显然这就不是光靠CPU性能提升了,TensorFlow更新应该在其中起到了很大的作用。


在测试的命令行界面里,TensorFlow提示语提到了oneDNN(oneAPIDeepNeuralNetwork库)——去年年中,Intel新闻稿就提到oneDNN的性能优化就默认在TensorFlow2.9版本中开启了。所以可能部分性能提升是来自Intel这段时间在软件方面的工作——不了解oneAPI是啥的同学,可以去看看Intel在这上面都做了些什么。


但实际上,12代、13代酷睿都并不支持AVX512指令,所以不清楚在CPU的指令执行层面,测试有没有对应的加速。而且我们也留意到TensorFlow的提示语说,部分特定指令的加速支持还需要对TensorFlow做重新编译(包括AVX2?)——因为时间原因,我们也没能来得及这么做。则理论上,这些测试得到的成绩还有进一步的提升空间。


另外,我们也观察了一下在跑AIBenchmark的前4个网络时,CPU封装的温度与功耗变化情况:



留意最下方那条平直的黄线——它代表核显功耗全程几乎无变化,表明这些测试并没有用到核显加速。就功耗和温度数字来看,AIBenchmark也几乎做到了让CPU满负荷:测试期间14个核心的频率与使用率变化,也可佐证这一点。


这部分最后汇总AIBenchmark的性能得分:



对比去年测的ROG幻16(酷睿i9-12900H),AIScore总分是1956分;今年一台轻薄本就把这个分数提升了65%。看来AI软件与生态的发展的确还是相当迅速的,即便是CPU,即便是ETHAIBenchmark这个长久没有维护的项目。


另外需要提一嘴,上述测试皆限定了WSL子系统的内存容量为12GB。我们也尝试了将内存容量提升到24GB做测试,发现对这些测试的结果几乎没有影响,所以就没有将24GBRAM的结果放上来。



让AI写代码、作图


接下来就该正式跑生成式AI了,无论StableDiffusion,还是ChatGLM或Llama这些LLM,规模上都一定是上述测试的网络所不能比的。


先谈谈StableDiffusion,就是现在很火的,输入提示语,就生成图片的模型——这类应用当前在CV领域相当热门。11月份《电子工程专辑》封面故事也将特别去谈生成式AI对于计算机视觉的价值,欢迎届时关注。


其实要在Intel平台上去跑StableDiffusion,我们发现路径还不少。比如说针对IntelCPU可以用OptimumIntel库加速StableDiffusion;也可以用StableDiffusionOpenVINO项目,在IntelGPU上跑StableDiffusion;另外似乎还有PyTorchStableDiffusion项目,也可以在IntelCPU、GPU上跑。



基于OpenVINO去跑StableDiffusion,网上能搜到最常见的方法,应该是装上Python、OpenVINO Notebooks,然后在JupyterNotebooks里面按照一段段的代码引导,来执行文生图(text-to-image)或者图生图(image-to-image)的inference操作。流程上也不难,但我们没有采用这种方法。


OpenVINO是个啥呢?前不久介绍Metoer Lake NPU的文章里,我们详谈了在面向开发者时,OpenVINO推理引擎相关的AI软件堆栈。它能够将StableDiffusion或者别的模型转为IR中间表达格式,然后令模型跑在不同的Intel处理器上。


我尝试了我认为最简单的方法,先下载GIMP(一个开源的修图软件),然后装一个OpenVINOAI插件,就能在GIMP里面直接做文生图操作了。这也是今年年初Intel对外宣传轻薄本跑StableDiffusion时演示的方法。Github上该项目名为OpenVINO-AI-Plugins-GIMP


另外,Intel做的这个OpenVINO插件不光是有StableDiffusion,还有包括一些常见的CV应用,比如对象语义分割、超分(superresolution)等;有兴趣的同学可以自己去试一试。



感觉Intel做的这个GIMP插件有一点挺好,即StableDiffusion的各个组成部分,包括文本编码器、Unet、VAE解码器可以由用户分别指定,是跑在CPU上,还是跑在GPU上(以及未来的NPU上)。因为此前Intel在宣传中就提过,虽说全部跑在GPU上速度很快,但功耗也不低——要达成最优能效,还是得奉行XPU方案。


在我们这台Yoga14sPro笔记本上,选择对应的模型,在20次迭代的选项下,输入提示词,输出一张512x512的图片,如果完全用CPU的话大约需要50+秒的时间。下面这些是我们在这台笔记本上,让StableDiffusion生成的部分图片:



看样子我们写生成提示词的水平还有待加强,毕竟看到网上大家秀的图都那么好看......不过进一步强化模型的话,未来用于辅助设计之类的工作,应该也是相当可期的。而且要知道,这真的就是凭借CPU的算力,在没有VNNI加速、没有GPU加速的情况下,不到1分钟就inference出来的图片。


有人说那为啥不直接用Midjourney这类云服务呢?隐私、安全与网络连接限制是一部分;更重要的是在本地跑的话,模型可自己定制微调,几乎没有限制,这是Midjourney之类的服务做不到的。



没有量化的成绩始终没什么意思。其实Intel为了展示PC平台跑StableDiffusion和LLM的能力,自己特别做了一站式的图形化演示工具(基于StableDiffusionwebUI)——里面也放了他们做好的模型,点几个按钮就行(如上图)。我们基于Intel提供的这款演示工具,来简单测一测相同条件下,几款参测设备的AI性能水平。


测试分成三轮,每轮给不同提示词(三轮分别生成球场上正在打篮球的男人;月亮上骑着白马的宇航员;桌子上色彩斑斓的芯片......当然实际提示词会更复杂,另外设定了反向提示词,例如不希望篮球场景出现草坪),输出512x512分辨率的图片,50次Unet迭代,选择OpenVINO加速。记录inference花费的时间,三次取平均。


因为首轮inference会涉及到模型优化与加载的过程——这个过程存在的变量比较多,所以以下记录的都是模型加载完成后,第二轮inference的性能成绩。因为OpenVINO也支持GPU加速,所以我们也测了用GPU来跑AIinference的成绩,包括处理器自带的Iris Xe核显,以及台式机上的ArcA750独显。



结果和ETHAIBenchmark是相似的。仅CPU的对比,酷睿i9-13900H(3.12s/it)比i7-12700H(3.96s/it)更快;而拥有更多核心数的i9-13900K(1.67s/it)则是遥遥领先。GPU方面,两台笔记本所用核显规格基本一致,可能i9-13900H的Xe核显频率会略高——所以两者的GPU加速推理性能成绩差不多(1.13it/svs1.04it/s)。


核显加速的确能够大幅缩短inference的时间,仅需CPU不到1/4的时间就完成了推理工作。当然,这些在ArcA750独显(9.13it/s)面前都是浮云。听Intel此前媒体沟通会的意思,他们在这类模型的GPU加速支持上,所做的工作还比较初级;未来的软件更新,可能还会带来很大的提升幅度。


注意这个成绩并不能反映CPU、GPU推理StableDiffusion的绝对性能,也不能反映CPU和GPU的相对性能关系——因为参数设定差异很大时,推理所需花费的时间差别也十分巨大。比如说如果还要做人脸加强修正(StableDiffusion一般都画不好人脸)和超分,或者增加迭代次数,那么inference的时间会明显拉长数倍。所以上面这个成绩只能反映不同处理器的并行算力存在差异。


另外,我们也记录了用Yoga14sPro笔记本跑一次StableDiffusion推理工作时,仅用CPU时、以及用GPU核显加速时,IA核心(即CPU核心)与GT核心(即核显)功耗变化情况,可给予各位同学以参考——功耗应该是粗粒度反映处理器资源利用效率的一个参考:



△ 仅使用CPU跑StableDiffusion时,CPU封装功耗与IA核心功耗变化



△ 使用GPU加速StableDiffusion时,CPU封装功耗与GT核心功耗变化


最后就是LLM大语言模型,也就是类似ChatGPT那样的人机文字对话。Intel给出的LLM演示工具包含了3个模型,ChatGLM2-6b,Llama2-13b,StarCoder-15.5b。


这三个模型一方面有着不同规模的参数量(60亿、130亿、155亿);另一方面,ChatGLM用于中文对话,Llama羊驼则是现在相当流行、据说效果堪比ChatGPT的英文对话模型,还有个StarCoder是会写代码的大语言模型。所以我们面向三个模型,问了三个问题,分别如下:



△ 问ChatGLM2-6b,计算机科学与电子工程的区别是什么;



△ 问Llama2-13b,2.5D封装与3D封装的互联间距区别是什么;



△ 让StarCoder-15.5b写一段MySQL代码,创建table,并添加数据;


问答效果还是让人满意的。尤其是Llama2答有关先进封装的问题,回复相当切题,是围绕着我们限定的互联间距来答题的,而不是随随便便说两句2.5D和3D封装的结构差异。


而向StarCoder发出的问题虽然比较简单,但问题长度较长,是细致到建立一个MySQL表,并添加几行数据的逻辑。回复也完全准确,毕竟StarCoder号称是“最先进的代码大模型”。


对于LLM而言,反映硬件算力的维度主要是firstlatency(首个token生成的时间,单位ms;可以理解为在发出问题后,模型反应需要多久)与afterlatency(其后平均token生成速率,单位ms/token;可以理解为模型回复时,打字的速度...)。上述三轮问答,我们测试得到的结果如下:



除了最后一个问题问出之后的等待时间达到了7秒,其余问题的firstlatency都是可接受的;而在首个token出现以后,基于人眼常规的阅读速度,afterlatency也满足直觉需求。


不过这份数据的参考价值可能更低。主要是因为模型针对相同问题作答的响应时间,每次都不大一样,差别大到无法在少量取样的情况下反映不同硬件的性能差异。除了台式机表现出绝对性能优势外,两台笔记本的表现飘忽不定,一会儿这台强一些,一会儿那台强一些。大概LLMinference的过程存在很多变量,所以这份数据就当是图个乐吧...


这里就不分享跑LLM模型期间的处理器功耗变化了——Intel提供的演示工具没有GPU加速选项,我们也观察了模型inference期间的处理器状态,发现的确没有GPU的参与(在台式机上观察StarCoder模型inference全程,ArcA750显卡的整体功耗都没有波动,或GPU可能参与很少?)。



其实PC能跑生成式AI这件事,已经不是什么新闻了。有关生成式AI对于PC的价值,或者在PC上的应用,我们此前也写过不止一两篇文章。而AIPC只是Intel期望构建AI生态的其中一环,端到端的AIpipeline才是Intel着眼的,从云到端,从training到inference,从算力基础到上层解决方案。虽说对Intel而言,这方市场的竞争难度现阶段已然不小,聚拢PC市场基础、扩展软件生态亦有可为。


这篇文章期望给各位读者构建起PC跑生成式AI的基本概念,给对AI感兴趣的同学以基础内容索引。未来我们会持续改进PC平台之上,AI测试的工具与流程;而对于PC的探讨,大概会越来越频繁地提及AI,这也是行业的共识。


责编:Illumi

[ 新闻来源:电子工程专辑,更多精彩资讯请下载icspec App。如对本稿件有异议,请联系微信客服specltkj]
存入云盘 收藏
举报
全部评论

暂无评论哦,快来评论一下吧!