ztxz16 / fastllm

纯c++的全平台llm加速库,支持python调用,chatglm-6B级模型单卡可达10000+token / s,支持glm, llama, moss基座,手机端流畅运行
Apache License 2.0
3.3k stars 337 forks source link

chatglm2-6b上使用加速不明显 #172

Open sun1092469590 opened 1 year ago

sun1092469590 commented 1 year ago

先用chatglm2-6b生成fp16.flm和int4.flm,然后分别测速:

cuda:11.6 GPU:matrox g200eh3 batch=1 测速代码: start = time.time() text = "中国法定货币是什么?" outs = "" for i in range(10): out = model.response(text) outs += out end = time.time() token_count = len(tokenizer.tokenize(outs)) #推理结果的token数 print( token_count/(end - start), 'tokens/s')

测速结果: chatglm2-6b-fp16(原6b模型):18tokens/s chatglm2-6b-fp16-fastllm(转为fp16.flm再加速):12tokens/s

chatglm2-6b-int4(原6b模型在线量化为int4):8tokens/s chatglm2-6b-int4-fastllm(转为int4.flm再使用加速推理):11tokens/s

看着加速不明显啊,特别是fp16时,是什么情况呢?

ztxz16 commented 1 year ago

应该是跟GPU型号有关,在有些GPU上表现好像不是很好(我手头的GPU加速都还比较明显.. 以后有机会我多找些GPU试试)

sun1092469590 commented 1 year ago

应该是跟GPU型号有关,在有些GPU上表现好像不是很好(我手头的GPU加速都还比较明显.. 以后有机会我多找些GPU试试)

首先谢谢作者的开源和及时答疑。我当时这个测速时还有另一个模型在推理测试,可能资源不够,加速没体现出来? 我昨天又重测试了一下,GPU上只有待测速的模型在跑,batch=1,测速方法也和之前的一样,计算总token数和总时间得到的,结果如下: 测速结果: chatglm2-6b-fp16(原6b模型):33tokens/s chatglm2-6b-fp16-fastllm(转为fp16.flm再加速):67tokens/s

chatglm2-6b-int4(原6b模型在线量化为int4):18tokens/s chatglm2-6b-int4-fastllm(转为int4.flm再使用加速推理):70tokens/s

这样看加速还是挺明显的。 但是都使用加速时,fp16和int4速度差不多,区分不明显。使用您给的batchmark测速方法时,chatglm2-6b-int4-fastllm是90tokens/s,chatglm2-6b-fp16-fastllm是70tokens/s,int4要速度快一些。

ztxz16 commented 1 year ago

应该是跟GPU型号有关,在有些GPU上表现好像不是很好(我手头的GPU加速都还比较明显.. 以后有机会我多找些GPU试试)

首先谢谢作者的开源和及时答疑。我当时这个测速时还有另一个模型在推理测试,可能资源不够,加速没体现出来? 我昨天又重测试了一下,GPU上只有待测速的模型在跑,batch=1,测速方法也和之前的一样,计算总token数和总时间得到的,结果如下: 测速结果: chatglm2-6b-fp16(原6b模型):33tokens/s chatglm2-6b-fp16-fastllm(转为fp16.flm再加速):67tokens/s

chatglm2-6b-int4(原6b模型在线量化为int4):18tokens/s chatglm2-6b-int4-fastllm(转为int4.flm再使用加速推理):70tokens/s

这样看加速还是挺明显的。 但是都使用加速时,fp16和int4速度差不多,区分不明显。使用您给的batchmark测速方法时,chatglm2-6b-int4-fastllm是90tokens/s,chatglm2-6b-fp16-fastllm是70tokens/s,int4要速度快一些。

可能是受Prompt长度影响吧,benchmark里面用的prompt很短

bigmover commented 1 year ago

应该是跟GPU型号有关,在有些GPU上表现好像不是很好(我手头的GPU加速都还比较明显.. 以后有机会我多找些GPU试试)

首先谢谢作者的开源和及时答疑。我当时这个测速时还有另一个模型在推理测试,可能资源不够,加速没体现出来? 我昨天又重测试了一下,GPU上只有待测速的模型在跑,batch=1,测速方法也和之前的一样,计算总token数和总时间得到的,结果如下: 测速结果: chatglm2-6b-fp16(原6b模型):33tokens/s chatglm2-6b-fp16-fastllm(转为fp16.flm再加速):67tokens/s chatglm2-6b-int4(原6b模型在线量化为int4):18tokens/s chatglm2-6b-int4-fastllm(转为int4.flm再使用加速推理):70tokens/s 这样看加速还是挺明显的。 但是都使用加速时,fp16和int4速度差不多,区分不明显。使用您给的batchmark测速方法时,chatglm2-6b-int4-fastllm是90tokens/s,chatglm2-6b-fp16-fastllm是70tokens/s,int4要速度快一些。

可能是受Prompt长度影响吧,benchmark里面用的prompt很短

有一些codegee的数据吗?

bigmover commented 1 year ago

应该是跟GPU型号有关,在有些GPU上表现好像不是很好(我手头的GPU加速都还比较明显.. 以后有机会我多找些GPU试试)

首先谢谢作者的开源和及时答疑。我当时这个测速时还有另一个模型在推理测试,可能资源不够,加速没体现出来? 我昨天又重测试了一下,GPU上只有待测速的模型在跑,batch=1,测速方法也和之前的一样,计算总token数和总时间得到的,结果如下: 测速结果: chatglm2-6b-fp16(原6b模型):33tokens/s chatglm2-6b-fp16-fastllm(转为fp16.flm再加速):67tokens/s chatglm2-6b-int4(原6b模型在线量化为int4):18tokens/s chatglm2-6b-int4-fastllm(转为int4.flm再使用加速推理):70tokens/s 这样看加速还是挺明显的。 但是都使用加速时,fp16和int4速度差不多,区分不明显。使用您给的batchmark测速方法时,chatglm2-6b-int4-fastllm是90tokens/s,chatglm2-6b-fp16-fastllm是70tokens/s,int4要速度快一些。

可能是受Prompt长度影响吧,benchmark里面用的prompt很短

请问benchmark 的数据是怎么测试出来的?能不能再本地复现测试

bigmover commented 1 year ago

目前我使用A10 测试codegeex2,模型转换为格式flm后 单cpu --batch=1 得到42 tokens/s --batch=4 得到142 tokens/s。以上都是基于beijing.txt 测试得到,我觉得和预期有些差距,请问能给给建议进一步提高吞吐量