如何在Windows系统为Huggingface Trainer启用CUDA?
问题:使用HuggingFace Transformers Trainer启用FP16训练时触发设备错误
我尝试在Python中使用HuggingFace Transformers库的Trainer,代码如下:
from transformers import Seq2SeqTrainingArguments from transformers import Seq2SeqTrainer # ... training_args = Seq2SeqTrainingArguments(fp16=True, # ... trainer = Seq2SeqTrainer( args=training_args, # ...
运行后出现如下错误:
ValueError: FP16 Mixed precision training with AMP or APEX (
--fp16)
and FP16 half precision evaluation (--fp16_full_eval) can only be
used on CUDA or NPU devices or certain XPU devices (with IPEX).
看起来缺少CUDA相关组件,但无法确定具体需要安装什么。我已尝试以下操作但未成功:
py -m pip install --upgrade setuptools pip wheel py -m pip install nvidia-pyindex py -m pip install nvidia-cuda-runtime-cu12 py -m pip install nvidia-nvml-dev-cu12 py -m pip install nvidia-cuda-nvcc-cu12
系统信息:
- Windows 11 Build 22621
- Python 3.11.7,运行于虚拟环境venv中
- 显卡:Geforce RTX 4070
解决思路
匹配CUDA驱动与PyTorch版本
- 先卸载已安装的nvidia-cuda相关包:
py -m pip uninstall nvidia-cuda-runtime-cu12 nvidia-nvml-dev-cu12 nvidia-cuda-nvcc-cu12 nvidia-pyindex -y - 安装带CUDA 12.x支持的PyTorch(RTX4070适配CUDA 12.x),执行以下命令:
py -m pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 - 验证CUDA可用性:运行
python -c "import torch; print(torch.cuda.is_available())",输出True即说明环境正常。
- 先卸载已安装的nvidia-cuda相关包:
确保虚拟环境能访问GPU
- 关闭所有占用GPU的程序(如其他Python进程、游戏等),重启虚拟环境后重新运行训练代码。
临时替代方案
- 若暂时无法修复CUDA环境,可将
Seq2SeqTrainingArguments中的fp16=True改为fp16=False,以单精度GPU或CPU模式运行训练。
- 若暂时无法修复CUDA环境,可将
更新显卡驱动
- 打开NVIDIA控制面板,检查驱动版本是否为最新。RTX4070需至少CUDA 11.8以上的驱动支持,建议更新至最新Game Ready驱动。
内容的提问来源于stack exchange,提问作者Frank im Wald
相关产品推荐
相关产品推荐

