AIPC折腾记

Posted by Hsz on November 8, 2024

AIPC折腾记

2023年末因特尔提出了一个”AIPC”的概念.各大科技公司纷纷响应仿佛迎来了了一股新风潮.

根据目前业界的讨论和定义,一个设备要被称为AI PC通常需要满足以下几个标准:

  1. 内嵌个人大模型: 需要有能力内嵌本地大语言模型
  2. 本地混合AI算力: 硬件上需要有CPU,GPU,NPU等混合AI算力设备
  3. 自然语言交互: 用户能够通过自然语言与设备进行交互

那很自然的,这个AIPC的概念是配合最近人工智能领域大语言模型(llm)的崛起而提出的.有价值么?有,虽然现在的LLM水平大致和文科本科生差不多,但如果你对它的期望没那么大,配合本地知识库构造agent还是多少能帮点忙的.

这个概念提出的时候是针对笔记本电脑的,对AI应用的定位也是个人助理,因此标准中会混入NPU这种目标是低成本低功耗的算力设备,但实际情况是就目前(2024年底)的大语言模型来说,参数规模过大,现有npu算力根本连7b规模的模型都无法流畅运行(感谢b站网友的测试),而且功耗也不低.要提高功耗提高算力那必然需要脱离移动端,不用npu,gpu就能干而且成本就上来了.因此某种意义上来说AIPC这个概念在目前(2024年底)还是个伪命题.

那还折腾个什么劲儿呢?

我们不妨将限制放松.如果我们将AIPC的概念定位从个人助理放宽到团队助理家庭助理,将AIPC的设备定义从移动端笔记本换成小型服务器,标准都不用变这个概念似乎就能活过来了.

既然是服务器形式,那相对于移动端来说就会需要一些概念上的迁移和交互上的变化:

  • 移动端的所谓本地相对于服务器就是局域网环境
  • 服务器的角色就相当于边缘计算中的上位机,仅作为输入输出网关和计算中心,知识库可以是专门的nas从而解耦避免珍贵数据的丢失
  • 服务端就需要有客户端处理输入输出以及更加通用的非键盘鼠标显示器的输入输出方式适配

这也意味着这种用法在除了部署本地模型和rag相关组件外还会有其他额外的开发成本.还好我略微会一点开发,这个还是可以搞的定的.

之所以要折腾这套aipc我也不是没有目的的.我的期望是可以做一套家庭助手服务,主要解决如下问题

  1. 非关键照片,视频等资料的整理和查找问题.家里nas虽然有照片功能,但至少我家这边看来并不好用.
  2. 编程辅助,我希望为自己搭建一个符合个人习惯和风格的编程助理.它需要熟识我的工作流和技术栈,并且可以随着自己的技能更新同步进化
  3. 儿童辅导,我希望构造一个家庭教师一般的ai,可以给小孩上学做辅导,布置作业,批改作业,教授扩展知识等.

可以看到这些都是相当私人的需求,使用的数据也会有很多都是家里的私有数据.因此需要本地模型,这也才有了AIPC的用武之地.当然如果上面的都能实现,那想来家庭医生,私人法律顾问这类也应该没有什么难度,那自然也是可以搞的.

本文的主要工作是记录折腾AIPC过程中用到的核心组件.

AMD Ryzen 7 8700G

早在2024年初,amd就发售了8700g这块zen4架构的apu.当时2400的售价确实有点高不可攀.但我们都知道amd的cpu首发从来都是高溢价的,在半年多后的今天果然盒装掉到了1800元左右,散片到了1600元左右.个人认为已经到了一个可以接受的范围因此入了一块回来折腾.

基本规格

首先介绍下这颗apu的基本规格.这颗u可以认为是7840hs的am5接口封装版本

  • Zen 4架构,8核16线程的全大核配置
  • CPU默认主频4.2GHz,睿频5.1GHz,二级缓存8m,三级缓存16m,TDP为65W,最小保证功耗为45W
  • 配备核显是780m,2900MHz
  • 配备16 TOPS的int4精度算力的npu
  • 配备PCIe通道总共20条,其中16条可直连,额外4条分配给芯片组
  • 使用am5接口分装,可以使用在600系,800系主板上,单die使用硅脂填充

具体的性能评测可以看chh上的这篇文章

特性分析

