RuntimeError: CUDA error: CUBLAS_STATUS_ALLOC_FAILED when calling `cublasCreate(handle)
时间: 2023-10-11 08:08:09 浏览: 112
引用和引用[2]中提到的错误信息 "RuntimeError: CUDA error: CUBLAS_STATUS_ALLOC_FAILED when calling `cublasCreate(handle)`" 表明在调用CUDA相关函数时出现了内存分配失败的错误。这可能是由于所用的显卡内存不足或者显存分配错误导致的。
为了解决这个问题,可以尝试以下方法:
1. 将所设的batch_size改小一点。减小batch_size可以减少显存的消耗,从而在显存有限的情况下减少内存分配失败的可能性。
2. 检查显卡的可用内存。确保显卡的内存足够大以容纳模型和数据的加载。
3. 确保使用的CUDA版本与所使用的深度学习框架和包兼容。某些版本的CUDA与特定版本的深度学习框架和包不兼容,可能导致错误的出现。
4. 如果问题仍然存在,可以尝试使用更高配置的显卡或者使用云端GPU来运行代码。
相关问题
预测时遇到RuntimeError: CUDA error: CUBLAS_STATUS_ALLOC_FAILED when calling `cublasCreate(handle)`
当预测时遇到`RuntimeError: CUDA error: CUBLAS_STATUS_ALLOC_FAILED when calling 'cublasCreate(handle)'`错误时,这通常是由于GPU内存不足导致的。可以尝试以下几种方法来解决这个问题:
1. 减少batch size或者输入图像的分辨率,以减少GPU内存的使用。
2. 禁用梯度计算,以减少GPU内存的使用。可以在代码中添加以下语句来禁用梯度计算:
```python
with torch.no_grad():
# your prediction code here
```
3. 如果你的GPU内存足够大,可以尝试使用`CUDA_LAUNCH_BLOCKING=1`命令来输出底层问题。具体来说,可以使用以下命令格式来运行你的代码:
```bash
CUDA_LAUNCH_BLOCKING=1 python [你的命令参数]
```
例如:
```bash
CUDA_LAUNCH_BLOCKING=1 python predict.py --task davis
```
这将会输出更详细的错误信息,帮助你更好地定位问题。
RuntimeError: CUDA error: CUBLAS_STATUS_ALLOC_FAILED when calling `cublasCreate(handle)` NLLLoss
当你在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上运行。这样做可以解决报错问题,但是运行速度可能会较慢,耗费时间会比较长。