[英]RuntimeError: CUDA error: device-side assert triggered - When calling a model for the second time
使用 PyTorch model 時出現以下錯誤:
/usr/local/lib/python3.7/dist-packages/torch/nn/functional.py in embedding(input, weight, padding_idx, max_norm, norm_type, scale_grad_by_freq, sparse)
2197 # remove once script supports set_grad_enabled
2198 _no_grad_embedding_renorm_(weight, input, max_norm, norm_type)
-> 2199 return torch.embedding(weight, input, padding_idx, scale_grad_by_freq, sparse)
2200
2201
RuntimeError: CUDA error: device-side assert triggered
該錯誤似乎僅在我第二次調用 model 我的代碼時發生:
epochs = 500
losses = []
model.to(device)
for e in range(epochs):
running_loss = 0
current_batch = 1
for x1, x2, y in data_loader:
print("x1 to device")
x3 = x1.to(device)
print("--- Computing embedding1 ---")
embedding1 = model(x3, pooling_method=pooling_method)
print(embedding1.size())
print("x2 to device")
x4 = x2.to(device)
print("--- Computing embedding2 ---")
embedding2 = model(x4, pooling_method=pooling_method)
print(embedding2.size())
output:
x1 to device
--- Computing embedding1 ---
torch.Size([64, 768])
x2 to device
--- Computing embedding2 ---
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
<ipython-input-29-6b36cff704b2> in <module>
21 x4 = x2.to(device)
22 print("--- Computing embedding2 ---")
---> 23 embedding2 = model(x4, pooling_method=pooling_method)
24 print(embedding2.size())
25
8 frames
/usr/local/lib/python3.7/dist-packages/torch/nn/functional.py in embedding(input, weight, padding_idx, max_norm, norm_type, scale_grad_by_freq, sparse)
2197 # remove once script supports set_grad_enabled
2198 _no_grad_embedding_renorm_(weight, input, max_norm, norm_type)
-> 2199 return torch.embedding(weight, input, padding_idx, scale_grad_by_freq, sparse)
2200
2201
RuntimeError: CUDA error: device-side assert triggered
輸入具有相同的形狀,因此問題不在於形狀。 該錯誤似乎發生在 model 計算 output 時,但只是第二次。
該設備是:
device(type='cuda', index=0)
如有必要,model 為:
class BERT(nn.Module):
"""
Torch model based on CamemBERT, in order to make sentence embeddings
"""
def __init__(self, tokenizer, model_name=model_name, output_size=100):
super().__init__()
self.bert = CamembertModel.from_pretrained(model_name)
self.bert.resize_token_embeddings(len(tokenizer))
def forward(self, x, pooling_method='cls'):
hidden_states = self.bert(x).last_hidden_state
embedding = pooling(hidden_states, pooling_method=pooling_method)
return embedding
有誰知道如何解決這個問題?
以下兩個原因導致發生 CUDA 錯誤:
在此處查看解決方案-> https://builtin.com/software-engineering-perspectives/cuda-error-device-side-assert-triggered
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.