RuntimeError: CUDA error: CUBLAS_STATUS_ALLOC_FAILED when calling `cublasCreate(handle)` NLLLoss
时间: 2023-10-11 10:07:57 浏览: 177
当你在GPU上运行深度学习训练模型的程序时,报错"RuntimeError: CUDA error: CUBLAS_STATUS_ALLOC_FAILED when calling `cublasCreate(handle)`"通常表示CUDA内存不足。这个错误可能是由于你的数据集扩充导致的。
一种可能的解决方法是减少批处理大小(batch_size),以减少对CUDA内存的需求。但是你在尝试将batch_size减小到16、8、4和2后仍然无效。
另一个可能的原因是你在tokenizer中添加了新的special_token,但忘记了更新模型的tokenizer的词表大小。为了解决这个问题,你需要使用`resize_token_embeddings`方法来更新模型tokenizer的词表大小。具体操作如下:
```
from transformers import BertTokenizer, BertModel
tokenizer = BertTokenizer.from_pretrained('bert-base-cased')
# 添加特殊词
tokenizer.add_special_tokens({'additional_special_tokens':["<S>"})
model = BertModel.from_pretrained("bert-base-cased")
# 在模型中更新词表的大小!
# 重要!
model.resize_token_embeddings(len(tokenizer))
```
如果你不想继续在GPU上运行,你可以将程序改为在CPU上运行。这样做可以解决报错问题,但是运行速度可能会较慢,耗费时间会比较长。
阅读全文