awpak78 发表于 2024-7-20 18:00

半块RTX4090 玩转70B大语言模型

本帖最后由 awpak78 于 2024-7-20 18:00 编辑

自Chat**发布以来,隔三岔五就有人宣称又在多么没门级的硬件上成功运行了大模型
但只要点进详情就会发现要么模型小得可怜,要么速度慢得没有实用价值

而我的目标是,半块RTX4090的预算,70B档次的量化模型,以及与在线AI相当的流畅对话!

https://www.bilibili.com/video/BV1DH4y1c7gK/

语言模型和以往 AI 模型最大的不同在于,70B 模型量化后仍需 40G 起步的显存要求,让多卡推理成为所有人都不得不面对的问题。

如果你和我的老板一样有钱,但又没有土豪到梭哈 A100 服务器的水平,在斥巨资购入双卡 4090 “工作站”,用 llama.cpp 尝试了各种模型后就会发现,两张 4090 似乎只分担了显存占用,几乎没有加速文字生成的效果。



实际上 llama.cpp(以及ollama等) 的多卡方案很简单,就是将模型前后拆开,分别装进两张显卡,单卡显存不足的问题就迎刃而解了。但是,这也带来了一个新问题:输入的文字需要与每一层模型运算才能得到下一个字,这就意味着两张显卡永远在交替工作!这就是流水线并行, 只解决了能不能跑的问题,对对话速度完全零提升。



那么,多卡如何才能全力跑起来70B大语言模型呢?答案是,使用张量并行。理论上能达到两张 4090 24G 融合出 8180 48G 的效果,就算通信损耗多一点,也比 4090 48G 强多了。因此,张量并行也是企业级推理框架的标配。



在硬件方面,我们需要用尽量少的钱凑齐至少 40G 显存,过得去的核心性能,以及满足张量并行的互联通信能力。不到 1000 元的 Tesla P40 已经火过一轮了,但很遗憾,它除了 24G 显存外一无是处。现在流行的 AIGC 模型,无论图形还是文字,都需要 FP16 运算能力,即便是量化为 int4 的模型,也只是量化权重,嵌入向量从输入到输出始终都是 FP16 精度,全过程需要的是输出 FP16 结果的混合精度运算。而 P40 完全不支持 FP16,正好站在硬件 FP16 支持门槛上的正是P40的兄弟P100



GPU 间高速通信大部分人第一反应就是 NVLink,但只推理不训练并不需要大带宽处理反向传播和参数更新。只需要显卡之间以尽可能低的延迟交换几十 KB 计算结果。

这时候就要请出大家熟悉的老朋友 PLX。PLX 只是一个品牌,这类能扩展 PCIe 通道的芯片统称 PCIe Switch。虽然这玩意儿大部分时候都被用来无脑扩展 M.2 硬盘位了,但既然它叫 Switch 而不是 Hub,就意味着它不仅能扩展 CPU 下游的 PCIe 通道数量,更能允许其扩展的 PCIe 设备之间直连通信



通过计算卡加 PLX 的组合显卡间互讲悄悄话完全不经过 CPU,访问延迟可以干进 1.5us,达到 NVLink 同一水平,远快于RTX4090走内存复制的 10us



最后,我选择了超微 4028GR 准系统,得益于不知道哪里机房的大规模下架,PCIe Switch 底板,双层 8cm 散热风墙,2000W 钛金认证电源,全套 5500 块一站搞定。虽然没有 100 元大战 LOL 那样的极致操作,但在挥金如土的 AI 领域也算是性价比拉满了。



为了实现张量并行,我们还需要一个老硬件友好的张量并行框架 —— MLC LLM。经过格式转换、量化、编译后,以最新的 Qwen2-72B-Instruct 模型为例,int4 量化后短对话在这架航班上达到了 22tokens/s 的流畅对话。在统一生成 4096 长内容的速度测试中,平均速度达到了 13.1 tokens/s。相当于用 A100 80G 显卡价格的零头,跑出了近一半的性能。



回到视频开始的挑战,只要在装机单上适当优化,砍掉不必要的高配 CPU、大内存和固态阵列。无论是比单显卡部分还是整机总价,都能称得上是半块 4090,玩转 70B 大模型



如果再过分一点,按矿机的标准对待未来的硅基老婆,还能更省。随便什么亮机U,配上亮机主板。再加上由 OLDMONSTER 设计的开源 PLX 扩展卡。现在一块 4090 的预算已经够抱 3 套整机回家,直接开建数据中心了。



