部署了很长时间的一个服务突然就不工作了,功能基于qwen lora微调,同时采用clip对输入文本进行了约束,整个程序流程中会用到pretrainedmodels, clip内部会调用hashlib。说下我的debug思路,虽然还没找到根因,但对大家解决问题应该会有些帮助。
1. 首先,我肯定怀疑环境问题,我的推理部署环境平时还用来做一些训练,难免会做一些pip install之类。发现问题之后,我把所有模块重新pip install了一遍,问题没解决。
2. 怀疑系统环境问题,比如python是不是坏了,比如磁盘是不是嗝了一些块,所以我把系统也给重装了一遍,全部软件重新安装了一遍,问题没有解决-_-!!! 吐槽一下,现在安装torch老是会遇到什么hash不匹配之类的,需要加--no-cache-dir,有时候还不管用,折腾死了,不知道世界咋了。NVIDIA driver和cuda也经常更新版本,用最新的容易出问题,快把老血吐没了。ubuntu 22.04也没那么好安装,几个安装盘u盘都会出现问题安装不上,卡在xorg启动上,最后只好用最原始的文本安装模式才搞定。
3. 无论如何,2没起到作用。好,这下安下心来,干脆debug一下各种source code,网上搜下来,无非是调整earlystopping或者temperature之类,或者直接修改transformers代码里multinormal加几个nan值处理的逻辑,也不起作用。还有怀疑和卡的数量或者用哪张卡有关系的,难怪牛顿也要信上帝去了。
4. 抓狂中,幸好!!!我还有一台机器,环境一模一样可以工作的,所以我就开始怀疑是不是有些保存的权重已经出问题了,于是从那台机器同步了一下qwen 14b chat的模型权重。上天眷顾,错误变了,不再是"RuntimeError: probability tensor contains either inf, nan or element < 0 ",出来clip ViT-B-32.pt权重hash不match,这个也是比较奇怪,经过轮番轰炸的print debug之后,总结出规律就是,下面这个代码不工作,两次输出的hash不一样
import hashlib
import pretrainedmodels
print(hashlib.sha256(open("./anyfile", "rb").read()).hexdigest())
print(hashlib.sha256(open("./anyfile", "rb").read()).hexdigest())
第4步里有不少不符合逻辑的地方,按道理同步qwen权重不应该会对hashlib有啥影响,另外,就算hashlib出问题,但和之前标题里的错误,八杆子也关联不到一起。无论如何,基于这个发现,我就对pretrainedmodels进行了调试,也许在这个过程,python会重新解析pretrainedmodels模块,"RuntimeError: probability tensor contains either inf, nan or element < 0 "居然就消失了,模型又重新正常工作了。心累! 不过我猜测,可能还是存放权重的磁盘出了什么问题,导致一系列莫名其妙的行为。
使用`web_demo.py`,部署网页端示例,报错`
Runtime
Error
:
probability
tensor
contains
either `
inf
`, `
nan
` or
element
< 0` · Issue #1642 · hiyouga/LLaMA-Factory · GitHub。(2)另一种说法是,要更新代码,当前测试的是0.4.0版本的源码,未更新,大家有兴趣可以尝试一下,放在评论区。(1)一种说法是,原因是双卡推理,当前的确也出现该问题,A100上正常,双4090有问题。
最近在使用 Qwen2-7B-Instruct 的时候报错
Runtime
Error
: “triu_tril_cuda_template” not implemented for ‘BFloat16’,尝试解决了几个星期终于解决了问题,以下是整体解决思路与方案。
ChatGLM推理报错
Runtime
Error
:
probability
tensor
contains
either `
inf
`, `
nan
` or
element
< 0
在构建网络框架后,运行代码,发现很多
tensor
出现了
inf
值或者
nan
,在很多博客上没有找到对应的解决方法,大部分是基于numpy写的,比较麻烦。下面基于torch BIF函数实现替换这2个值。a = torch.
Tensor
([[1, 2, np.
nan
], [np.
inf
, np.
nan
, 4], [3, 4, 5]])aOut[158]:
tensor
([[1., 2.,
nan
],[
inf
...
下载好的vicuna-7b模型的地址,本地路径/root/vicuna-7b/vicuna-7b-delta-v11(lmsys/vicuna-7b-delta-v1.1意思是联网下载vicuna-7b-delta-v1.1)export PATH=$PATH:/usr/local/cuda-11.6/bin 将/usr/local/cuda-11.6/bin添加到环境变量。参数:--model_size是指定哪个参数级的模型,7B是70亿参数模型,还有13B/30B/65B的模型。
参考了CDSN上的文章,但发现不work, 不是这里有问题,就是那里有问题,查阅了大量的资料,做了无数次试验,终于整理出来了一个完整的教程,保可用,保真~~~~~如果各位遇到什么问题,也可以私信我。由于A10的驱动,cuda均未安装,为了省事,直接申请了另一台,初始化完成后,打成镜像,然后再为A10重装就可以了,这样最省事。不多废话了,直接说,如何使用腾讯云上的机器,自建一个简单的类似ChatGPT、Kimi的会话机器人(没有他们的强大)登录服务器后,在安装V100的镜像时,可以看到显卡驱动在安装。
在使用torch.multinomial()对rnn网络输出值进行选择时,当学习率高于0.000001时,运行报错“
Runtime
Error
: invalid multinomial distribution (encountering
probability
entry < 0)