环境是Ubuntu20.04
双卡 4090
https://github.com/QwenLM/Qwen-7B.git
拉的代码,安装了依赖后,下载的qwen-7b-chat和qwen-14b-chat后,运行web_demo.py也成功,只要一输入就提示报错
probability tensor contains either `inf`, `nan` or element < 0
根据您提供的信息,您在运行 web_demo.py
时遇到报错,提示 probability tensor contains either 'inf', 'nan' or element 0
。这通常与模型推理过程中出现数值不稳定或输入数据异常有关。以下是针对该问题的详细分析和解决步骤:
数值不稳定:
模型在推理过程中生成的概率分布中出现了 inf
(无穷大)、nan
(非数字)或零值。这可能是由于以下原因:
硬件相关问题:
您使用的是双卡 4090,可能存在多 GPU 环境下的设备分配问题。如果未正确设置 GPU 的可见性或资源分配,可能导致计算结果异常。
依赖版本冲突:
如果安装的依赖库(如 PyTorch、Transformers 等)版本与代码要求不匹配,也可能引发此类问题。
print("Input text:", input_text)
print("Tokenized input:", tokenizer(input_text, return_tensors="pt"))
qwen-7b-chat
和 qwen-14b-chat
模型权重完整且未损坏。rm -rf qwen-7b-chat qwen-14b-chat
git clone https://github.com/QwenLM/Qwen-7B.git
GPU 驱动和 CUDA 配置:
确保您的系统已正确安装 NVIDIA 驱动和 CUDA 工具包,并与 PyTorch 版本兼容。可以通过以下命令检查:
nvidia-smi
python -c "import torch; print(torch.cuda.is_available())"
如果 torch.cuda.is_available()
返回 False
,说明 CUDA 配置有问题,请参考知识库文档中的步骤重新安装驱动和 CUDA。
多 GPU 设置:
如果使用双卡 4090,建议明确指定使用的 GPU 设备。例如,在运行脚本前设置环境变量:
export CUDA_VISIBLE_DEVICES=0,1
或者在代码中通过 torch.cuda.set_device()
明确指定设备。
确保安装的依赖库版本与项目要求一致。可以参考项目的 requirements.txt
文件重新安装依赖:
pip install -r requirements.txt
如果未提供 requirements.txt
,请确保以下关键库的版本兼容:
在推理过程中,尝试调整生成参数以避免数值不稳定。例如,降低 temperature
或增加 top_p
值:
outputs = model.generate(
input_ids,
max_length=50,
temperature=0.7, # 降低温度值
top_p=0.9, # 增加 top-p 值
do_sample=True
)
如果硬件支持,启用混合精度(FP16)可以提高计算效率并减少数值溢出的风险。参考知识库文档中的配置方法,设置 fp16
参数:
from torch.cuda.amp import autocast
with autocast():
outputs = model.generate(input_ids)
日志调试:
在代码中添加详细的日志输出,定位具体报错位置。例如,打印模型输出的 logits 和概率分布:
print("Logits:", outputs.logits)
print("Probabilities:", torch.softmax(outputs.logits, dim=-1))
单卡测试:
如果问题仍未解决,建议先在单卡环境下运行,排除多 GPU 配置问题。
通过上述步骤,您可以逐步排查并解决 probability tensor contains either 'inf', 'nan' or element 0
的问题。如果问题仍然存在,请提供更多上下文信息(如完整的报错日志、代码片段等),以便进一步分析。
希望以上内容对您有所帮助!您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。
ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!欢迎加入技术交流群:微信公众号:魔搭ModelScope社区,钉钉群号:44837352