估计前面已经有不少人刷电表倒转了,不过非常反直觉的一点是,P100 其实相当省电。当年正值老黄站在继续堆 FP64 专攻科学计算、数值仿真,还是转向 FP16 押注人工智能、AI 大模型的十字路口。在 P100 的构架中,绿色的 FP32/FP16 核心,和黄色的 FP64 核心平分秋色,Tensor Cores 更是还在娘胎里。



所以 250W 的标称 TDP 虽然看起来不低,但实际运行 AI 时候很少能达到这个数,大部分时候都在 120W 左右跳动,4 块运行 AI 的 P100 加一起,才略超正在全力光追打游戏的 4090。



加上服务器标配的钛金效率电源加持,整机功耗空闲 350W,对话 700W。虽然没法和 NAS、一体机比节能,但至少和高端游戏 PC 仍然是一个档次的东西。不至于点亮插线板。



以上文字版内容由跑在这坨 4x P100 上的 Llama-3-70B-Instruct-q4f16_1-MLC 模型辅助完成,可能略有抽风

zcyandrew 发表于 2024-7-20 18:12

这套方案自己折腾着玩玩可以,真要放生产环境里运维得累死
家庭小作坊个人感觉还是单4090或者双3090nvlink更好

manwomans 发表于 2024-7-20 18:19

我4090+64g ddr5跑72b的q4只有1t/s多一点

kingofgu 发表于 2024-7-20 18:23

manwomans 发表于 2024-7-20 18:19
我4090+64g ddr5跑72b的q4只有1t/s多一点

显存不够 需要不停载入参数到显存io开销和延迟太大了

hanyou7 发表于 2024-7-20 18:25

zcyandrew 发表于 2024-7-20 18:12
这套方案自己折腾着玩玩可以,真要放生产环境里运维得累死
家庭小作坊个人感觉还是单4090或者双3090nvlink ...

性价比 双3090最好 就是3090现在矿太多

awpak78 发表于 2024-7-20 18:27

zcyandrew 发表于 2024-7-20 18:12
这套方案自己折腾着玩玩可以,真要放生产环境里运维得累死
家庭小作坊个人感觉还是单4090或者双3090nvlink ...

硬件倒是没什么问题,CPU的ECC和显卡的ECC都没有报错

还是软件的BUG太多了,最近vllm也支持Pascal老卡了我试试能不能好点

af_x_if 发表于 2024-7-20 18:28

P100的FP16性能18T……

这4张加起来打不打得过INT8总计120Tops的LNL(FP16也许60T)?

awpak78 发表于 2024-7-20 18:29

af_x_if 发表于 2024-7-20 18:28
P100的FP16性能18T……

这4张加起来打不打得过INT8总计120Tops的LNL(FP16也许60T)? ...

除非你去给LNL焊上HBM内存

alexlzh 发表于 2024-7-20 19:12

科学计算里面GPGPU加速对模型的要求太高了,在abaqus中只有标准隐式求解器可以用,其他情况都是CPU默默的扛下了所有

也不难想老黄为什么转向半精度计算

Wolverine 发表于 2024-7-20 19:40

牛!!!!!!!!

natt 发表于 2024-7-20 19:57

感受到了当年diy的乐趣,应该说乐趣大于应用吧[恶魔]

星辰柯博文 发表于 2024-7-20 20:48

hanyou7 发表于 2024-7-20 18:25
性价比 双3090最好 就是3090现在矿太多

3090背板显存发热太大,玩游戏夏天有时候都可能热到花屏。

炼金术士 发表于 2024-7-20 21:01

比起红蓝站队大战,这才是更具DIY精神的一集,根据自己的需求选择合适的硬件
搞得我也想捡垃圾试试了[偷笑]

cloudyangel 发表于 2024-7-20 21:25

怎一个牛字了得

yuwl3000 发表于 2024-7-20 21:56

这套方案最大的问题是开机以后散热噪音起飞
不带降噪耳机人会受不了

ramses 发表于 2024-7-20 22:03

心痒痒的搞一套?但是不知道干嘛?
做询证医学?

dsanke 发表于 2024-7-20 22:12

PLX的用法长见识了,牛

pdvc 发表于 2024-7-21 01:08

