成功解決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 版本并沒有這個模塊(或該模塊未啟用)。這通常出現(xiàn)在 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
匹配官方正確版本
根據(jù)官方文檔和社區(qū)反饋,以下是一些兼容的 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