这颗u总的来说并不是一颗传统意义上的amd桌面端u,而是一颗APU.可以折腾的点其实比7000系和9000系还多些.我也将围绕这颗U组件平台构造AIPC.这颗U的特点可以看nga这位网友的总结,我在下面再额外做些补充

  1. 首先是功耗,由于脱胎自移动端,8700g待机功耗15w左右,天然的比同tdp非apu平台的桌面端u待机功耗低(但比不上intel平台).在低功耗区间效能也比同tdp非apu平台的桌面端u强.当然这是有代价的,在高功耗区间比同tdp非apu平台的桌面端还是差不少.而apu没有内置功耗墙,因此如果开pbo一定要设置温度墙或者功耗墙进行限制.

  2. 散热友好,由于apu是单die设计,区别于多die的非apu平台的桌面端,apu的die面积更大也就更好压,但由于是硅脂U,虽然比7000系好点,但依然会有积热问题.有评测开盖换液金可以大幅改善积热,但即便不换液金,47mm下压散热器也足以应对.

  3. 算力复杂又相互影响,8700g这颗U有cpu,gpu,npu3个部分他们会相互抢电,比如我给核显超频,那在同功率下cpu部分的算力就会比不超核显时差,而pbo会放开功率和电压但最大电流依然会有限制.我们知道ai主要是靠gpu做并行计算,因此我们我们没什么必要给cpu超频,甚至降频可能反而性能更好.至于npu部分,目前npu驱动还没合并进linux内核,也就是说目前在linux下我们调用npu还不太容易,但在下一个版本中该驱动会被合并进主干,到时候我们可以试试.但就目前看B站网友在windows下的评测.这个npu的算力基本属于聊胜于无.

  4. 内存频对核显性能有较大影响.一般核显都受限于内存带宽,8000系更是如此,超内存的提升幅度比超核显本身都高.在不超内存不超核显频率的情况下核显性能大致相当于GTX 1050ti,如果双超性能大致与GTX 1650相当(小超频率到3200,内存异步7500+,1050ti的1.5倍),极限超频可以摸到GTX 1060的屁股(1050ti的1.6倍).与之相比的苹果m1大致是GTX 1050水平(1050ti的0.75倍),最新的m4大致是GTX 1060水平(1050ti的1.6倍).

  5. 8000系apu有比非apu桌面处理器更好的if总线带宽,对高频内存支持更好

  6. 内存即显存,理论上有多少内存就相当于有多少显存,而现在的模型都普遍很吃显存,这也是为啥考虑用它组aipc的原因.但目前的技术下大内存往往频率超不上去,属于大内存和高频率不可兼得的状态.

  7. APU的igpu可用的内存分为显卡专用内存VRAM和共享内存Shared Memory两部分,一些软件会让核显优先使用VRAM,如果不够则去Shared Memory中拿资源使用(主要是游戏);一些软件则会仅使用VRAM.可以在bios中设置AMD CBS->NBIO Common Options->GFX Configuration中设置将一部分内存划给显卡专门使用(VRAM).这个设置的最大值是16G.

  8. AMD的显卡调用靠rocm(基本是opencl的高级版),而rocm接口只在linux下有完整接口

  9. 在linux下我们可以让rocm使用UMA(Unified Memory Architecture)方式让核显访问内存,而这种调用UMA内存的方式默认会使用慢速的细颗粒度内存结构.也就是说要么使用快速但最大16G的VRAM,要么使用慢速但可以全量访问的UMA接口,当然UMA方式访问内存也是可以优化速度的.

ps:对统一内存架构感兴趣可以查看苹果M1统一内存架构真的很厉害吗?从AMD APU的名存实亡谈起(上)苹果M1统一内存架构真的很厉害吗?稀松平常的UMA(下)这两篇博文

apu核显的设置

apu的核显和cpu部分是会抢电的.作为aipc,cpu部分一般都不是瓶颈,我们肯定希望cpu部分在够用的情况下核显尽量的强.这就需要在主板bios中作好针对性的设置.具体的设置我们需要根据主板品牌和cpu体质以及自己的使用需要灵活调整,但总体设置步骤和思路是不变的.设置apu你需要先装好windows,因为

