-
Notifications
You must be signed in to change notification settings - Fork 488
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[BUG]RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu! #370
Comments
在 model.quantize 函数中有如下代码: if isinstance(v, torch.Tensor): 但是有些模型比如 qwen,qwenblock 在 forward 时接受的其中一个参数是 rotary_pos_emb_list。这个参数是一个列表: List[torch.Tensor]。但是以上的代码并不能把 List[torch.Tensor] 搬到 cuda 上。而计算是在 cuda 上进行的,所以会产生 cuda and cpu 的错误。 一个最简单的 workaround 是定义一个 nested_move_to_device: def nested_move_to_device(v, device): 然后替换掉最开始的代码,问题便可迎刃而解。 可以参考这个 repo: https://github.com/wangitu/unpadded-AutoGPTQ |
|
关于你的“推理报错的新问题”,原因是你在 model.save_quantize 后,保存你量化模型的目录里只有权重文件以及相关配置文件。 但是在 AutoGPTQForCausalLM.from_quantized 且 trust_remote_code 时,代码逻辑是找到 "保存量化模型的目录中的定义模型结构的文件" (qwen 是 modeling_qwen.py),然后把权重加载到上述文件定义的模型中。 可是,你保存量化模型的目录中,没有这样的 modeling_qwen.py,代码就会报错。 所以,把原始的 qwen 中除了权重以外的所有文件 (包括 tokenizer 的代码等),全都复制到你的量化模型的目录中,问题应该就可以解决了。 |
多谢您的指点,我从原始的模型复制了其他文件,推理有了新的问题:RuntimeError: value cannot be converted to type at::BFloat16 without overflow |
关于这个 overflow 的问题,我没有遇到过。但我估计一个可能的原因是(在你报错的最后一行): 我以前在 full-parameter sft 百川的时候也有溢出的问题,我当时的解决方法是把 torch.finfo(query.dtype).min 替换为 -50 (e^-50 已经足够小了)。你可以这样试试。另外附上一个相似的解决方案:https://discuss.pytorch.org/t/runtimeerror-value-cannot-be-converted-to-type-at-half-without-overflow-1e-30/109768 不能确定是否可以解决哈 |
Qwen-Chat-14B 同样的问题 |
好奇 Qwen 官方提供的 int4 模型是咋量化的,不过并没有提供量化脚本 |
同 |
@dlutsniper 能麻烦提供参考下最终解决的相关代码吗 |
我这可以量化了,就按照上面的方式:#370 (comment) |
Describe the bug
try quick start demo code for finetuned qwen model, but RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu!
Hardware details
GPU: RTX A40 48GB
CPU: 15vCpu Momory: 80GB
Software version
Version of relevant software such as operation system, cuda toolkit, python, auto-gptq, pytorch, transformers, accelerate, etc.
OS: Ubuntu 22.04.1 LTS
cuda: 11.8
python: 3.10.8
auto-gptq 0.4.2
transformers 4.32.0
torch 2.1.0
accelerate 0.23.0
To Reproduce
Expected behavior
as demo show result
Screenshots
Additional context
log:
The text was updated successfully, but these errors were encountered: