You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Allennlp如何配置使用CPU替代GPU运行本地代码

报错原因
  • 核心问题1:预训练SpanModel自带的AllenNLP配置默认指定使用GPU设备,本地无可用GPU时触发设备校验失败。
  • 核心问题2:本地安装的GPU版本PyTorch无匹配CUDA驱动,触发CUDA属性检查报错。
配置文件位置

代码中加载模型时指定的save_dir="pretrained_14lap"即为模型根目录,目录下的config.json就是需要修改的AllenNLP配置文件。文件内trainer.cuda_device字段为设备指定项:值为非负整数时调用对应编号的GPU,值为-1时调用CPU。

CPU运行配置方法

优先使用代码层配置,无需修改原配置文件,步骤如下:

  • 在代码所有导入语句的最开头添加环境变量,全局禁用CUDA设备识别,避免触发不必要的GPU检查:
import os
os.environ["CUDA_VISIBLE_DEVICES"] = ""
  • 初始化SpanModel时显式传入cuda_device=-1参数,强制模型使用CPU加载运行。
  • 如果仍抛出module 'torch.cuda' has no attribute '_check_driver'报错,说明当前环境安装的是GPU版PyTorch且无对应CUDA驱动,卸载后重装CPU版PyTorch即可,执行命令:
pip uninstall torch -y
# 你的运行环境为Python3.7,请安装1.13.x及以下兼容版本的CPU版PyTorch
pip install torch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1

如果当前使用的SpanModel版本不支持直接传入cuda_device参数,再打开pretrained_14lap/config.json,找到trainer节点下的cuda_device字段,将值改为-1后保存即可。

修改后可直接运行的完整代码
# 首行添加环境变量,禁用CUDA设备识别
import os
os.environ["CUDA_VISIBLE_DEVICES"] = ""

import sys
sys.path.append("aste")
from pathlib import Path
from data_utils import Data, Sentence, SplitEnum
from wrapper import SpanModel

def predict_sentence(text: str, model: SpanModel) -> Sentence:
    path_in = "temp_in.txt"
    path_out = "temp_out.txt"
    sent = Sentence(tokens=text.split(), triples=[], pos=[], is_labeled=False, weight=1, id=1)
    data = Data(root=Path(), data_split=SplitEnum.test, sentences=[sent])
    data.save_to_path(path_in)
    model.predict(path_in, path_out)
    data = Data.load_from_full_path(path_out)
    return data.sentences[0]

text = "Did not enjoy the new Windows 8 and touchscreen functions ."
# 显式指定使用CPU加载模型
model = SpanModel(save_dir="pretrained_14lap", random_seed=0, cuda_device=-1)
sent = predict_sentence(text, model)
print(sent.triples)

内容的提问来源于stack exchange,提问作者Xiaoqing Wan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 16:24:34