下面是设置步骤和思路.

  1. 开起pbo,并给cpu设置温度墙和cpu降压.pbo可以解锁功耗墙,温度墙用于根据机箱散热情况设置以保证工况,cpu降压可以降低cpu部分的功耗和发热,腾出来的空间可以给核显更大的发挥空间.更进一步的可以给cpu定压定频手动降频给核显让路.

  2. 给核显超频.核显频率在主板bios的超频部分会有GFX Clock Frequency,这里默认是auto,我们可以设置为手动然后指定频率,像8700g默认是2900,一般超到3100都没有问题,我的这颗3200没有问题,一些体质好的3400也可以.如何确定可以呢,简单说就是超频然后双烤测稳定性,3dmark的timespy测显卡性能,按200一个步进慢慢往上加频率直到不稳定,然后降100,如此往复试出最优

  3. 内存超频一般在主板bios的超频部分,会有xmp或者expo设置,一般是先加载xmp或expo,然后进windows中跑ada64和双烤确保稳定和获取延迟信息,根据情况如果稳定就逐步加频率压时序,不稳定就降频率松时序一直迭代调整指导延迟满意为止.注意apu由于核显的问题需要更大的内存带宽,内存时钟频率(MClk)与内存控制器时钟频率(UClk)之间最好使用2:1模式(异步模式),通过尽量拉高内存频率的方式来增加带宽,而增加频率往往要给内存加压,这会影响内存使用寿命和发热,由于内存一般没有主动散热,因此机箱散热不好的情况下少超.

  4. 显存在位置是AMD CBS->NBIO Common Options->GFX Configuration,有两种策略,一种是全自动,让系统自行根据负载需要分配,windows下默认会划个最小值(似乎是512M)给VRAM,另一种是手动设置UMA buffer的大小(即最大VRAM的大小).手动设置的流程是

    1. IGPU Configuration设置为UMA_SPECIFIED
    2. UMA Frame buffer Size设置为你希望的大小 注意VRAM被划分后剩下的才是系统可以使用的内存,因此如果你的机器内存比较少最好也少划分点VRAM给核显,

使用计划

之所以将这块U纳入AIPC的折腾范围主要是看中它的核显.主要用途有两个:

  1. 我们知道llm的推理可以按层实现,如果显卡显存不够可以适当将一些层交给这个核显来做.
  2. 我们知道llm对算力要求比较高,但一些边缘人物并不需要非得使用llm,这个核显跑一些小模型绰绰有余.
  3. 一些生图生视频任务可能会需要大量显存,低功耗gpu的显存显然是吃不消的,而我们并不一定需要结果和可以快速出来,因此这类任务也可以交给这个核显处理.

其实不一定是8700g,amd承诺am5接口至少支持到2027年,同时zen5架构的apu在移动端已经发售,目前看其性能相对8700g提升不大(都在默频同内存频率15%左右提升)估计即便有桌面端封装也并不值得特意购入.据说zen6的apu会使用和工作站统一的UDNA架构的核显,改善内存控制器,还会加入x3d技术,如果属实的话只要其性能可以达到3050的水平,到时候就可以入一颗.届时再更新这篇文章

至于这颗8700g,我给它制定了一个比较长的服役周期,他会分为如下阶段:

  1. 基本使用阶段,由于我买的盒装cpu有3年质保,我会在这3年内完全按照官方默认或推荐的方式使用,这个阶段我会为他组一台办公deskmini主机,充分利用它的核显,并尽量摸透这颗U在AI方面的能力范围
  2. 超频使用阶段,过保后开盖换液金,然后换到itx机箱中提升散热,加装独显并超频使用,我会组一台5L小itx来实现
  3. 发挥余热阶段,换回deskmini主机,降压降功耗换90w氮化镓电源当家庭服务器使用

NVIDIA GeForce RTX 4060 Ti 16G

这是一块2023年7月发布的消费级显卡.我买的这块是在2024年7月左右购入了一块耕升的双风扇版丐卡,购入价格为3200.其规格为双槽全高卡,双风扇,长度为20cm.

基本规格

介绍下这块GPU的基本规格.

  • 有16 GB显存
  • 165W的满载功耗
  • 128-bit的位宽
  • 算力水平大致是1050ti的6倍

特性分析

这块卡算力并不突出,但用于推理绰绰有余,显存16G在消费级显卡中算是比较大的,就目前的技术来说无论是生图,跑int8的7B版本大模型或者跑int4的13b版本大模型都是可以的,一些轻量级的finetune技术也可以跑,再加上不错的功耗和发热水平,总的来说很适合挂在服务器上使用

使用计划

4060Ti16G一发售就被游戏玩家称之为智商检测卡,但它是消费级显卡中唯一一张显存有16g的200w以下的n卡,而且发售时间比较近没什么矿卡价钱相对还算合理,功耗算力也还不错,因此其实很多工作室拿它来作为入门生产力显卡使用.我买它也是想作为家里生产力卡的,买它是因为家里台式机主板坏了,更新主机时一并更新的.现在对它的规划是在保修期(3年)内给主力机用,3年后换下来给itx(和8700g一起).

唯一遗憾的是这个型号没有18cm以内的正规短卡,所以我在买的时候就考虑到后续进itx要改短,就买了个同德公版的丐卡,同时买了3060ti的同德散热器,等过保就拆了改短.

其实市面上并不是没有其他可以替代的卡,有一张卡它只有16cm,半高双槽,性能与4060ti相当且显存有20G,但功耗只有70w由pcie供电,这就是RTX 4000 sff ada,但它卖8500,实在是太没有性价比了,等过几年看看小黄鱼有没有的淘一个

资料