ChatGLM-6B icon indicating copy to clipboard operation
ChatGLM-6B copied to clipboard

推理速度有点慢,有什么好方法加速吗

Open Jehuty-ML opened this issue 2 years ago • 36 comments
trafficstars

Jehuty-ML avatar Mar 15 '23 01:03 Jehuty-ML

m

rjk-git avatar Mar 15 '23 02:03 rjk-git

是呀,支持转成FasterTransformer吗

Henryflee avatar Mar 15 '23 02:03 Henryflee

INT4量化应该会快一点。。缩小输入与输出的长度应该会快一点。。 但是希望在快的同时完全保持效果是不太现实的。

yaleimeng avatar Mar 15 '23 03:03 yaleimeng

同问,我一张1080的卡,问了一个旅游地点问题,都要50s才有结果返回。

dogvane avatar Mar 15 '23 16:03 dogvane

@dogvane 6B参数的模型,上下文窗口又这么大,慢是必然的。能勉强跑起来就不错了。想象一下,每秒钟输出4~5个字,是不是也说的过去了。跟打字速度差不多 你的GPU也就只能跑跑1B甚至更小的模型而已,体验会好一点。

yaleimeng avatar Mar 16 '23 00:03 yaleimeng

好奇chatGPT为啥可以这么快呢,有啥技术要点不

huangtao36 avatar Mar 16 '23 03:03 huangtao36

好奇chatGPT为啥可以这么快呢,有啥技术要点不

几百亿美元堆出来的速度

Attect avatar Mar 16 '23 03:03 Attect

好奇chatGPT为啥可以这么快呢,有啥技术要点不

@huangtao36 ChatGPT后面是成吨的H100 GPU来给你inference结果.用这些设备跑这个model也会很快.

我目前用4090跑FP16其实速度并不慢,给一个bench dp: 我的prompt是76 token (242 characters)的一个数学问题 在我的机器上ChatGLM-6B花了20s输出的结果是578 token (2214 characters) 有ChatGPT plus会员的情况下,同样的prompt,用Legacy (GPT3.5)花了19s,输出结果是480 token (2038 characters)

对于6B参数的LLM, 1080显存太小了 @dogvane

MatrixDoge avatar Mar 16 '23 03:03 MatrixDoge

所以其实影响观感速度的原因是因为chatgpt流式输出...

rjk-git avatar Mar 16 '23 03:03 rjk-git

业内人士不会以为单张卡跑6B大模型就能0.1秒出几百字结果吧? chatGPT部署在微软azure云上,数不清的GPU服务器集群,还有大型超算支持。

yaleimeng avatar Mar 16 '23 05:03 yaleimeng

我看设置里vocab的词表有15W,这很大。我曾经有个大规模分类的项目里用BERT,但鉴于最后一层输出的类别(几千)很多,发现最后的计算每个类别的概率还有softmax这一步很耗时和计算量。我觉得如果仅在中文场景的话可以基于BERT之类的词表做词表压缩,并且把第一层的token embedding layer进行重新改写(把不要的token embedding去掉,相应词表也要做改变)这应该能减少一些耗时

SCAUapc avatar Mar 21 '23 08:03 SCAUapc

我看设置里vocab的词表有15W,这很大。我曾经有个大规模分类的项目里用BERT,但鉴于最后一层输出的类别(几千)很多,发现最后的计算每个类别的概率还有softmax这一步很耗时和计算量。我觉得如果仅在中文场景的话可以基于BERT之类的词表做词表压缩,并且把第一层的token embedding layer进行重新改写(把不要的token embedding去掉,相应词表也要做改变)这应该能减少一些耗时

好吧今天看了下,底层不是像以前BERT GPT之类的分字,而是实打实的分词了,那就没办法了

SCAUapc avatar Mar 22 '23 07:03 SCAUapc

我用的CPU推理的,macOS的intel U 看推理的时候,CPU的利用率并不高,只有一个python进程的利用率是100%,其他核都在围观。 是不是没有并行计算啊???

taozhijiang avatar Mar 22 '23 16:03 taozhijiang

我用的CPU推理的,macOS的intel U 看推理的时候,CPU的利用率并不高,只有一个python进程的利用率是100%,其他核都在围观。 是不是没有并行计算啊???

好奇intel U的mac多久能跑一个样本

gitprwang avatar Mar 28 '23 01:03 gitprwang

image 苹果m1一个你好就这么慢

dakele895 avatar Apr 09 '23 06:04 dakele895