G-P-T4o mini的API很便宜了,web版也免费了,自己折腾意义不大了......

用户 发表于 2024-7-21 01:37

本帖最后由 用户 于 2024-7-21 02:17 编辑

谁能拿8490H+amx跑一个比比,现在单路8490H好像7000人刀能拿到了

双路8490H功耗高点,但不会有显存焦虑

ljy1414 发表于 2024-7-21 01:55

本帖最后由 ljy1414 于 2024-7-21 01:58 编辑

dsanke 发表于 2024-7-20 22:12
PLX的用法长见识了,牛

lz这个有点看不太懂,大佬能不能帮忙翻译一下

相当于lz买了一个带plx的拆分卡,然后把P100插在转接出来的PCIE,避免延迟?https://cdn.jsdelivr.net/gh/master-of-forums/master-of-forums/public/images/patch.gif

Neo_Granzon 发表于 2024-7-21 04:06

现在的大模型还用不上TensorCore吗?如果用得上的话P100算力应该没有优势啊。

fut888 发表于 2024-7-21 06:53

性价比最高的是3090,能耗比加性价比综合最佳的是咸鱼收一台m1 ultra

rico19375 发表于 2024-7-21 09:58

ljy1414 发表于 2024-7-21 01:55
lz这个有点看不太懂,大佬能不能帮忙翻译一下

相当于lz买了一个带plx的拆分卡,然后把P100插在转接出来 ...

plx相当于交换机啊,就比如说路由器底下连着交换机,交换机连着两台电脑,这两台电脑互传数据是不经过路由器的,延迟降低,并且上层没有负载。。

PLX就这样,两个显卡传数据不经过CPU,这样CPU负载就低多了。。。

延迟最高的一种情况就是双路CPU分别负责两个显卡,这样不仅经过CPU,还经过CPU的互联总线,延迟可以高到爆表

ljy1414 发表于 2024-7-21 10:06

rico19375 发表于 2024-7-21 09:58
plx相当于交换机啊,就比如说路由器底下连着交换机,交换机连着两台电脑,这两台电脑互传数据是不经过路 ...

懂了,所以PLX卡也是LZ这套配置当中需要花多点$$的必要设备https://cdn.jsdelivr.net/gh/master-of-forums/master-of-forums/public/images/patch.gif

rico19375 发表于 2024-7-21 10:39

ljy1414 发表于 2024-7-21 10:06
懂了,所以PLX卡也是LZ这套配置当中需要花多点$$的必要设备

其实如果双卡x16或者四卡x8,不用买这套平台,以前有不少老旗舰就是带PLX的,z77,z87,z97都有

ljy1414 发表于 2024-7-21 10:42

rico19375 发表于 2024-7-21 10:39
其实如果双卡x16或者四卡x8,不用买这套平台,以前有不少老旗舰就是带PLX的,z77,z87,z97都有 ...

[偷笑] 我只是在想用屏蔽嘉的X99服务器主板 + 2696V3,是不是有搞头

主要是P100散热问题,可能要买3D打印支架的套装改散热https://cdn.jsdelivr.net/gh/master-of-forums/master-of-forums/public/images/patch.gif

赫敏 发表于 2024-7-21 10:47

ljy1414 发表于 2024-7-20 21:06
懂了,所以PLX卡也是LZ这套配置当中需要花多点$$的必要设备

要不是老黄故意阉割SLI/nvlink哪有这些东西什么事啊。当然老黄也是为了把带nvlink的显卡卖多一位数

weindy 发表于 2024-7-21 22:37

只要空间够,不怕吵,有的是洋垃圾可以折腾啊[狂笑]

建议柠檬 发表于 2024-7-21 22:42

zcyandrew 发表于 2024-7-20 18:12
这套方案自己折腾着玩玩可以,真要放生产环境里运维得累死
家庭小作坊个人感觉还是单4090或者双3090nvlink ...

4028GR基本上就是那个时代的生产环境No 2-3了。。。。。
甚至可以一定程度摸到No1。。

不管配什么卡,一套正经的平台都非常重要。。。

搞基薛定谔 发表于 2024-7-22 08:45

本帖最后由 搞基薛定谔 于 2024-7-22 08:47 编辑

家里现在的双4090可以跑 llama3:70b 到1625tok/s左右。基本够用了。
页: [1] 2
查看完整版本: 半块RTX4090 玩转70B大语言模型