分享

成功解决ImportError: cannot import name ‘DTensor‘ from ‘torch.distributed.tensor‘

 处女座的程序猿 2025-05-25 发布于上海

成功解决ImportError: cannot import name 'DTensor' from 'torch.distributed.tensor'

目录


解决问题

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 torch

print(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

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多