找回密码
 加入我们
搜索
      
查看: 20422|回复: 47

[装机] 半块RTX4090 玩转70B大语言模型

[复制链接]
发表于 2024-7-20 18:00 | 显示全部楼层 |阅读模式
本帖最后由 awpak78 于 2024-7-20 18:00 编辑

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

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



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

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

V0012.00_01_14_46.Still001.jpg

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

V0012.00_01_29_08.Still002.jpg

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

V0012.00_02_27_17.Still003.jpg

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

V0012.00_04_13_06.Still004.jpg

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

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

V0012.00_04_45_40.Still006.jpg

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

V0012.00_05_00_34.Still007.jpg

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

V0012.00_05_52_34.Still008.jpg

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

V0012.00_06_45_59.Still009.jpg

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

V0012.00_07_24_22.Still010.jpg

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

V0012.00_07_40_38.Still011.jpg

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

V0012.00_07_53_20.Still012.jpg

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

V0012.00_08_17_21.Still013.jpg

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




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

评分

参与人数 2邪恶指数 +15 收起 理由
猪圈 + 10 就是NB
烨庆 + 5 就是NB

查看全部评分

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

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

还是软件的BUG太多了,最近vllm也支持Pascal老卡了我试试能不能好点
 楼主| 发表于 2024-7-20 18:29 | 显示全部楼层
af_x_if 发表于 2024-7-20 18:28
P100的FP16性能18T……

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

除非你去给LNL焊上HBM内存
 楼主| 发表于 2024-7-22 20:07 | 显示全部楼层
pdvc 发表于 2024-7-21 01:08
G-P-T4o mini的API很便宜了,web版也免费了,自己折腾意义不大了......

百度网盘不收费的时候是能跑满100M上下传的
 楼主| 发表于 2024-7-22 20:08 | 显示全部楼层
用户 发表于 2024-7-21 01:37
谁能拿8490H+amx跑一个比比,现在单路8490H好像7000人刀能拿到了

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

没有用,DDR5的速度相比HBM就是弟中弟
 楼主| 发表于 2024-7-22 20:09 | 显示全部楼层
搞基薛定谔 发表于 2024-7-22 08:45
家里现在的双4090可以跑 llama3:70b 到16tok/s左右。基本够用了。

把垃圾ollama删了,换vllm速度立马翻倍

评分

参与人数 1邪恶指数 +1 收起 理由
搞基薛定谔 + 1 666

查看全部评分

 楼主| 发表于 2024-7-22 20:12 | 显示全部楼层
赫敏 发表于 2024-7-21 10:47
要不是老黄故意阉割SLI/nvlink哪有这些东西什么事啊。当然老黄也是为了把带nvlink的显卡卖多一位数 ...

nvlink要多卡组成全连接拓扑才有用。

PCIe标卡上面那只支持双卡互联的nvlink金手指基本等于超市里的免费试吃,也就只够尝下味道
 楼主| 发表于 2024-7-22 20:13 | 显示全部楼层
anishieh` 发表于 2024-7-22 09:52
家用双卡4090 70b模型比如Qwen2和LLaMa3应该都是16~18token/s用LM Studio。

不过我感觉好像这种家用70b应 ...

LM Studio的后端就是垃圾llama.cpp
删了换vllm速度立马翻倍
 楼主| 发表于 2024-8-13 22:57 | 显示全部楼层
q3again0605 发表于 2024-8-13 14:58
来请教几个问题:1、张量并行奇数张卡行不。2、我目前的配置是2台机子,100g ib网路互联(有大神说2台其实e ...

1. 必须是2^n张显卡
2. 跨节点肯定是流水线并行. 参考vllm文档节点内张量并行, 跨节点流水线并行
3. P100用mlc-llm速度更快, 你要双机分布式那就用vllm

gguf是llama.cpp发明的模型格式, llama.cpp以及调用它的那些乱七八糟的软件(比如ollama)都是纯粹的垃圾.
除了方便移植到各种根本不适合跑LLM的平台上强行演示以便卖货以外, 对于已经有N卡的人来说这就是最慢最垃圾的LLM推理框架.
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

Archiver|手机版|小黑屋|Chiphell ( 沪ICP备12027953号-5 )沪公网备310112100042806 上海市互联网违法与不良信息举报中心

GMT+8, 2025-5-19 00:51 , Processed in 0.091700 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2007-2024 Chiphell.com All rights reserved.

快速回复 返回顶部 返回列表