成功解决ImportError: cannot import name ‘DTensor‘ from ‘torch.distributed.tensor‘
成功解决ImportError: cannot import name 'DTensor' from 'torch.distributed.tensor'
目录
解决问题
解决思路
解决方法
查询CUDA 驱动版本
查询torch版本
匹配官方正确版本
解决问题
llamafactory-cli export examples/merge_lora/qwen25_7b_lora_sft_merge.yaml
Traceback (most recent call last):
File "/usr/local/bin/llamafactory-cli", line 8, in <module>
sys.exit(main())
File "/home/work/shop-chatbot-common-1-sg/yayun/LLaMA-Factory/src/llamafactory/cli.py", line 115, in main
COMMAND_MAP[command]()
File "/home/work/shop-chatbot-common-1-sg/yayun/LLaMA-Factory/src/llamafactory/train/tuner.py", line 148, in export_model
model.save_pretrained(
File "/usr/local/lib/python3.10/dist-packages/transformers/modeling_utils.py", line 3569, in save_pretrained
ptrs[id_tensor_storage(tensor)].append(name)
File "/usr/local/lib/python3.10/dist-packages/transformers/pytorch_utils.py", line 300, in id_tensor_storage
from torch.distributed.tensor import DTensor
ImportError: cannot import name 'DTensor' from 'torch.distributed.tensor' (/usr/local/lib/python3.10/dist-packages/torch/distributed/tensor/__init__.py)
解决思路
这个错误是由于 Hugging Face Transformers 库试图从 torch.distributed.tensor 中导入 DTensor,但当前安装的 PyTorch 版本并没有这个模块(或该模块未启用)。这通常出现在 PyTorch 版本和 Transformers 版本不兼容时。
解决方法
查询CUDA 驱动版本
nvidia-smi
CUDA Version: 12.4
查询torch版本
import torchprint(torch.__version__) # 确认 PyTorch 版本(推荐 >= 2.1)
print(torch.version.cuda) # PyTorch 编译时用的 CUDA 版本
print(torch.cuda.is_available())pip show torch transformers | grep Version
Version: 2.3.0a0+ebedce2
Version: 4.52.1
匹配官方正确版本
根据官方文档和社区反馈,以下是一些兼容的 PyTorch 和 Transformers 版本组合:
- PyTorch 2.5.0 + Transformers 4.52.1:适用于需要使用 DTensor 的最新功能。
- PyTorch 2.3.0 + Transformers 4.36.2:适用于不需要 DTensor 的功能。
pip install torch==2.5.0 transformers==4.52.1
pip show torch transformers