拿 2080ti 22g 跑 13B 8bit 量化,都能跑 30token/s 甚至更快。
准备好钱买第二块显卡或者换 2 张 7900XTX 跑 34B 的吧。
很明确告诉你 13B 级别,如果不是特别训练单一领域的,那么就是一个弱智。
比如最近最近新出的 StarCoder2 ,号称涵盖 619 种编程语言,我下载下来问几个语言、常用编程库、数据库之类的版本信息,15B 的训练数据落后 6 年,7B 的落后 9 年。
显卡显存不够内存来凑的内存回退机制不用看了,屎中屎,无论是玩画图还是玩 LLM 推理都是教你关掉的。
引用别人的回复
“生成式大语言模型的推理过程就是先把模型本身加载到运存,然后每生成一个字都需要把整个模型遍历访问一遍,所以决定速度的就是运存带宽(预训练或者微调时需要计算能力,但推理时几乎不需要,就是沿着预训练好的权重选择下一步路径,所以哪怕 1060 配上 48G 显存也是推理神器)。比如 7B 模型的 8 位量化版本,每个权重占一个字节所以就是 7G 大小( 7B 参数是指有 70 亿个权重,8 位量化是指每个权重用 2 的 8 次方表示就是有 256 种下一步的可能,也就是占用 1 比特的空间,同理目前性价比最高的 Q4 量化就是 3.5G ),如果是加载到 4090 的显存,因为它的 GDDR 显存带宽是 1000GB/s ,那么生成速度就是 1000 除以 7 大概每秒 140 个字(词元);如果是纯 CPU 推理,加载到 DDR4 的内存,带宽大概 30GB/s ,那么推理速度就是 30/7 大概 4 个字每秒”
内存堆高优势不大,ddr5 双通道带宽也就 70 ~ 100GB/s ,是 4090 的 1/10 。所以在 reddit 上可以看到 96 核跑 13B 的推理速度几 token/s 的景象。
现在优化手段就是把模型合理拆分,不活跃的丢 CPU ,活跃的丢 GPU ,既要避免 cpu 在围观 gpu 干活,又要避免 cpu 因为内存瓶颈干活慢,比如
https://github.com/SJTU-IPADS/PowerInfer 我每个月下载几百 G 的模型来测,用 M2 Ultra 192GB 玩了 3 个月了,最近就是因为它跑大模型的时候 cpu 不干活,我看不下去它在摸鱼,本来丢货架上不接显示器的,现在都接上显示器拿来写代码了。
附:本地模型写代码能力排名
https://huggingface.co/spaces/bigcode/bigcode-models-leaderboard 。