找回密码
 加入我们
搜索
      
查看: 11600|回复: 22

[CPU] Zen4的AVX512有用么

[复制链接]
发表于 2023-8-3 19:56 | 显示全部楼层 |阅读模式
本帖最后由 我輩樹である 于 2023-8-3 19:59 编辑

llama.cpp是一种cpp写的可以在CPU上推理和微调的框架,最近非常流行。

我就分别在7840U、Z1 Extreme和13980HX上运行了下。结果有点出乎意料。

llama.cpp本身是支持AVX512的,它对三个CPU的检测如图:

屏幕截图 2023-08-03 194300.jpg

左边是7840U,右边是Z1 Extreme,中间是13980HX。

首先是Z1E保留了AVX512指令集群,VNNI都保留了,阉割的貌似是FPGA那块。

最终的token生成速度,Z1E比7840U甚至要更快一点。

最慢的当然是不支持AVX512的13980HX,而且是32线程输给16线程,这。。。

生成对比可以看下面三个视频:

7840U


Z1E(请忽略背景声)


13980HX
发表于 2023-8-3 19:58 | 显示全部楼层
本帖最后由 zhuifeng88 于 2023-8-3 20:09 编辑

llama.cpp是毫无疑问的memory bandwidth bound啊, 你看imc性能计数或者profiling一下就能发现的

他的实现只能bs=1, 每生成一个token就需要从内存完整访问一遍所有权重

另外llama.cpp的avx512仅用在浮点计算部分, 量化模型虽然检测了avx512vnni的flag, 但完全没有相关实现, 用的只是avxvnni(当然在memory bandwidth bound下这个其实无关紧要), 数据load/store和scale都是用avx2完成的, 这和他的量化实现是以32B块为单位有关, 不进行大幅改动的前提下没办法用avx512进行相关操作(这在单路spr上结合load队列深度限制最终造成load bandwidth无法超过大约170GB/s, 可以通过修改量化块大小回避, 但会失去模型文件兼容性)
 楼主| 发表于 2023-8-3 20:08 | 显示全部楼层
zhuifeng88 发表于 2023-8-3 19:58
llama.cpp是毫无疑问的memory bandwidth bound啊, 你看imc性能计数或者profiling一下就能发现的

另外llama ...

memory bandwidth之前测的好像amd的还慢一些。
发表于 2023-8-3 20:15 | 显示全部楼层
我輩樹である 发表于 2023-8-3 20:08
memory bandwidth之前测的好像amd的还慢一些。

而且视频可以看到你跑的是量化模型
量化的模型目前的实现实际上是几乎不会运行任何avx512的代码的
 楼主| 发表于 2023-8-3 20:16 | 显示全部楼层
zhuifeng88 发表于 2023-8-3 20:15
而且视频可以看到你跑的是量化模型
量化的模型目前的实现实际上是几乎不会运行任何avx512的代码的 ...

模型是Q4
发表于 2023-8-3 20:18 | 显示全部楼层


耗时95%以上的大头ggml_vec_dot_q4_0_q8_0里压根没有一丁点512宽度的代码
对于avx512vnni整个repo里甚至只是个检测有无的flag并且显示一下, 没有其他东西了
 楼主| 发表于 2023-8-3 20:21 | 显示全部楼层
zhuifeng88 发表于 2023-8-3 20:18
耗时95%以上的大头ggml_vec_dot_q4_0_q8_0里压根没有一丁点512宽度的代码
对于avx512vnni整个repo里甚至 ...

那我不解为什么有这种情况。刚才又测了下,intel的memory各项指标都是领先的。
发表于 2023-8-3 20:25 | 显示全部楼层
我輩樹である 发表于 2023-8-3 20:21
那我不解为什么有这种情况。刚才又测了下,intel的memory各项指标都是领先的。 ...

因为intel的main cache现在是l2, l3整个都是victim cache, 在这种victim完全无效的场景下 intel的l3等效容量就是0
 楼主| 发表于 2023-8-3 20:26 | 显示全部楼层
zhuifeng88 发表于 2023-8-3 20:25
因为intel的main cache现在是l2, l3整个都是victim cache, 在这种victim完全无效的场景下 intel的l3等效 ...