一次性生成所有结果,速度是比较慢的,硬件算力是有上限的,特别是并发时,这个问题尤为突出,一般解决办法是渐进式推理,也就是通常所说的流方式,结果是一点一点出来的,看起来像打字的感觉,但实际上是为了解决性能问题的。ChatGLM-6B已支持流模式:model.stream_chat,调用方法可参考: https://github.com/little51/ChatGLM-6B/blob/main/api_stream.py

little51 avatar Apr 09 '23 06:04 little51

慢是可以理解的,但为什么int4反而比fp16慢,还慢得很明显?

geolvr avatar Apr 27 '23 02:04 geolvr

请问下手持4090卡的同学,推理一次大概多久。。。

ice-2022 avatar Apr 28 '23 08:04 ice-2022

慢是可以理解的,但为什么int4反而比fp16慢,还慢得很明显?

解决了吗? 我也发现了这个问题,量化的比float16慢

kevinuserdd avatar May 05 '23 08:05 kevinuserdd

慢是可以理解的,但为什么int4反而比fp16慢,还慢得很明显?

解决了吗? 我也发现了这个问题,量化的比float16慢

慢很多,同一台机器大概慢30%

igiraffe avatar May 08 '23 04:05 igiraffe

慢是可以理解的,但为什么int4反而比fp16慢,还慢得很明显?

解决了吗? 我也发现了这个问题,量化的比float16慢

没解决,官方似乎不重视这个问题。我只能通过加大推理batchsize变相提速。。

geolvr avatar May 08 '23 07:05 geolvr

慢是可以理解的,但为什么int4反而比fp16慢,还慢得很明显?

解决了吗? 我也发现了这个问题,量化的比float16慢

没解决,官方似乎不重视这个问题。我只能通过加大推理batchsize变相提速。。

这种加大推理batchsize变相提速带来的后果是显存的不断增加,算了一下,其实增加的显存和提升的推理效率是一样的

HL0718 avatar May 10 '23 07:05 HL0718

同问,我一张1080的卡,问了一个旅游地点问题,都要50s才有结果返回。

@dogvane 方便了解下你的NVIDIA drive 和 cuda版本是多少吗?用430的版本,pytoch 提示 too old

BillLucky avatar May 12 '23 13:05 BillLucky

多堆几张显卡能更快吗?确实快这件事情非常关键

Hkaisense avatar May 14 '23 09:05 Hkaisense

Hi, All. 速度和吞吐量上有需求,可以尝试: https://huggingface.co/TMElyralab/lyraChatGLM 。 这个是对 ChatGLM6B 的加速版本,已封装 Python 上层调用,兼容 A100, V100, A10, A30 等显卡。

vanewu avatar Jun 02 '23 09:06 vanewu

慢是可以理解的,但为什么int4反而比fp16慢,还慢得很明显?

解决了吗? 我也发现了这个问题,量化的比float16慢

没解决,官方似乎不重视这个问题。我只能通过加大推理batchsize变相提速。。

想问一下,如何加大推理batchsize

liao0028 avatar Jun 04 '23 02:06 liao0028

Hi, All. 速度和吞吐量上有需求,可以尝试: https://huggingface.co/TMElyralab/lyraChatGLM 。 这个是对 ChatGLM6B 的加速版本,已封装 Python 上层调用,兼容 A100, V100, A10, A30 等显卡。

这个好像只能用原版,不支持加载自己微调后的模型

geolvr avatar Jun 05 '23 02:06 geolvr

Hi, All. 速度和吞吐量上有需求,可以尝试: https://huggingface.co/TMElyralab/lyraChatGLM 。 这个是对 ChatGLM6B 的加速版本,已封装 Python 上层调用,兼容 A100, V100, A10, A30 等显卡。

这个好像只能用原版,不支持加载自己微调后的模型

对,且只支持N卡,我想在A卡上部署,您能否提供您增大推理时batch_size的源码和方法,谢谢。

liao0028 avatar Jun 05 '23 07:06 liao0028

同问

Vange95 avatar Jun 09 '23 10:06 Vange95

Hi, All. 速度和吞吐量上有需求,可以尝试: https://huggingface.co/TMElyralab/lyraChatGLM 。 这个是对 ChatGLM6B 的加速版本,已封装 Python 上层调用,兼容 A100, V100, A10, A30 等显卡。

这个好像只能用原版,不支持加载自己微调后的模型

对,且只支持N卡,我想在A卡上部署,您能否提供您增大推理时batch_size的源码和方法,谢谢。

可以看一下我提的这个pull request,使用了batch推理,支持高并发。亲测一千条数据只需要30秒就能返回响应。https://github.com/THUDM/ChatGLM-6B/pull/1244

Lukangkang123 avatar Jun 15 '23 11:06 Lukangkang123