用官方提供的代码:
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("D:\data\llm\GLM", trust_remote_code=True, revision="")
model = AutoModel.from_pretrained("D:\data\llm\GLM", trust_remote_code=True, revision="").half().cuda()
model = model.eval()
response, history = model.chat(tokenizer, "你好", history=[])
print(response)
踩了无数坑之后,终于调出了问答结果,但是发现问着问着就失去响应了,大约能问20多次,就是卡在
response, history = model.chat(tokenizer, "你好", history=[])
这一句,执行不结束,也不报错,就是没响应。
或者一段时间不提问,再次提问的时候也会这样。体验就好像GLM有十分钟的使用限制一样。
我的环境是
WINDOWS10
NVIDIA A40 (47G显存)
python-3.10.11
cuda_11.3
torch-1.12
transformers 4.28.1
强制手动结束后输出如下:
File "D:\Program Files\Python310\lib\site-packages\torch\autograd\grad_mode.py", line 27, in decorate_context
return func(*args, **kwargs)
File "C:\Users\CCSTC/.cache\huggingface\modules\transformers_modules\GLM2\modeling_chatglm.py", line 1028, in chat
outputs = self.generate(**inputs, **gen_kwargs)
File "D:\Program Files\Python310\lib\site-packages\torch\autograd\grad_mode.py", line 27, in decorate_context
return func(*args, **kwargs)
File "D:\Program Files\Python310\lib\site-packages\transformers\generation\utils.py", line 1485, in generate
return self.sample(
File "D:\Program Files\Python310\lib\site-packages\transformers\generation\utils.py", line 2560, in sample
next_tokens = torch.multinomial(probs, num_samples=1).squeeze(1)
KeyboardInterrupt
想问问可能是哪里的问题?
问题已找到,是我使用的虚机的关系。
不知道你这个问题是否已经解决, 如果还没有解决的话:这个问题可能是由于模型训练过程中遇到了梯度消失或梯度爆炸的问题导致的。解决这个问题的方法可以尝试以下几个步骤:
采用更小的学习率: 尝试减小学习率,可以通过将AutoModel.from_pretrained
方法中的learning_rate
参数设置为一个较小的值来实现。例如:AutoModel.from_pretrained("D:\data\llm\GLM", trust_remote_code=True, revision="", learning_rate=0.001)
使用梯度剪裁: 可以尝试使用梯度剪裁来避免梯度爆炸的问题。可以通过在训练循环中添加梯度剪裁的步骤来实现。例如:
python torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)
这将限制梯度的范数在1.0以下。
尝试更小的模型: 如果模型太大,可能会导致内存不足或计算资源不足。尝试使用一个更小的模型来验证是否为资源问题。可以尝试使用AutoModel.from_pretrained
方法的model_size
参数来指定更小的模型。例如:AutoModel.from_pretrained("D:\data\llm\GLM", trust_remote_code=True, revision="", model_size="small")
更新软件版本: 由于Transformers库是开源的,存在一些可能导致问题的bug。你可以尝试更新Transformers库到最新版本,看看问题是否得到解决。可以使用以下命令更新Transformers库:
python pip install --upgrade transformers
如果尝试了上述步骤后问题仍未解决,可能是由于其他原因导致的问题,我无法提供更进一步的解决方案。