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

deepspeed inference 显存问题

Open kevinuserdd opened this issue 1 year ago • 20 comments

Is there an existing issue for this?

  • [X] I have searched the existing issues

Current Behavior

deepspeed 执行chatglm推理会出现显存成倍的情况,具体如下:

deepspeed --num_gpus 2 test.py 服务器环境中有2个gpu,执行推理的时候,会出现显存为2倍参数量。 也就是可以理解为,并deepspeed加载后,并没有完成模型并行,2块gpu都加载了同样参数量,存在显存翻倍的情况。 测试bloom模型并未出现这个情况,具体不知道是不是和模型底层有关,chatglm为什么使用deepspeed推理时候会出现这个问题?

Expected Behavior

No response

Steps To Reproduce

import torch import os from transformers import AutoTokenizer, AutoModelForCausalLM,AutoModel import deepspeed from modeling_chatglm import ChatGLMForConditionalGeneration import pandas as pd model_id = "chatglm-6b" tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True) model = AutoModel.from_pretrained(model_id, trust_remote_code=True,torch_dtype=torch.float16) model = deepspeed.init_inference( model=model, # Transformers models mp_size=2, # Number of GPU dtype=torch.float16, # dtype of the weights (fp16) replace_method="auto", # Lets DS autmatically identify the layer to replace replace_with_kernel_inject=True, # replace the model with the kernel injector ) model.eval() #批量生成文案 prompt = "请用c++写一段代码,代码的功能是实现对数据库的查询,需要有注释" response, history = model.module.chat(tokenizer, prompt, history=[], max_length=4000) print(response) print("\n\n"+"="*70+" 显存占用 "+"="*70) print(os.system("nvidia-smi")

Environment

- OS:
- Python: 3.8.10
- Transformers:4.28.0
- PyTorch: 2.0
- CUDA Support (`python -c "import torch; print(torch.cuda.is_available())"`) :

Anything else?

No response

kevinuserdd avatar Apr 13 '23 03:04 kevinuserdd

能请教下怎么用deepspeed 做推理吗? x我堆了320g显存

superbigsea avatar Apr 13 '23 06:04 superbigsea

能请教下怎么用deepspeed 做推理吗? x我堆了320g显存

上面有推理代码,但是推理有问题,模型没有并行

kevinuserdd avatar Apr 13 '23 06:04 kevinuserdd

你的代码我能跑出来, 要么我们私聊下?

superbigsea avatar Apr 13 '23 07:04 superbigsea

你的代码我能跑出来, 要么我们私聊下?

跑出来我也能啊,我的问题你没看仔细吧? 我的问题是,显存问题,你测过1张卡和2张卡的时候,显存情况? 就是chatglm的显存1张卡15g,2张卡就变成了30g,正常2张卡的话,每张肯定比15g少

kevinuserdd avatar Apr 13 '23 10:04 kevinuserdd

能请教下怎么用deepspeed 做推理吗? x我堆了320g显存

上面有推理代码,但是推理有问题,模型没有并行

你的代码我能跑出来, 要么我们私聊下?

跑出来我也能啊,我的问题你没看仔细吧? 我的问题是,显存问题,你测过1张卡和2张卡的时候,显存情况? 就是chatglm的显存1张卡15g,2张卡就变成了30g,正常2张卡的话,每张肯定比15g少

我这边 好像mp_size=2 就跑不起来,等于1 就可以。

superbigsea avatar Apr 13 '23 10:04 superbigsea

能请教下怎么用deepspeed 做推理吗? x我堆了320g显存

上面有推理代码,但是推理有问题,模型没有并行

你的代码我能跑出来, 要么我们私聊下?

跑出来我也能啊,我的问题你没看仔细吧? 我的问题是,显存问题,你测过1张卡和2张卡的时候,显存情况? 就是chatglm的显存1张卡15g,2张卡就变成了30g,正常2张卡的话,每张肯定比15g少

我这边 好像mp_size=2 就跑不起来,等于1 就可以。

mp_size = 2可以运行啊,你服务器有没有2张卡? 等于1是肯定可以,我测试的是显存问题

kevinuserdd avatar Apr 13 '23 11:04 kevinuserdd

能请教下怎么用deepspeed 做推理吗? x我堆了320g显存

上面有推理代码,但是推理有问题,模型没有并行

你的代码我能跑出来, 要么我们私聊下?

跑出来我也能啊,我的问题你没看仔细吧? 我的问题是,显存问题,你测过1张卡和2张卡的时候,显存情况? 就是chatglm的显存1张卡15g,2张卡就变成了30g,正常2张卡的话,每张肯定比15g少

我这边 好像mp_size=2 就跑不起来,等于1 就可以。

mp_size = 2可以运行啊,你服务器有没有2张卡? 等于1是肯定可以,我测试的是显存问题

8张显卡,我单卡显存还正常

superbigsea avatar Apr 13 '23 12:04 superbigsea

请问下,用deepspeed之后回答一个问题的推理时间有减少吗?

huangxd- avatar Apr 14 '23 02:04 huangxd-

能请教下怎么用deepspeed 做推理吗? x我堆了320g显存

上面有推理代码,但是推理有问题,模型没有并行

你的代码我能跑出来, 要么我们私聊下?

跑出来我也能啊,我的问题你没看仔细吧? 我的问题是,显存问题,你测过1张卡和2张卡的时候,显存情况? 就是chatglm的显存1张卡15g,2张卡就变成了30g,正常2张卡的话,每张肯定比15g少

我这边 好像mp_size=2 就跑不起来,等于1 就可以。

mp_size = 2可以运行啊,你服务器有没有2张卡? 等于1是肯定可以,我测试的是显存问题

老哥请问下 deepspeed 训练粗来的增量模型 怎么样像pt 那样叠加在原来模型之上使用

superbigsea avatar Apr 14 '23 09:04 superbigsea

遇到了同样的问题,麻烦官方看看吧

colynhn avatar Apr 16 '23 14:04 colynhn

遇到了同样的问题,麻烦官方看看吧 目测很多教程和项目写了用deepspeed做多机多卡训练,其实压根就没仔细看显存情况,尤其是那些写推理教程的,真的就不认真研究是否真的用到模型并行

kevinuserdd avatar Apr 17 '23 02:04 kevinuserdd

同样的问题

qwjaskzxl avatar Apr 28 '23 08:04 qwjaskzxl

我遇到了类似问题,LLM 13B

xiangyuliu avatar Jun 14 '23 02:06 xiangyuliu

请问解决了吗,同样得问题,出现在baichuan 13B

DKQin avatar Jul 21 '23 03:07 DKQin

大佬,GPU显存成倍增加的问题有解决办法了吗?

liding1992 avatar Sep 08 '23 01:09 liding1992

我想知道,deepspeed的推理如何和自己的服务集成到一起呢,这样直接通过命令跑一个脚本肯定没啥意义吧

UncleFB avatar Oct 08 '23 14:10 UncleFB

同问这个问题

zhongJY1998 avatar Oct 26 '23 03:10 zhongJY1998

遇到了同样的问题,请问有大佬解决了吗?

leachee99 avatar Jun 18 '24 08:06 leachee99

同样存在这个问题,训练的时候也是,我发现多机和单机的显存占用没啥区别。用的deepspeed zero3

underwoodnoble avatar Jul 07 '24 10:07 underwoodnoble