我去跑个profiling看看。
发表于 2023-8-3 20:48 | 显示全部楼层
所以到底有没有用啊
发表于 2023-8-3 20:51 | 显示全部楼层
玩ps3模拟器有用
发表于 2023-8-3 21:04 | 显示全部楼层
llama这种大模型推理几乎纯吃带宽不吃算力,上多强的AVX都不如超内存有用。13980HX是4800内存吧?
发表于 2023-8-3 21:46 | 显示全部楼层
llama.cpp 让我这种老年 Mac Pro 垃圾桶也体验了一下 AI 的快乐
发表于 2023-8-3 22:04 | 显示全部楼层
zhuifeng88 发表于 2023-8-3 19:58
llama.cpp是毫无疑问的memory bandwidth bound啊, 你看imc性能计数或者profiling一下就能发现的

他的实现 ...

llama.cpp不全是memory bound,在一个一个往外跳tok时确实是卡内存带宽,因为这个时候内部全在算矩阵向量乘法。
在你输入一大段文字几十上百toks等模型理解时是卡计算的,这个时候batch size默认512,内部是在算矩阵矩阵乘法的。如果说想对比计算能力,应该看耗时中prompt eval这一项

不过话说回来,这一步llama.cpp好像是直接调blas库的,所以不如直接看各自cpu最优blas库的gemm速度了

发表于 2023-8-3 22:14 | 显示全部楼层
ghgfhghj 发表于 2023-8-3 20:51
玩ps3模拟器有用

+1
发表于 2023-8-3 22:49 | 显示全部楼层
本帖最后由 zhuifeng88 于 2023-8-3 23:29 编辑
lshzh 发表于 2023-8-3 22:04
llama.cpp不全是memory bound,在一个一个往外跳tok时确实是卡内存带宽,因为这个时候内部全在算矩阵向量 ...


cpu侧ggml的量化推理是他自己实现的, 并没用blas库, (而且常见blas库也没针对分块量化数据的实现), 至于你说prompt的compute bound, 这部分差不多是忽略不计的耗时, 至少几百以内都是忽略不计, 不是什么需要关心的部分
65B模型双路genoa跑q4_1, 427 prompt token总共3秒而已
EAI`%C}16_%UED4F1W5(5NA.png
发表于 2023-8-3 22:58 | 显示全部楼层
目前主要是PS3模拟器有用
发表于 2023-8-3 23:04 | 显示全部楼层
前几年很有用,现在没卵用了。至少没人提了!
 楼主| 发表于 2023-8-3 23:25 | 显示全部楼层
a6057c 发表于 2023-8-3 21:04
llama这种大模型推理几乎纯吃带宽不吃算力,上多强的AVX都不如超内存有用。13980HX是4800内存吧? ...

是的。是ddr5 4800 vs. lpddr5 7500,理论带宽我没算错的话,是76.8 vs. 60,和测试的也差不多。毕竟一个界面宽度64,一个32。
发表于 2023-8-4 00:20 | 显示全部楼层
zhuifeng88 发表于 2023-8-3 22:49
cpu侧ggml的量化推理是他自己实现的, 并没用blas库, (而且常见blas库也没针对分块量化数据的实现), 至于 ...

可选的,你编译时链接了blas它就会用

blas库当然没有量化实现,所以llama.cpp这时候会先解压缩量化的权重到内存里再算乘法

大部分时候prompt eval是不用太多时间,两个例外一是ctx装满的时候,这时llama.cpp会把ctx/2的内容从新过一遍,8192ctx就要重新算一下4096个tok,另一个是你想让模型给你总结文章时当然也是prompt eval占主导

最主要不是楼主想看avx512在llama.cpp上的影响嘛,那就只有这个项目好看了

发表于 2023-8-4 00:47 | 显示全部楼层
发表于 2023-8-4 08:23 | 显示全部楼层
学习了,感谢分享~
发表于 2023-8-4 08:48 | 显示全部楼层
Intel大小核把avx512一砍, 就没人提avx512有用了
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

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

GMT+8, 2025-4-26 06:22 , Processed in 0.012585 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2007-2024 Chiphell.com All rights reserved.

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