SJTU-IPADS / PowerInfer

High-speed Large Language Model Serving on PCs with Consumer-grade GPUs
MIT License
7.9k stars 406 forks source link

关于在A100显卡上测得的效果异常的疑问 #184

Open bulaikexiansheng opened 4 months ago

bulaikexiansheng commented 4 months ago

作者您好!我在3090、4090、A100-80G上进行了复现,复现的细节如下

选用的模型:PowerInfer/ReluLLaMA-70B-PowerInfer-GGUF

通过对输出的结果分析,得到各个指标如下面的柱状图:

当限制输出长度为128时, 限制一张卡可见_avg_4090_a100_3090

当限制输出长度为256时, 限制一张卡可见_avg_4090_a100_3090

从两个图看出,3090和4090表现符合预期,因为4090计算能力上高于3090,但是对于A100来说显示比较异常;

因此我有以下几个问题

  1. A100的带宽大于4090和3090,为何在load_time上表现最差?
  2. A100的计算能力比4090和3090强,为何token生成速率慢于4090和3090?
  3. 除了A100,上述图中还有没有其他错误的地方?

在所有的机器上,我的推理代码都是: ./build/bin/main -m ./[PowerInfer/ReluLLaMA-70B-PowerInfer-GGUF/llama2-70b-relu.q4.powerinfer.gguf -n 128 -t 8 -p "Once upon a time"

这种异常的情况是因为环境的原因吗?我在A100-40G和A100-80G上测得都有这种情况。

bulaikexiansheng commented 4 months ago

补充一下我做的实验过程,每台机器上间隔5秒跑10次取平均值./build/bin/main -m ./[PowerInfer/ReluLLaMA-70B-PowerInfer-GGUF/llama2-70b-relu.q4.powerinfer.gguf -n 128 -t 8 -p "Once upon a time"代码。还有一个疑问就是,按理来说,无论生成序列长度是多少,load_time不应在A100波动这么大才对。

qw1319 commented 3 months ago

我遇到和你一样的问题 a100使用系数模型 性能比原始模型还要差很多,测试模型为relullama2-7b

qw1319 commented 3 months ago

这边同样用a100运行生成的promat貌似是错的 image 同样用cpu跑的结果是正常的 image

是否cuda代码不严谨,触发了a100 arch的bug?