我在Jetson有一个NLP模型,在Py手电筒上训练。我安装了Jetson来监控CPU和GPU的使用情况。当我运行Python脚本时,只有CPU内核才能加载,GPU条不会增加.我在Google上搜索过这方面的关键词,比如“如何检查Py手电是否使用GPU?”根据他们对面临类似问题的其他人的建议,cuda是可用的,我的Jetson中也有cuda设备。但是,我不明白为什么GPU条不改变,CPU核心条走到尽头。
我不想使用CPU,计算时间太长了。在我看来,它使用的是CPU而不是GPU。我如何确定,如果它使用CPU,如何将它更改为GPU?
注:模型取自拥抱式变压器库。我尝试在模型上使用cuda()方法。(model.cuda())在这个场景中,使用GPU,但我无法从模型获得输出并引发异常。
以下是代码:
from transformers import AutoTokenizer, AutoModelForQuestionAnswering, pipeline
import torch
BERT_DIR = "savasy/bert-base-turkish-squad"
tokenizer = AutoTokenizer.from_pretrained(BERT_DIR)
model = AutoModelForQuestionAnswering.from_pretrained(BERT_DIR)
nlp=pipeline("question-answering", model=model, tokenizer=tokenizer)
def infer(question,corpus):
try:
ans = nlp(question=question, context=corpus)
return ans["answer"], ans["score"]
except:
ans = None
pass
return None, 0发布于 2020-09-18 13:30:28
该问题已经解决了在装载管道中包含设备参数:
nlp = pipeline("question-answering", model=BERT_DIR, device=0)发布于 2020-09-16 09:56:05
为了使模型在GPU上工作,必须将数据和模型加载到GPU:
您可以这样做:
from transformers import AutoTokenizer, AutoModelForQuestionAnswering, pipeline
import torch
BERT_DIR = "savasy/bert-base-turkish-squad"
device = torch.device("cuda")
tokenizer = AutoTokenizer.from_pretrained(BERT_DIR)
model = AutoModelForQuestionAnswering.from_pretrained(BERT_DIR)
model.to(device) ## model to GPU
nlp=pipeline("question-answering", model=model, tokenizer=tokenizer)
def infer(question,corpus):
try:
ans = nlp(question=question.to(device), context=corpus.to(device)) ## data to GPU
return ans["answer"], ans["score"]
except:
ans = None
pass
return None, 0https://stackoverflow.com/questions/63899303
复制相似问题